From e673339e4c1409a35197fd44a01eaa9caccefe27 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 24 Oct 2024 14:06:27 +0000 Subject: [PATCH 1/3] Release release-20241024140533 --- .openapi-generator/FILES | 6 + .openapi-generator/VERSION | 2 +- README.md | 8 +- docs/ArduinoCompressedv2.md | 15 + docs/ArduinoCredentialsv1.md | 12 + docs/ArduinoDashboardowner.md | 10 + docs/ArduinoDashboardshare.md | 10 + docs/ArduinoDashboardv2.md | 17 + docs/ArduinoDashboardv2template.md | 12 + docs/ArduinoDevicev2.md | 68 ++ docs/ArduinoDevicev2Cert.md | 16 + docs/ArduinoDevicev2EventProperties.md | 10 + docs/ArduinoDevicev2Otaupload.md | 12 + docs/ArduinoDevicev2Pass.md | 10 + docs/ArduinoDevicev2SimpleProperties.md | 11 + docs/ArduinoDevicev2StatusEvent.md | 21 + docs/ArduinoDevicev2StatusEvents.md | 10 + docs/ArduinoDevicev2Webhook.md | 11 + docs/ArduinoDevicev2properties.md | 12 + docs/ArduinoDevicev2propertyvalue.md | 10 + docs/ArduinoDevicev2propertyvalueValue.md | 11 + ...inoDevicev2propertyvalueValueStatistics.md | 18 + docs/ArduinoDevicev2propertyvalues.md | 12 + ...oDevicev2propertyvaluesLastEvaluatedKey.md | 11 + docs/ArduinoDevicev2templatedevice.md | 10 + docs/ArduinoLinkedvariable.md | 18 + docs/ArduinoLoradevicev1.md | 12 + docs/ArduinoLorafreqplansv1.md | 9 + docs/ArduinoLorafreqplanv1.md | 11 + docs/ArduinoProperty.md | 29 + docs/ArduinoPropertytype.md | 18 + docs/ArduinoSeriesBatch.md | 10 + docs/ArduinoSeriesBatchSampled.md | 10 + docs/ArduinoSeriesRawBatch.md | 10 + docs/ArduinoSeriesRawBatchLastvalue.md | 10 + docs/ArduinoSeriesRawLastValueResponse.md | 13 + docs/ArduinoSeriesRawResponse.md | 35 + docs/ArduinoSeriesResponse.md | 59 ++ docs/ArduinoSeriesSampledResponse.md | 23 + docs/ArduinoTags.md | 9 + docs/ArduinoTemplate.md | 11 + docs/ArduinoTemplateproperty.md | 15 + docs/ArduinoTemplatevariable.md | 14 + docs/ArduinoThing.md | 41 ++ docs/ArduinoThingresult.md | 11 + docs/ArduinoThingtemplate.md | 17 + docs/ArduinoTimeseriesmedia.md | 9 + docs/ArduinoTimezone.md | 11 + docs/ArduinoVariableslinks.md | 9 + docs/ArduinoWidgetv2.md | 24 + docs/ArduinoWidgetv2template.md | 20 + docs/BatchLastValueRequestsMediaV1.md | 9 + docs/BatchQueryRawLastValueRequestMediaV1.md | 10 + docs/BatchQueryRawRequestMediaV1.md | 24 + docs/BatchQueryRawRequestsMediaV1.md | 10 + docs/BatchQueryRawResponseSeriesMediaV1.md | 9 + docs/BatchQueryRequestMediaV1.md | 49 ++ docs/BatchQueryRequestsMediaV1.md | 10 + docs/BatchQuerySampledRequestMediaV1.md | 13 + docs/BatchQuerySampledRequestsMediaV1.md | 10 + docs/CheckDevicesV2PassPayload.md | 9 + docs/Clone.md | 9 + docs/CreateDevicesV2CertsPayload.md | 11 + docs/CreateDevicesV2Payload.md | 79 +++ docs/CreateLoraDevicesV1Payload.md | 59 ++ docs/DashboardsV2Api.md | 660 ++++++++++++++++++ docs/Dashboardshare.md | 10 + docs/Dashboardv2.md | 11 + docs/DevicesV2Api.md | 562 +++++++++++++++ docs/DevicesV2CertsApi.md | 263 +++++++ docs/DevicesV2OtaApi.md | 167 +++++ docs/DevicesV2PassApi.md | 212 ++++++ docs/DevicesV2TagsApi.md | 159 +++++ docs/Devicev2.md | 79 +++ docs/Devicev2Cert.md | 11 + docs/Devicev2Otabinaryurl.md | 11 + docs/Devicev2Otaurlpyalod.md | 11 + docs/Devicev2Pass.md | 9 + docs/Error.md | 13 + docs/HistoricDataRequest.md | 11 + docs/LoraDevicesV1Api.md | 57 ++ docs/LoraFreqPlanV1Api.md | 49 ++ docs/NetworkCredentialsV1Api.md | 102 +++ docs/Override.md | 10 + docs/PropertiesV2Api.md | 411 +++++++++++ docs/PropertiesValue.md | 26 + docs/PropertiesValues.md | 10 + docs/Property.md | 311 +++++++++ docs/PropertyTypesV1Api.md | 53 ++ docs/PropertyValue.md | 10 + docs/SeriesV2Api.md | 273 ++++++++ docs/Sharerequest.md | 9 + docs/Tag.md | 10 + docs/Template.md | 12 + docs/TemplatesApi.md | 57 ++ docs/ThingClone.md | 10 + docs/ThingCreate.md | 30 + docs/ThingSketch.md | 20 + docs/ThingUpdate.md | 29 + docs/ThingsV2Api.md | 564 +++++++++++++++ docs/ThingsV2TagsApi.md | 159 +++++ docs/TimeseriesDataPoint.md | 10 + docs/UpdateSketch.md | 20 + docs/Widget.md | 21 + docs/Widgetlink.md | 9 + img/selection_1.png | Bin 93617 -> 9330 bytes img/selection_2.png | Bin 75926 -> 92157 bytes img/selection_3.png | Bin 105944 -> 154940 bytes package.json | 4 +- src/ApiClient.js | 14 +- src/api/DashboardsV2Api.js | 28 +- src/api/DevicesV2Api.js | 24 +- src/api/DevicesV2CertsApi.js | 14 +- src/api/DevicesV2OtaApi.js | 10 +- src/api/DevicesV2PassApi.js | 12 +- src/api/DevicesV2TagsApi.js | 10 +- src/api/LoraDevicesV1Api.js | 6 +- src/api/LoraFreqPlanV1Api.js | 6 +- src/api/NetworkCredentialsV1Api.js | 13 +- src/api/PropertiesV2Api.js | 18 +- src/api/PropertyTypesV1Api.js | 80 +++ src/api/SeriesV2Api.js | 14 +- src/api/TemplatesApi.js | 6 +- src/api/ThingsV2Api.js | 24 +- src/api/ThingsV2TagsApi.js | 10 +- src/index.js | 20 +- src/model/ArduinoCompressedv2.js | 6 +- src/model/ArduinoCredentialsv1.js | 6 +- src/model/ArduinoDashboardowner.js | 6 +- src/model/ArduinoDashboardshare.js | 6 +- src/model/ArduinoDashboardv2.js | 6 +- src/model/ArduinoDashboardv2template.js | 6 +- src/model/ArduinoDevicev2.js | 6 +- src/model/ArduinoDevicev2Cert.js | 6 +- src/model/ArduinoDevicev2EventProperties.js | 6 +- src/model/ArduinoDevicev2Otaupload.js | 6 +- src/model/ArduinoDevicev2Pass.js | 6 +- src/model/ArduinoDevicev2SimpleProperties.js | 6 +- src/model/ArduinoDevicev2StatusEvent.js | 6 +- src/model/ArduinoDevicev2StatusEvents.js | 6 +- src/model/ArduinoDevicev2Webhook.js | 7 +- src/model/ArduinoDevicev2properties.js | 6 +- src/model/ArduinoDevicev2propertyvalue.js | 4 +- .../ArduinoDevicev2propertyvalueValue.js | 4 +- ...inoDevicev2propertyvalueValueStatistics.js | 4 +- src/model/ArduinoDevicev2propertyvalues.js | 6 +- ...oDevicev2propertyvaluesLastEvaluatedKey.js | 4 +- src/model/ArduinoDevicev2templatedevice.js | 4 +- src/model/ArduinoLinkedvariable.js | 6 +- src/model/ArduinoLoradevicev1.js | 6 +- src/model/ArduinoLorafreqplansv1.js | 4 +- src/model/ArduinoLorafreqplanv1.js | 6 +- src/model/ArduinoProperty.js | 6 +- src/model/ArduinoPropertytype.js | 214 ++++++ src/model/ArduinoSeriesBatch.js | 6 +- src/model/ArduinoSeriesBatchSampled.js | 6 +- src/model/ArduinoSeriesRawBatch.js | 6 +- src/model/ArduinoSeriesRawBatchLastvalue.js | 6 +- .../ArduinoSeriesRawLastValueResponse.js | 6 +- src/model/ArduinoSeriesRawResponse.js | 59 +- src/model/ArduinoSeriesResponse.js | 59 +- src/model/ArduinoSeriesSampledResponse.js | 59 +- src/model/ArduinoTags.js | 6 +- src/model/ArduinoTemplate.js | 6 +- src/model/ArduinoTemplateproperty.js | 6 +- src/model/ArduinoTemplatevariable.js | 6 +- src/model/ArduinoThing.js | 6 +- src/model/ArduinoThingresult.js | 6 +- src/model/ArduinoThingtemplate.js | 6 +- src/model/ArduinoTimeseriesmedia.js | 6 +- src/model/ArduinoTimezone.js | 6 +- src/model/ArduinoVariableslinks.js | 6 +- src/model/ArduinoWidgetv2.js | 6 +- src/model/ArduinoWidgetv2template.js | 6 +- src/model/BatchLastValueRequestsMediaV1.js | 6 +- .../BatchQueryRawLastValueRequestMediaV1.js | 6 +- src/model/BatchQueryRawRequestMediaV1.js | 13 +- src/model/BatchQueryRawRequestsMediaV1.js | 6 +- .../BatchQueryRawResponseSeriesMediaV1.js | 6 +- src/model/BatchQueryRequestMediaV1.js | 12 +- src/model/BatchQueryRequestsMediaV1.js | 6 +- src/model/BatchQuerySampledRequestMediaV1.js | 7 +- src/model/BatchQuerySampledRequestsMediaV1.js | 6 +- src/model/CheckDevicesV2PassPayload.js | 6 +- src/model/Clone.js | 4 +- src/model/CreateDevicesV2CertsPayload.js | 6 +- src/model/CreateDevicesV2Payload.js | 24 +- src/model/CreateLoraDevicesV1Payload.js | 6 +- src/model/Dashboardshare.js | 4 +- src/model/Dashboardv2.js | 4 +- src/model/Devicev2.js | 22 +- src/model/Devicev2Cert.js | 4 +- src/model/Devicev2Otabinaryurl.js | 8 +- src/model/Devicev2Otaurlpyalod.js | 4 +- src/model/Devicev2Pass.js | 4 +- src/model/Error.js | 4 +- src/model/HistoricDataRequest.js | 6 +- src/model/Override.js | 6 +- src/model/PropertiesValue.js | 6 +- src/model/PropertiesValues.js | 7 +- src/model/Property.js | 7 +- src/model/PropertyValue.js | 6 +- src/model/Sharerequest.js | 4 +- src/model/Tag.js | 6 +- src/model/Template.js | 6 +- src/model/ThingClone.js | 6 +- src/model/ThingCreate.js | 5 +- src/model/ThingSketch.js | 4 +- src/model/ThingUpdate.js | 4 +- src/model/TimeseriesDataPoint.js | 6 +- src/model/UpdateSketch.js | 4 +- src/model/Widget.js | 6 +- src/model/Widgetlink.js | 4 +- test/api/DashboardsV2Api.spec.js | 173 +++++ test/api/DevicesV2Api.spec.js | 153 ++++ test/api/DevicesV2CertsApi.spec.js | 103 +++ test/api/DevicesV2OtaApi.spec.js | 83 +++ test/api/DevicesV2PassApi.spec.js | 93 +++ test/api/DevicesV2TagsApi.spec.js | 83 +++ test/api/LoraDevicesV1Api.spec.js | 63 ++ test/api/LoraFreqPlanV1Api.spec.js | 63 ++ test/api/NetworkCredentialsV1Api.spec.js | 73 ++ test/api/PropertiesV2Api.spec.js | 123 ++++ test/api/PropertyTypesV1Api.spec.js | 63 ++ test/api/SeriesV2Api.spec.js | 103 +++ test/api/TemplatesApi.spec.js | 63 ++ test/api/ThingsV2Api.spec.js | 153 ++++ test/api/ThingsV2TagsApi.spec.js | 83 +++ test/model/ArduinoCompressedv2.spec.js | 101 +++ test/model/ArduinoCredentialsv1.spec.js | 83 +++ test/model/ArduinoDashboardowner.spec.js | 71 ++ test/model/ArduinoDashboardshare.spec.js | 71 ++ test/model/ArduinoDashboardv2.spec.js | 113 +++ test/model/ArduinoDashboardv2template.spec.js | 83 +++ test/model/ArduinoDevicev2.spec.js | 203 ++++++ test/model/ArduinoDevicev2Cert.spec.js | 107 +++ .../ArduinoDevicev2EventProperties.spec.js | 71 ++ test/model/ArduinoDevicev2Otaupload.spec.js | 83 +++ test/model/ArduinoDevicev2Pass.spec.js | 71 ++ .../ArduinoDevicev2SimpleProperties.spec.js | 77 ++ test/model/ArduinoDevicev2StatusEvent.spec.js | 71 ++ .../model/ArduinoDevicev2StatusEvents.spec.js | 71 ++ test/model/ArduinoDevicev2Webhook.spec.js | 77 ++ test/model/ArduinoDevicev2properties.spec.js | 83 +++ .../ArduinoDevicev2propertyvalue.spec.js | 71 ++ .../ArduinoDevicev2propertyvalueValue.spec.js | 77 ++ ...vicev2propertyvalueValueStatistics.spec.js | 119 ++++ .../ArduinoDevicev2propertyvalues.spec.js | 83 +++ ...cev2propertyvaluesLastEvaluatedKey.spec.js | 77 ++ .../ArduinoDevicev2templatedevice.spec.js | 71 ++ test/model/ArduinoLinkedvariable.spec.js | 119 ++++ test/model/ArduinoLoradevicev1.spec.js | 83 +++ test/model/ArduinoLorafreqplansv1.spec.js | 65 ++ test/model/ArduinoLorafreqplanv1.spec.js | 77 ++ test/model/ArduinoProperty.spec.js | 185 +++++ test/model/ArduinoPropertytype.spec.js | 119 ++++ test/model/ArduinoSeriesBatch.spec.js | 71 ++ test/model/ArduinoSeriesBatchSampled.spec.js | 71 ++ test/model/ArduinoSeriesRawBatch.spec.js | 71 ++ .../ArduinoSeriesRawBatchLastvalue.spec.js | 71 ++ .../ArduinoSeriesRawLastValueResponse.spec.js | 89 +++ test/model/ArduinoSeriesRawResponse.spec.js | 155 ++++ test/model/ArduinoSeriesResponse.spec.js | 155 ++++ .../ArduinoSeriesSampledResponse.spec.js | 149 ++++ test/model/ArduinoTags.spec.js | 65 ++ test/model/ArduinoTemplate.spec.js | 77 ++ test/model/ArduinoTemplateproperty.spec.js | 101 +++ test/model/ArduinoTemplatevariable.spec.js | 95 +++ test/model/ArduinoThing.spec.js | 179 +++++ test/model/ArduinoThingresult.spec.js | 77 ++ test/model/ArduinoThingtemplate.spec.js | 113 +++ test/model/ArduinoTimeseriesmedia.spec.js | 65 ++ test/model/ArduinoTimezone.spec.js | 77 ++ test/model/ArduinoVariableslinks.spec.js | 65 ++ test/model/ArduinoWidgetv2.spec.js | 155 ++++ test/model/ArduinoWidgetv2template.spec.js | 131 ++++ .../BatchLastValueRequestsMediaV1.spec.js | 65 ++ ...tchQueryRawLastValueRequestMediaV1.spec.js | 71 ++ .../model/BatchQueryRawRequestMediaV1.spec.js | 89 +++ .../BatchQueryRawRequestsMediaV1.spec.js | 71 ++ ...BatchQueryRawResponseSeriesMediaV1.spec.js | 65 ++ test/model/BatchQueryRequestMediaV1.spec.js | 95 +++ test/model/BatchQueryRequestsMediaV1.spec.js | 71 ++ .../BatchQuerySampledRequestMediaV1.spec.js | 89 +++ .../BatchQuerySampledRequestsMediaV1.spec.js | 71 ++ test/model/CheckDevicesV2PassPayload.spec.js | 65 ++ test/model/Clone.spec.js | 65 ++ .../model/CreateDevicesV2CertsPayload.spec.js | 77 ++ test/model/CreateDevicesV2Payload.spec.js | 101 +++ test/model/CreateLoraDevicesV1Payload.spec.js | 113 +++ test/model/Dashboardshare.spec.js | 71 ++ test/model/Dashboardv2.spec.js | 77 ++ test/model/Devicev2.spec.js | 101 +++ test/model/Devicev2Cert.spec.js | 77 ++ test/model/Devicev2Otabinaryurl.spec.js | 77 ++ test/model/Devicev2Otaurlpyalod.spec.js | 77 ++ test/model/Devicev2Pass.spec.js | 65 ++ test/model/Error.spec.js | 89 +++ test/model/HistoricDataRequest.spec.js | 77 ++ test/model/Override.spec.js | 71 ++ test/model/PropertiesValue.spec.js | 77 ++ test/model/PropertiesValues.spec.js | 71 ++ test/model/Property.spec.js | 119 ++++ test/model/PropertyValue.spec.js | 71 ++ test/model/Sharerequest.spec.js | 65 ++ test/model/Tag.spec.js | 71 ++ test/model/Template.spec.js | 83 +++ test/model/ThingClone.spec.js | 71 ++ test/model/ThingCreate.spec.js | 113 +++ test/model/ThingSketch.spec.js | 65 ++ test/model/ThingUpdate.spec.js | 107 +++ test/model/TimeseriesDataPoint.spec.js | 71 ++ test/model/UpdateSketch.spec.js | 65 ++ test/model/Widget.spec.js | 137 ++++ test/model/Widgetlink.spec.js | 65 ++ 315 files changed, 15632 insertions(+), 391 deletions(-) create mode 100644 docs/ArduinoCompressedv2.md create mode 100644 docs/ArduinoCredentialsv1.md create mode 100644 docs/ArduinoDashboardowner.md create mode 100644 docs/ArduinoDashboardshare.md create mode 100644 docs/ArduinoDashboardv2.md create mode 100644 docs/ArduinoDashboardv2template.md create mode 100644 docs/ArduinoDevicev2.md create mode 100644 docs/ArduinoDevicev2Cert.md create mode 100644 docs/ArduinoDevicev2EventProperties.md create mode 100644 docs/ArduinoDevicev2Otaupload.md create mode 100644 docs/ArduinoDevicev2Pass.md create mode 100644 docs/ArduinoDevicev2SimpleProperties.md create mode 100644 docs/ArduinoDevicev2StatusEvent.md create mode 100644 docs/ArduinoDevicev2StatusEvents.md create mode 100644 docs/ArduinoDevicev2Webhook.md create mode 100644 docs/ArduinoDevicev2properties.md create mode 100644 docs/ArduinoDevicev2propertyvalue.md create mode 100644 docs/ArduinoDevicev2propertyvalueValue.md create mode 100644 docs/ArduinoDevicev2propertyvalueValueStatistics.md create mode 100644 docs/ArduinoDevicev2propertyvalues.md create mode 100644 docs/ArduinoDevicev2propertyvaluesLastEvaluatedKey.md create mode 100644 docs/ArduinoDevicev2templatedevice.md create mode 100644 docs/ArduinoLinkedvariable.md create mode 100644 docs/ArduinoLoradevicev1.md create mode 100644 docs/ArduinoLorafreqplansv1.md create mode 100644 docs/ArduinoLorafreqplanv1.md create mode 100644 docs/ArduinoProperty.md create mode 100644 docs/ArduinoPropertytype.md create mode 100644 docs/ArduinoSeriesBatch.md create mode 100644 docs/ArduinoSeriesBatchSampled.md create mode 100644 docs/ArduinoSeriesRawBatch.md create mode 100644 docs/ArduinoSeriesRawBatchLastvalue.md create mode 100644 docs/ArduinoSeriesRawLastValueResponse.md create mode 100644 docs/ArduinoSeriesRawResponse.md create mode 100644 docs/ArduinoSeriesResponse.md create mode 100644 docs/ArduinoSeriesSampledResponse.md create mode 100644 docs/ArduinoTags.md create mode 100644 docs/ArduinoTemplate.md create mode 100644 docs/ArduinoTemplateproperty.md create mode 100644 docs/ArduinoTemplatevariable.md create mode 100644 docs/ArduinoThing.md create mode 100644 docs/ArduinoThingresult.md create mode 100644 docs/ArduinoThingtemplate.md create mode 100644 docs/ArduinoTimeseriesmedia.md create mode 100644 docs/ArduinoTimezone.md create mode 100644 docs/ArduinoVariableslinks.md create mode 100644 docs/ArduinoWidgetv2.md create mode 100644 docs/ArduinoWidgetv2template.md create mode 100644 docs/BatchLastValueRequestsMediaV1.md create mode 100644 docs/BatchQueryRawLastValueRequestMediaV1.md create mode 100644 docs/BatchQueryRawRequestMediaV1.md create mode 100644 docs/BatchQueryRawRequestsMediaV1.md create mode 100644 docs/BatchQueryRawResponseSeriesMediaV1.md create mode 100644 docs/BatchQueryRequestMediaV1.md create mode 100644 docs/BatchQueryRequestsMediaV1.md create mode 100644 docs/BatchQuerySampledRequestMediaV1.md create mode 100644 docs/BatchQuerySampledRequestsMediaV1.md create mode 100644 docs/CheckDevicesV2PassPayload.md create mode 100644 docs/Clone.md create mode 100644 docs/CreateDevicesV2CertsPayload.md create mode 100644 docs/CreateDevicesV2Payload.md create mode 100644 docs/CreateLoraDevicesV1Payload.md create mode 100644 docs/DashboardsV2Api.md create mode 100644 docs/Dashboardshare.md create mode 100644 docs/Dashboardv2.md create mode 100644 docs/DevicesV2Api.md create mode 100644 docs/DevicesV2CertsApi.md create mode 100644 docs/DevicesV2OtaApi.md create mode 100644 docs/DevicesV2PassApi.md create mode 100644 docs/DevicesV2TagsApi.md create mode 100644 docs/Devicev2.md create mode 100644 docs/Devicev2Cert.md create mode 100644 docs/Devicev2Otabinaryurl.md create mode 100644 docs/Devicev2Otaurlpyalod.md create mode 100644 docs/Devicev2Pass.md create mode 100644 docs/Error.md create mode 100644 docs/HistoricDataRequest.md create mode 100644 docs/LoraDevicesV1Api.md create mode 100644 docs/LoraFreqPlanV1Api.md create mode 100644 docs/NetworkCredentialsV1Api.md create mode 100644 docs/Override.md create mode 100644 docs/PropertiesV2Api.md create mode 100644 docs/PropertiesValue.md create mode 100644 docs/PropertiesValues.md create mode 100644 docs/Property.md create mode 100644 docs/PropertyTypesV1Api.md create mode 100644 docs/PropertyValue.md create mode 100644 docs/SeriesV2Api.md create mode 100644 docs/Sharerequest.md create mode 100644 docs/Tag.md create mode 100644 docs/Template.md create mode 100644 docs/TemplatesApi.md create mode 100644 docs/ThingClone.md create mode 100644 docs/ThingCreate.md create mode 100644 docs/ThingSketch.md create mode 100644 docs/ThingUpdate.md create mode 100644 docs/ThingsV2Api.md create mode 100644 docs/ThingsV2TagsApi.md create mode 100644 docs/TimeseriesDataPoint.md create mode 100644 docs/UpdateSketch.md create mode 100644 docs/Widget.md create mode 100644 docs/Widgetlink.md create mode 100644 src/api/PropertyTypesV1Api.js create mode 100644 src/model/ArduinoPropertytype.js create mode 100644 test/api/DashboardsV2Api.spec.js create mode 100644 test/api/DevicesV2Api.spec.js create mode 100644 test/api/DevicesV2CertsApi.spec.js create mode 100644 test/api/DevicesV2OtaApi.spec.js create mode 100644 test/api/DevicesV2PassApi.spec.js create mode 100644 test/api/DevicesV2TagsApi.spec.js create mode 100644 test/api/LoraDevicesV1Api.spec.js create mode 100644 test/api/LoraFreqPlanV1Api.spec.js create mode 100644 test/api/NetworkCredentialsV1Api.spec.js create mode 100644 test/api/PropertiesV2Api.spec.js create mode 100644 test/api/PropertyTypesV1Api.spec.js create mode 100644 test/api/SeriesV2Api.spec.js create mode 100644 test/api/TemplatesApi.spec.js create mode 100644 test/api/ThingsV2Api.spec.js create mode 100644 test/api/ThingsV2TagsApi.spec.js create mode 100644 test/model/ArduinoCompressedv2.spec.js create mode 100644 test/model/ArduinoCredentialsv1.spec.js create mode 100644 test/model/ArduinoDashboardowner.spec.js create mode 100644 test/model/ArduinoDashboardshare.spec.js create mode 100644 test/model/ArduinoDashboardv2.spec.js create mode 100644 test/model/ArduinoDashboardv2template.spec.js create mode 100644 test/model/ArduinoDevicev2.spec.js create mode 100644 test/model/ArduinoDevicev2Cert.spec.js create mode 100644 test/model/ArduinoDevicev2EventProperties.spec.js create mode 100644 test/model/ArduinoDevicev2Otaupload.spec.js create mode 100644 test/model/ArduinoDevicev2Pass.spec.js create mode 100644 test/model/ArduinoDevicev2SimpleProperties.spec.js create mode 100644 test/model/ArduinoDevicev2StatusEvent.spec.js create mode 100644 test/model/ArduinoDevicev2StatusEvents.spec.js create mode 100644 test/model/ArduinoDevicev2Webhook.spec.js create mode 100644 test/model/ArduinoDevicev2properties.spec.js create mode 100644 test/model/ArduinoDevicev2propertyvalue.spec.js create mode 100644 test/model/ArduinoDevicev2propertyvalueValue.spec.js create mode 100644 test/model/ArduinoDevicev2propertyvalueValueStatistics.spec.js create mode 100644 test/model/ArduinoDevicev2propertyvalues.spec.js create mode 100644 test/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.spec.js create mode 100644 test/model/ArduinoDevicev2templatedevice.spec.js create mode 100644 test/model/ArduinoLinkedvariable.spec.js create mode 100644 test/model/ArduinoLoradevicev1.spec.js create mode 100644 test/model/ArduinoLorafreqplansv1.spec.js create mode 100644 test/model/ArduinoLorafreqplanv1.spec.js create mode 100644 test/model/ArduinoProperty.spec.js create mode 100644 test/model/ArduinoPropertytype.spec.js create mode 100644 test/model/ArduinoSeriesBatch.spec.js create mode 100644 test/model/ArduinoSeriesBatchSampled.spec.js create mode 100644 test/model/ArduinoSeriesRawBatch.spec.js create mode 100644 test/model/ArduinoSeriesRawBatchLastvalue.spec.js create mode 100644 test/model/ArduinoSeriesRawLastValueResponse.spec.js create mode 100644 test/model/ArduinoSeriesRawResponse.spec.js create mode 100644 test/model/ArduinoSeriesResponse.spec.js create mode 100644 test/model/ArduinoSeriesSampledResponse.spec.js create mode 100644 test/model/ArduinoTags.spec.js create mode 100644 test/model/ArduinoTemplate.spec.js create mode 100644 test/model/ArduinoTemplateproperty.spec.js create mode 100644 test/model/ArduinoTemplatevariable.spec.js create mode 100644 test/model/ArduinoThing.spec.js create mode 100644 test/model/ArduinoThingresult.spec.js create mode 100644 test/model/ArduinoThingtemplate.spec.js create mode 100644 test/model/ArduinoTimeseriesmedia.spec.js create mode 100644 test/model/ArduinoTimezone.spec.js create mode 100644 test/model/ArduinoVariableslinks.spec.js create mode 100644 test/model/ArduinoWidgetv2.spec.js create mode 100644 test/model/ArduinoWidgetv2template.spec.js create mode 100644 test/model/BatchLastValueRequestsMediaV1.spec.js create mode 100644 test/model/BatchQueryRawLastValueRequestMediaV1.spec.js create mode 100644 test/model/BatchQueryRawRequestMediaV1.spec.js create mode 100644 test/model/BatchQueryRawRequestsMediaV1.spec.js create mode 100644 test/model/BatchQueryRawResponseSeriesMediaV1.spec.js create mode 100644 test/model/BatchQueryRequestMediaV1.spec.js create mode 100644 test/model/BatchQueryRequestsMediaV1.spec.js create mode 100644 test/model/BatchQuerySampledRequestMediaV1.spec.js create mode 100644 test/model/BatchQuerySampledRequestsMediaV1.spec.js create mode 100644 test/model/CheckDevicesV2PassPayload.spec.js create mode 100644 test/model/Clone.spec.js create mode 100644 test/model/CreateDevicesV2CertsPayload.spec.js create mode 100644 test/model/CreateDevicesV2Payload.spec.js create mode 100644 test/model/CreateLoraDevicesV1Payload.spec.js create mode 100644 test/model/Dashboardshare.spec.js create mode 100644 test/model/Dashboardv2.spec.js create mode 100644 test/model/Devicev2.spec.js create mode 100644 test/model/Devicev2Cert.spec.js create mode 100644 test/model/Devicev2Otabinaryurl.spec.js create mode 100644 test/model/Devicev2Otaurlpyalod.spec.js create mode 100644 test/model/Devicev2Pass.spec.js create mode 100644 test/model/Error.spec.js create mode 100644 test/model/HistoricDataRequest.spec.js create mode 100644 test/model/Override.spec.js create mode 100644 test/model/PropertiesValue.spec.js create mode 100644 test/model/PropertiesValues.spec.js create mode 100644 test/model/Property.spec.js create mode 100644 test/model/PropertyValue.spec.js create mode 100644 test/model/Sharerequest.spec.js create mode 100644 test/model/Tag.spec.js create mode 100644 test/model/Template.spec.js create mode 100644 test/model/ThingClone.spec.js create mode 100644 test/model/ThingCreate.spec.js create mode 100644 test/model/ThingSketch.spec.js create mode 100644 test/model/ThingUpdate.spec.js create mode 100644 test/model/TimeseriesDataPoint.spec.js create mode 100644 test/model/UpdateSketch.spec.js create mode 100644 test/model/Widget.spec.js create mode 100644 test/model/Widgetlink.spec.js diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index d9cc3ca..d92937f 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -29,6 +29,7 @@ docs/ArduinoLoradevicev1.md docs/ArduinoLorafreqplansv1.md docs/ArduinoLorafreqplanv1.md docs/ArduinoProperty.md +docs/ArduinoPropertytype.md docs/ArduinoSeriesBatch.md docs/ArduinoSeriesBatchSampled.md docs/ArduinoSeriesRawBatch.md @@ -86,6 +87,7 @@ docs/PropertiesV2Api.md docs/PropertiesValue.md docs/PropertiesValues.md docs/Property.md +docs/PropertyTypesV1Api.md docs/PropertyValue.md docs/SeriesV2Api.md docs/Sharerequest.md @@ -116,6 +118,7 @@ src/api/LoraDevicesV1Api.js src/api/LoraFreqPlanV1Api.js src/api/NetworkCredentialsV1Api.js src/api/PropertiesV2Api.js +src/api/PropertyTypesV1Api.js src/api/SeriesV2Api.js src/api/TemplatesApi.js src/api/ThingsV2Api.js @@ -148,6 +151,7 @@ src/model/ArduinoLoradevicev1.js src/model/ArduinoLorafreqplansv1.js src/model/ArduinoLorafreqplanv1.js src/model/ArduinoProperty.js +src/model/ArduinoPropertytype.js src/model/ArduinoSeriesBatch.js src/model/ArduinoSeriesBatchSampled.js src/model/ArduinoSeriesRawBatch.js @@ -217,6 +221,7 @@ test/api/LoraDevicesV1Api.spec.js test/api/LoraFreqPlanV1Api.spec.js test/api/NetworkCredentialsV1Api.spec.js test/api/PropertiesV2Api.spec.js +test/api/PropertyTypesV1Api.spec.js test/api/SeriesV2Api.spec.js test/api/TemplatesApi.spec.js test/api/ThingsV2Api.spec.js @@ -248,6 +253,7 @@ test/model/ArduinoLoradevicev1.spec.js test/model/ArduinoLorafreqplansv1.spec.js test/model/ArduinoLorafreqplanv1.spec.js test/model/ArduinoProperty.spec.js +test/model/ArduinoPropertytype.spec.js test/model/ArduinoSeriesBatch.spec.js test/model/ArduinoSeriesBatchSampled.spec.js test/model/ArduinoSeriesRawBatch.spec.js diff --git a/.openapi-generator/VERSION b/.openapi-generator/VERSION index c0be8a7..4bc5d61 100644 --- a/.openapi-generator/VERSION +++ b/.openapi-generator/VERSION @@ -1 +1 @@ -6.4.0 \ No newline at end of file +7.9.0 diff --git a/README.md b/README.md index 4c451cb..62f9886 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,12 @@ var client = ArduinoIotClient.ApiClient.instance; var oauth2 = client.authentications['oauth2']; oauth2.accessToken = await getToken(); -var api = new ArduinoIotClient.DevicesV2Api(client) +var api = new ArduinoIotClient.DevicesV2Api(client) +/* if required, organization_id can be configured as follow and the, pass opts var to function. +let opts = { + 'xOrganization': "" +}; +*/ api.devicesV2List().then(devices => { console.log(devices); }, error => { @@ -77,6 +82,7 @@ var options = { client_id: 'YOUR_CLIENT_ID', client_secret: 'YOUR_CLIENT_SECRET', audience: 'https://api2.arduino.cc/iot' + // If required, specify organization identifier adding "organization_id: ''" in form. } }; diff --git a/docs/ArduinoCompressedv2.md b/docs/ArduinoCompressedv2.md new file mode 100644 index 0000000..f6df893 --- /dev/null +++ b/docs/ArduinoCompressedv2.md @@ -0,0 +1,15 @@ +# ArduinoIotClient.ArduinoCompressedv2 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**authorityKeyIdentifier** | **String** | The Authority Key Identifier of the certificate | [optional] +**notAfter** | **Date** | The ending date of the certificate | +**notBefore** | **Date** | The starting date of the certificate | +**serial** | **String** | The serial number of the certificate | +**signature** | **String** | The signature of the certificate | +**signatureAsn1X** | **String** | The ASN1 X component of certificate signature | +**signatureAsn1Y** | **String** | The ASN1 Y component of certificate signature | + + diff --git a/docs/ArduinoCredentialsv1.md b/docs/ArduinoCredentialsv1.md new file mode 100644 index 0000000..59fb82f --- /dev/null +++ b/docs/ArduinoCredentialsv1.md @@ -0,0 +1,12 @@ +# ArduinoIotClient.ArduinoCredentialsv1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**friendlyName** | **String** | Friendly name | +**required** | **Boolean** | Tell if the parameter is required or not | +**secretName** | **String** | The secret parameter name | +**sensitive** | **Boolean** | Tell if the field is sensitive | + + diff --git a/docs/ArduinoDashboardowner.md b/docs/ArduinoDashboardowner.md new file mode 100644 index 0000000..064c25f --- /dev/null +++ b/docs/ArduinoDashboardowner.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoDashboardowner + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**userId** | **String** | The userID of the user who created the dashboard | +**username** | **String** | The username of the user who created the dashboard | [optional] + + diff --git a/docs/ArduinoDashboardshare.md b/docs/ArduinoDashboardshare.md new file mode 100644 index 0000000..656ec8d --- /dev/null +++ b/docs/ArduinoDashboardshare.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoDashboardshare + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**userId** | **String** | The userID of the user you want to share the dashboard with | +**username** | **String** | The username of the user you want to share the dashboard with | [optional] + + diff --git a/docs/ArduinoDashboardv2.md b/docs/ArduinoDashboardv2.md new file mode 100644 index 0000000..7955f51 --- /dev/null +++ b/docs/ArduinoDashboardv2.md @@ -0,0 +1,17 @@ +# ArduinoIotClient.ArduinoDashboardv2 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**coverImage** | **String** | The cover image of the dashboard | [optional] +**createdBy** | [**ArduinoDashboardowner**](ArduinoDashboardowner.md) | | [optional] +**id** | **String** | The friendly name of the dashboard | +**name** | **String** | The friendly name of the dashboard | +**organizationId** | **String** | Id of the organization the dashboard belongs to | [optional] +**sharedBy** | [**ArduinoDashboardshare**](ArduinoDashboardshare.md) | | [optional] +**sharedWith** | [**[ArduinoDashboardshare]**](ArduinoDashboardshare.md) | ArduinoDashboardshareCollection is the media type for an array of ArduinoDashboardshare (default view) | [optional] +**updatedAt** | **Date** | Last update date | +**widgets** | [**[ArduinoWidgetv2]**](ArduinoWidgetv2.md) | ArduinoWidgetv2Collection is the media type for an array of ArduinoWidgetv2 (default view) | [optional] + + diff --git a/docs/ArduinoDashboardv2template.md b/docs/ArduinoDashboardv2template.md new file mode 100644 index 0000000..e94834d --- /dev/null +++ b/docs/ArduinoDashboardv2template.md @@ -0,0 +1,12 @@ +# ArduinoIotClient.ArduinoDashboardv2template + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**coverImage** | **String** | The cover image of the dashboard | [optional] +**id** | **String** | The friendly ID of the dashboard | [optional] +**name** | **String** | The friendly name of the dashboard | +**widgets** | [**[ArduinoWidgetv2template]**](ArduinoWidgetv2template.md) | ArduinoWidgetv2templateCollection is the media type for an array of ArduinoWidgetv2template (default view) | [optional] + + diff --git a/docs/ArduinoDevicev2.md b/docs/ArduinoDevicev2.md new file mode 100644 index 0000000..6581feb --- /dev/null +++ b/docs/ArduinoDevicev2.md @@ -0,0 +1,68 @@ +# ArduinoIotClient.ArduinoDevicev2 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**connectionType** | **String** | The type of the connections selected by the user when multiple connections are available | [optional] +**createdAt** | **Date** | Creation date of the device | [optional] +**deviceStatus** | **String** | The connection status of the device | [optional] +**events** | [**[ArduinoDevicev2SimpleProperties]**](ArduinoDevicev2SimpleProperties.md) | ArduinoDevicev2SimplePropertiesCollection is the media type for an array of ArduinoDevicev2SimpleProperties (default view) | [optional] +**fqbn** | **String** | The fully qualified board name | [optional] +**href** | **String** | The api reference of this device | +**id** | **String** | The arn of the device | +**label** | **String** | The label of the device | +**lastActivityAt** | **Date** | Last activity date | [optional] +**latestWifiFwVersion** | **String** | The latest version of the NINA/WIFI101 firmware available for this device | [optional] +**metadata** | **{String: Object}** | The metadata of the device | [optional] +**name** | **String** | The friendly name of the device | +**noSketch** | **Boolean** | True if the device type can not have an associated sketch | [optional] +**organizationId** | **String** | Id of the organization the device belongs to | [optional] +**otaAvailable** | **Boolean** | True if the device type is ready to receive OTA updated | [optional] +**otaCompatible** | **Boolean** | True if the device type is OTA compatible | [optional] +**requiredWifiFwVersion** | **String** | The required version of the NINA/WIFI101 firmware needed by IoT Cloud | [optional] +**serial** | **String** | The serial uuid of the device | +**tags** | **{String: Object}** | Tags belonging to the device | [optional] +**thing** | [**ArduinoThing**](ArduinoThing.md) | | [optional] +**type** | **String** | The type of the device | +**userId** | **String** | The id of the user | +**webhooks** | [**[ArduinoDevicev2Webhook]**](ArduinoDevicev2Webhook.md) | ArduinoDevicev2WebhookCollection is the media type for an array of ArduinoDevicev2Webhook (default view) | [optional] +**wifiFwVersion** | **String** | The version of the NINA/WIFI101 firmware running on the device | [optional] + + + +## Enum: ConnectionTypeEnum + + +* `wifi` (value: `"wifi"`) + +* `eth` (value: `"eth"`) + +* `wifiandsecret` (value: `"wifiandsecret"`) + +* `gsm` (value: `"gsm"`) + +* `nb` (value: `"nb"`) + +* `lora` (value: `"lora"`) + +* `catm1` (value: `"catm1"`) + +* `cellular` (value: `"cellular"`) + + + + + +## Enum: DeviceStatusEnum + + +* `ONLINE` (value: `"ONLINE"`) + +* `OFFLINE` (value: `"OFFLINE"`) + +* `UNKNOWN` (value: `"UNKNOWN"`) + + + + diff --git a/docs/ArduinoDevicev2Cert.md b/docs/ArduinoDevicev2Cert.md new file mode 100644 index 0000000..0ad7814 --- /dev/null +++ b/docs/ArduinoDevicev2Cert.md @@ -0,0 +1,16 @@ +# ArduinoIotClient.ArduinoDevicev2Cert + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ca** | **String** | The Certification Authority used to sign the certificate | [optional] +**compressed** | [**ArduinoCompressedv2**](ArduinoCompressedv2.md) | | +**der** | **String** | The certificate in DER format | +**deviceId** | **String** | The unique identifier of the device | +**enabled** | **Boolean** | Whether the certificate is enabled | [default to true] +**href** | **String** | The api reference of this cert | +**id** | **String** | The unique identifier of the key | +**pem** | **String** | The certificate in pem format | + + diff --git a/docs/ArduinoDevicev2EventProperties.md b/docs/ArduinoDevicev2EventProperties.md new file mode 100644 index 0000000..694cece --- /dev/null +++ b/docs/ArduinoDevicev2EventProperties.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoDevicev2EventProperties + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**events** | [**[ArduinoDevicev2SimpleProperties]**](ArduinoDevicev2SimpleProperties.md) | ArduinoDevicev2SimplePropertiesCollection is the media type for an array of ArduinoDevicev2SimpleProperties (default view) | +**id** | **String** | The device of the property | + + diff --git a/docs/ArduinoDevicev2Otaupload.md b/docs/ArduinoDevicev2Otaupload.md new file mode 100644 index 0000000..3ab541f --- /dev/null +++ b/docs/ArduinoDevicev2Otaupload.md @@ -0,0 +1,12 @@ +# ArduinoIotClient.ArduinoDevicev2Otaupload + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**fileSha** | **String** | SHA256 of the uploaded file | [optional] +**otaId** | **String** | OTA request id (only available from OTA version 2 and above) | [optional] +**otaVersion** | **Number** | OTA version | +**status** | **String** | OTA request status (only available from OTA version 2 and above) | [optional] + + diff --git a/docs/ArduinoDevicev2Pass.md b/docs/ArduinoDevicev2Pass.md new file mode 100644 index 0000000..d225ada --- /dev/null +++ b/docs/ArduinoDevicev2Pass.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoDevicev2Pass + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**set** | **Boolean** | Whether the password is set or not | +**suggestedPassword** | **String** | A random suggested password | [optional] + + diff --git a/docs/ArduinoDevicev2SimpleProperties.md b/docs/ArduinoDevicev2SimpleProperties.md new file mode 100644 index 0000000..80e6061 --- /dev/null +++ b/docs/ArduinoDevicev2SimpleProperties.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoDevicev2SimpleProperties + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | The name of the property | +**updatedAt** | **Date** | Update date of the property | +**value** | **Object** | Value of the property | + + diff --git a/docs/ArduinoDevicev2StatusEvent.md b/docs/ArduinoDevicev2StatusEvent.md new file mode 100644 index 0000000..23afe7f --- /dev/null +++ b/docs/ArduinoDevicev2StatusEvent.md @@ -0,0 +1,21 @@ +# ArduinoIotClient.ArduinoDevicev2StatusEvent + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**updatedAt** | **Date** | Update timestamp of the status event | +**value** | **String** | The status event of the device | + + + +## Enum: ValueEnum + + +* `CONNECTED` (value: `"CONNECTED"`) + +* `DISCONNECTED` (value: `"DISCONNECTED"`) + + + + diff --git a/docs/ArduinoDevicev2StatusEvents.md b/docs/ArduinoDevicev2StatusEvents.md new file mode 100644 index 0000000..7e51b3a --- /dev/null +++ b/docs/ArduinoDevicev2StatusEvents.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoDevicev2StatusEvents + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**events** | [**[ArduinoDevicev2StatusEvent]**](ArduinoDevicev2StatusEvent.md) | ArduinoDevicev2StatusEventCollection is the media type for an array of ArduinoDevicev2StatusEvent (default view) | +**id** | **String** | The id of the device | + + diff --git a/docs/ArduinoDevicev2Webhook.md b/docs/ArduinoDevicev2Webhook.md new file mode 100644 index 0000000..e8e05a5 --- /dev/null +++ b/docs/ArduinoDevicev2Webhook.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoDevicev2Webhook + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**active** | **Boolean** | Whether the webhook is active | [optional] [default to true] +**id** | **String** | The uuid of the webhook | +**uri** | **String** | The uri of the webhook | + + diff --git a/docs/ArduinoDevicev2properties.md b/docs/ArduinoDevicev2properties.md new file mode 100644 index 0000000..a97121a --- /dev/null +++ b/docs/ArduinoDevicev2properties.md @@ -0,0 +1,12 @@ +# ArduinoIotClient.ArduinoDevicev2properties + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**dataRetentionDays** | **Number** | How many days the data will be kept | +**deviceId** | **String** | The device of the property | +**properties** | [**[ArduinoProperty]**](ArduinoProperty.md) | ArduinoPropertyCollection is the media type for an array of ArduinoProperty (default view) | +**userId** | **String** | The user id of the owner | + + diff --git a/docs/ArduinoDevicev2propertyvalue.md b/docs/ArduinoDevicev2propertyvalue.md new file mode 100644 index 0000000..4d42edb --- /dev/null +++ b/docs/ArduinoDevicev2propertyvalue.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoDevicev2propertyvalue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**createdAt** | **Date** | | [optional] +**value** | [**ArduinoDevicev2propertyvalueValue**](ArduinoDevicev2propertyvalueValue.md) | | [optional] + + diff --git a/docs/ArduinoDevicev2propertyvalueValue.md b/docs/ArduinoDevicev2propertyvalueValue.md new file mode 100644 index 0000000..173aed6 --- /dev/null +++ b/docs/ArduinoDevicev2propertyvalueValue.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoDevicev2propertyvalueValue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**payload** | **String** | | [optional] +**seqno** | **Number** | | [optional] +**statistics** | [**ArduinoDevicev2propertyvalueValueStatistics**](ArduinoDevicev2propertyvalueValueStatistics.md) | | [optional] + + diff --git a/docs/ArduinoDevicev2propertyvalueValueStatistics.md b/docs/ArduinoDevicev2propertyvalueValueStatistics.md new file mode 100644 index 0000000..70c61f4 --- /dev/null +++ b/docs/ArduinoDevicev2propertyvalueValueStatistics.md @@ -0,0 +1,18 @@ +# ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**adr** | **Number** | | [optional] +**channel** | **Number** | | [optional] +**duplicate** | **Number** | | [optional] +**freq** | **Number** | | [optional] +**modBW** | **Number** | | [optional] +**rssi** | **Number** | | [optional] +**seqno** | **Number** | | [optional] +**sf** | **Number** | | [optional] +**snr** | **Number** | | [optional] +**time** | **Number** | | [optional] + + diff --git a/docs/ArduinoDevicev2propertyvalues.md b/docs/ArduinoDevicev2propertyvalues.md new file mode 100644 index 0000000..d7d87f7 --- /dev/null +++ b/docs/ArduinoDevicev2propertyvalues.md @@ -0,0 +1,12 @@ +# ArduinoIotClient.ArduinoDevicev2propertyvalues + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | | +**lastEvaluatedKey** | [**ArduinoDevicev2propertyvaluesLastEvaluatedKey**](ArduinoDevicev2propertyvaluesLastEvaluatedKey.md) | | +**name** | **String** | | +**values** | [**[ArduinoDevicev2propertyvalue]**](ArduinoDevicev2propertyvalue.md) | ArduinoDevicev2propertyvalueCollection is the media type for an array of ArduinoDevicev2propertyvalue (default view) | + + diff --git a/docs/ArduinoDevicev2propertyvaluesLastEvaluatedKey.md b/docs/ArduinoDevicev2propertyvaluesLastEvaluatedKey.md new file mode 100644 index 0000000..37db872 --- /dev/null +++ b/docs/ArduinoDevicev2propertyvaluesLastEvaluatedKey.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoDevicev2propertyvaluesLastEvaluatedKey + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**createdAt** | **Date** | | [optional] +**id** | **String** | | [optional] +**name** | **String** | | [optional] + + diff --git a/docs/ArduinoDevicev2templatedevice.md b/docs/ArduinoDevicev2templatedevice.md new file mode 100644 index 0000000..500d074 --- /dev/null +++ b/docs/ArduinoDevicev2templatedevice.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoDevicev2templatedevice + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**fqbn** | **String** | The device fqbn | [optional] +**name** | **String** | The device type name | [optional] + + diff --git a/docs/ArduinoLinkedvariable.md b/docs/ArduinoLinkedvariable.md new file mode 100644 index 0000000..332852f --- /dev/null +++ b/docs/ArduinoLinkedvariable.md @@ -0,0 +1,18 @@ +# ArduinoIotClient.ArduinoLinkedvariable + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | The id of the linked variable | +**lastValue** | **Object** | Last value of the linked property | [optional] +**lastValueUpdatedAt** | **Date** | Update date of the last value | [optional] +**name** | **String** | The name of the variable | +**permission** | **String** | The permission of the linked variable | +**thingId** | **String** | The id of the related thing | +**thingName** | **String** | The name of the related thing | +**thingTimezone** | [**ArduinoTimezone**](ArduinoTimezone.md) | | [optional] +**type** | **String** | The type of the variable | +**variableName** | **String** | The name of the variable in the code | + + diff --git a/docs/ArduinoLoradevicev1.md b/docs/ArduinoLoradevicev1.md new file mode 100644 index 0000000..d504a4a --- /dev/null +++ b/docs/ArduinoLoradevicev1.md @@ -0,0 +1,12 @@ +# ArduinoIotClient.ArduinoLoradevicev1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**appEui** | **String** | The eui of the app | +**appKey** | **String** | The key of the device | +**deviceId** | **String** | The id of the device | +**eui** | **String** | The eui of the lora device | + + diff --git a/docs/ArduinoLorafreqplansv1.md b/docs/ArduinoLorafreqplansv1.md new file mode 100644 index 0000000..6967526 --- /dev/null +++ b/docs/ArduinoLorafreqplansv1.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.ArduinoLorafreqplansv1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**frequencyPlans** | [**[ArduinoLorafreqplanv1]**](ArduinoLorafreqplanv1.md) | The list of frequency plans | [optional] + + diff --git a/docs/ArduinoLorafreqplanv1.md b/docs/ArduinoLorafreqplanv1.md new file mode 100644 index 0000000..f934979 --- /dev/null +++ b/docs/ArduinoLorafreqplanv1.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoLorafreqplanv1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**advanced** | **Boolean** | Frequency plan only for advanced users | +**id** | **String** | The ID of the frequency paln | +**name** | **String** | The name of the frequency plan | + + diff --git a/docs/ArduinoProperty.md b/docs/ArduinoProperty.md new file mode 100644 index 0000000..375110c --- /dev/null +++ b/docs/ArduinoProperty.md @@ -0,0 +1,29 @@ +# ArduinoIotClient.ArduinoProperty + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**createdAt** | **Date** | Creation date of the property | [optional] +**deletedAt** | **Date** | Delete date of the property | [optional] +**href** | **String** | The api reference of this property | +**id** | **String** | The id of the property | +**lastValue** | **Object** | Last value of this property | [optional] +**linkedToTrigger** | **Boolean** | Indicates if the property is involved in the activation of at least a trigger | [optional] +**maxValue** | **Number** | Maximum value of this property | [optional] +**minValue** | **Number** | Minimum value of this property | [optional] +**name** | **String** | The friendly name of the property | +**permission** | **String** | The permission of the property | +**persist** | **Boolean** | If true, data will persist into a timeseries database | [optional] +**syncId** | **String** | The id of the sync pool | [optional] +**tag** | **Number** | The integer id of the property | [optional] +**thingId** | **String** | The id of the thing | +**thingName** | **String** | The name of the associated thing | [optional] +**type** | **String** | The type of the property | +**updateParameter** | **Number** | The update frequency in seconds, or the amount of the property has to change in order to trigger an update | [optional] +**updateStrategy** | **String** | The update strategy for the property value | +**updatedAt** | **Date** | Update date of the property | [optional] +**valueUpdatedAt** | **Date** | Last update timestamp of this property | [optional] +**variableName** | **String** | The sketch variable name of the property | [optional] + + diff --git a/docs/ArduinoPropertytype.md b/docs/ArduinoPropertytype.md new file mode 100644 index 0000000..c4a877e --- /dev/null +++ b/docs/ArduinoPropertytype.md @@ -0,0 +1,18 @@ +# ArduinoIotClient.ArduinoPropertytype + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**assistants** | **[String]** | The voice assistants available for this type | [optional] +**declaration** | **String** | The c++ type we are using for this variable type | +**deprecated** | **Boolean** | Tell if this type is deprecated | +**example** | **String** | Example of use | [optional] +**name** | **String** | The friendly name of the property type | +**rw** | **Boolean** | Tell if the type allow a R/W permission | +**supersededBy** | **String** | The type of property to use if it's deprecated | [optional] +**tags** | **[String]** | The tags related to the type | [optional] +**type** | **String** | The api reference of this type | +**units** | **[String]** | The measure units available for this type | [optional] + + diff --git a/docs/ArduinoSeriesBatch.md b/docs/ArduinoSeriesBatch.md new file mode 100644 index 0000000..1776dbc --- /dev/null +++ b/docs/ArduinoSeriesBatch.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoSeriesBatch + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**respVersion** | **Number** | Response version | +**responses** | [**[ArduinoSeriesResponse]**](ArduinoSeriesResponse.md) | Responses of the request | + + diff --git a/docs/ArduinoSeriesBatchSampled.md b/docs/ArduinoSeriesBatchSampled.md new file mode 100644 index 0000000..91d4bf0 --- /dev/null +++ b/docs/ArduinoSeriesBatchSampled.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoSeriesBatchSampled + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**respVersion** | **Number** | Response version | +**responses** | [**[ArduinoSeriesSampledResponse]**](ArduinoSeriesSampledResponse.md) | Responses of the request | + + diff --git a/docs/ArduinoSeriesRawBatch.md b/docs/ArduinoSeriesRawBatch.md new file mode 100644 index 0000000..3c8f43d --- /dev/null +++ b/docs/ArduinoSeriesRawBatch.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoSeriesRawBatch + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**respVersion** | **Number** | Response version | +**responses** | [**[ArduinoSeriesRawResponse]**](ArduinoSeriesRawResponse.md) | Responses of the request | + + diff --git a/docs/ArduinoSeriesRawBatchLastvalue.md b/docs/ArduinoSeriesRawBatchLastvalue.md new file mode 100644 index 0000000..a5ffe1b --- /dev/null +++ b/docs/ArduinoSeriesRawBatchLastvalue.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ArduinoSeriesRawBatchLastvalue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**responses** | [**[ArduinoSeriesRawLastValueResponse]**](ArduinoSeriesRawLastValueResponse.md) | Responses of the request | +**status** | **String** | Status of the response | + + diff --git a/docs/ArduinoSeriesRawLastValueResponse.md b/docs/ArduinoSeriesRawLastValueResponse.md new file mode 100644 index 0000000..d88e9ed --- /dev/null +++ b/docs/ArduinoSeriesRawLastValueResponse.md @@ -0,0 +1,13 @@ +# ArduinoIotClient.ArduinoSeriesRawLastValueResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**countValues** | **Number** | Total number of values in the array 'values' | +**propertyId** | **String** | Property id | +**thingId** | **String** | Thing id | +**times** | **[Date]** | Timestamp in RFC3339 | +**values** | **[Object]** | Values can be in Float, String, Bool, Object | + + diff --git a/docs/ArduinoSeriesRawResponse.md b/docs/ArduinoSeriesRawResponse.md new file mode 100644 index 0000000..11e8954 --- /dev/null +++ b/docs/ArduinoSeriesRawResponse.md @@ -0,0 +1,35 @@ +# ArduinoIotClient.ArduinoSeriesRawResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**countValues** | **Number** | Total number of values in the array 'values' | +**fromDate** | **Date** | From date | +**message** | **String** | If the response is different than 'ok' | [optional] [default to ''] +**propertyId** | **String** | Property id | [optional] +**propertyName** | **String** | Property name | [optional] +**propertyType** | **String** | Property type | [optional] +**query** | **String** | Query of for the data | +**respVersion** | **Number** | Response version | +**series** | [**BatchQueryRawResponseSeriesMediaV1**](BatchQueryRawResponseSeriesMediaV1.md) | | +**seriesLimit** | **Number** | Max of values | [optional] +**sort** | **String** | Sorting | +**status** | **String** | Status of the response | +**thingId** | **String** | Thing id | [optional] +**times** | **[Date]** | Timestamp in RFC3339 | +**toDate** | **Date** | To date | +**values** | **[Object]** | Values can be in Float, String, Bool, Object | + + + +## Enum: SortEnum + + +* `ASC` (value: `"ASC"`) + +* `DESC` (value: `"DESC"`) + + + + diff --git a/docs/ArduinoSeriesResponse.md b/docs/ArduinoSeriesResponse.md new file mode 100644 index 0000000..63a07ab --- /dev/null +++ b/docs/ArduinoSeriesResponse.md @@ -0,0 +1,59 @@ +# ArduinoIotClient.ArduinoSeriesResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**aggregation** | **String** | Aggregation statistic function. For numeric values, AVG statistic is used by default. PCT_X compute the Xth approximate percentile (e.g. PCT_95 is the 95th approximate percentile). For boolean, BOOL_OR statistic is used as default. | [optional] +**countValues** | **Number** | Total number of values in the array 'values' | +**fromDate** | **Date** | From date | +**interval** | **Number** | Resolution in seconds | +**message** | **String** | If the response is different than 'ok' | [optional] [default to ''] +**propertyId** | **String** | Property id | [optional] +**propertyName** | **String** | Property name | [optional] +**propertyType** | **String** | Property type | [optional] +**query** | **String** | Query of for the data | +**respVersion** | **Number** | Response version | +**seriesLimit** | **Number** | Maximum number of values returned after data aggregation, if any | [optional] +**status** | **String** | Status of the response | +**thingId** | **String** | Thing id | [optional] +**times** | **[Date]** | Timestamp in RFC3339 | +**toDate** | **Date** | To date | +**values** | **[Number]** | Values in Float | + + + +## Enum: AggregationEnum + + +* `AVG` (value: `"AVG"`) + +* `MIN` (value: `"MIN"`) + +* `MAX` (value: `"MAX"`) + +* `SUM` (value: `"SUM"`) + +* `COUNT` (value: `"COUNT"`) + +* `PCT_99` (value: `"PCT_99"`) + +* `PCT_95` (value: `"PCT_95"`) + +* `PCT_90` (value: `"PCT_90"`) + +* `PCT_75` (value: `"PCT_75"`) + +* `PCT_50` (value: `"PCT_50"`) + +* `PCT_15` (value: `"PCT_15"`) + +* `PCT_5` (value: `"PCT_5"`) + +* `BOOL_OR` (value: `"BOOL_OR"`) + +* `BOOL_AND` (value: `"BOOL_AND"`) + + + + diff --git a/docs/ArduinoSeriesSampledResponse.md b/docs/ArduinoSeriesSampledResponse.md new file mode 100644 index 0000000..c0f256a --- /dev/null +++ b/docs/ArduinoSeriesSampledResponse.md @@ -0,0 +1,23 @@ +# ArduinoIotClient.ArduinoSeriesSampledResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**countValues** | **Number** | Total number of values in the array 'values' | +**fromDate** | **Date** | From date | +**interval** | **Number** | Resolution in seconds | +**message** | **String** | If the response is different than 'ok' | [optional] [default to ''] +**propertyId** | **String** | Property id | [optional] +**propertyName** | **String** | Property name | [optional] +**propertyType** | **String** | Property type | [optional] +**query** | **String** | Query of for the data | +**respVersion** | **Number** | Response version | +**seriesLimit** | **Number** | Maximum number of values returned after data aggregation, if any | [optional] +**status** | **String** | Status of the response | +**thingId** | **String** | Thing id | [optional] +**times** | **[Date]** | Timestamp in RFC3339 | +**toDate** | **Date** | To date | +**values** | **[Object]** | Values in Float | + + diff --git a/docs/ArduinoTags.md b/docs/ArduinoTags.md new file mode 100644 index 0000000..6fa21e7 --- /dev/null +++ b/docs/ArduinoTags.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.ArduinoTags + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**tags** | [**[Tag]**](Tag.md) | | + + diff --git a/docs/ArduinoTemplate.md b/docs/ArduinoTemplate.md new file mode 100644 index 0000000..ab07d43 --- /dev/null +++ b/docs/ArduinoTemplate.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoTemplate + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**dashboards** | **[String]** | | [optional] +**things** | [**[ArduinoThingresult]**](ArduinoThingresult.md) | ArduinoThingresultCollection is the media type for an array of ArduinoThingresult (default view) | +**triggers** | **[String]** | | [optional] + + diff --git a/docs/ArduinoTemplateproperty.md b/docs/ArduinoTemplateproperty.md new file mode 100644 index 0000000..0af3c6a --- /dev/null +++ b/docs/ArduinoTemplateproperty.md @@ -0,0 +1,15 @@ +# ArduinoIotClient.ArduinoTemplateproperty + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **String** | The friendly id of the property | [optional] +**name** | **String** | The friendly name of the property | +**permission** | **String** | The permission of the property | +**type** | **String** | The type of the property | +**updateParameter** | **Number** | The update frequency in seconds, or the amount of the property has to change in order to trigger an update | [optional] +**updateStrategy** | **String** | The update strategy for the property value | +**variableName** | **String** | The sketch variable name of the property | [optional] + + diff --git a/docs/ArduinoTemplatevariable.md b/docs/ArduinoTemplatevariable.md new file mode 100644 index 0000000..1e62866 --- /dev/null +++ b/docs/ArduinoTemplatevariable.md @@ -0,0 +1,14 @@ +# ArduinoIotClient.ArduinoTemplatevariable + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | The name of the variable | +**permission** | **String** | The permission of the linked variable | +**thingId** | **String** | The name of the related thing | +**thingTimezone** | [**ArduinoTimezone**](ArduinoTimezone.md) | | [optional] +**type** | **String** | The type of the variable | +**variableId** | **String** | The name of the variable in the code | + + diff --git a/docs/ArduinoThing.md b/docs/ArduinoThing.md new file mode 100644 index 0000000..38d1333 --- /dev/null +++ b/docs/ArduinoThing.md @@ -0,0 +1,41 @@ +# ArduinoIotClient.ArduinoThing + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**assistant** | **String** | The kind of voice assistant the thing is connected to, it can be ALEXA | GOOGLE | NONE | [optional] +**createdAt** | **Date** | Creation date of the thing | [optional] +**deletedAt** | **Date** | Delete date of the thing | [optional] +**deviceFqbn** | **String** | The fqbn of the attached device, if any | [optional] +**deviceId** | **String** | The id of the device | [optional] +**deviceName** | **String** | The name of the attached device, if any | [optional] +**deviceType** | **String** | The type of the attached device, if any | [optional] +**href** | **String** | The api reference of this thing | +**id** | **String** | The id of the thing | +**name** | **String** | The friendly name of the thing | +**organizationId** | **String** | Id of the organization the thing belongs to | [optional] +**properties** | [**[ArduinoProperty]**](ArduinoProperty.md) | ArduinoPropertyCollection is the media type for an array of ArduinoProperty (default view) | [optional] +**propertiesCount** | **Number** | The number of properties of the thing | [optional] +**sketchId** | **String** | The id of the attached sketch | [optional] +**tags** | **{String: Object}** | Tags of the thing | [optional] +**timezone** | **String** | Time zone of the thing | +**updatedAt** | **Date** | Update date of the thing | [optional] +**userId** | **String** | The user id of the owner | +**webhookActive** | **Boolean** | Webhook uri | [optional] +**webhookUri** | **String** | Webhook uri | [optional] + + + +## Enum: AssistantEnum + + +* `ALEXA` (value: `"ALEXA"`) + +* `GOOGLE` (value: `"GOOGLE"`) + +* `NONE` (value: `"NONE"`) + + + + diff --git a/docs/ArduinoThingresult.md b/docs/ArduinoThingresult.md new file mode 100644 index 0000000..169ce4c --- /dev/null +++ b/docs/ArduinoThingresult.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoThingresult + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**deviceId** | **String** | UUID of the attached device | [optional] +**id** | **String** | UUID of the created Thing | +**sketchId** | **String** | UUID of the created Sketch | + + diff --git a/docs/ArduinoThingtemplate.md b/docs/ArduinoThingtemplate.md new file mode 100644 index 0000000..aa45433 --- /dev/null +++ b/docs/ArduinoThingtemplate.md @@ -0,0 +1,17 @@ +# ArduinoIotClient.ArduinoThingtemplate + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**deviceMetadata** | [**ArduinoDevicev2templatedevice**](ArduinoDevicev2templatedevice.md) | | [optional] +**id** | **String** | The friendly id of the thing | [optional] +**name** | **String** | The friendly name of the thing | +**organizationId** | **String** | Id of the organization the thing belongs to | [optional] +**sketchTemplate** | **String** | The ID of the template's sketch | [optional] +**tags** | [**[Tag]**](Tag.md) | Tags of the thing | [optional] +**timezone** | **String** | Time zone of the thing | +**variables** | [**[ArduinoTemplateproperty]**](ArduinoTemplateproperty.md) | ArduinoTemplatepropertyCollection is the media type for an array of ArduinoTemplateproperty (default view) | [optional] +**webhookUri** | **String** | Webhook uri | [optional] + + diff --git a/docs/ArduinoTimeseriesmedia.md b/docs/ArduinoTimeseriesmedia.md new file mode 100644 index 0000000..2de29df --- /dev/null +++ b/docs/ArduinoTimeseriesmedia.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.ArduinoTimeseriesmedia + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**[TimeseriesDataPoint]**](TimeseriesDataPoint.md) | | + + diff --git a/docs/ArduinoTimezone.md b/docs/ArduinoTimezone.md new file mode 100644 index 0000000..e2f7b03 --- /dev/null +++ b/docs/ArduinoTimezone.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.ArduinoTimezone + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | Name of the time zone. | +**offset** | **Number** | Current UTC DST offset in seconds. | +**until** | **Date** | Date until the offset is valid. | + + diff --git a/docs/ArduinoVariableslinks.md b/docs/ArduinoVariableslinks.md new file mode 100644 index 0000000..27692b2 --- /dev/null +++ b/docs/ArduinoVariableslinks.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.ArduinoVariableslinks + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**variables** | **[String]** | The ids of the linked variables | + + diff --git a/docs/ArduinoWidgetv2.md b/docs/ArduinoWidgetv2.md new file mode 100644 index 0000000..6103eb0 --- /dev/null +++ b/docs/ArduinoWidgetv2.md @@ -0,0 +1,24 @@ +# ArduinoIotClient.ArduinoWidgetv2 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**hasPermissionIncompatibility** | **Boolean** | True if the linked variables permissions are incompatible with the widget | [optional] +**hasTypeIncompatibility** | **Boolean** | True if the linked variables types are incompatible with the widget | [optional] +**hasUnlinkedVariable** | **Boolean** | If it's true the widget is linked to a soft-deleted variable | [optional] +**height** | **Number** | Widget current height for desktop | +**heightMobile** | **Number** | Widget current height for mobile | [optional] +**id** | **String** | The UUID of the widget, set by client | +**name** | **String** | The name of the widget | [optional] +**options** | **{String: Object}** | Widget options | +**type** | **String** | The type of the widget | +**variables** | [**[ArduinoLinkedvariable]**](ArduinoLinkedvariable.md) | ArduinoLinkedvariableCollection is the media type for an array of ArduinoLinkedvariable (default view) | [optional] +**width** | **Number** | Widget current width for desktop | +**widthMobile** | **Number** | Widget current width for mobile | [optional] +**x** | **Number** | Widget x position for desktop | +**xMobile** | **Number** | Widget x position for mobile | [optional] +**y** | **Number** | Widget y position for desktop | +**yMobile** | **Number** | Widget y position for mobile | [optional] + + diff --git a/docs/ArduinoWidgetv2template.md b/docs/ArduinoWidgetv2template.md new file mode 100644 index 0000000..4cd8ac5 --- /dev/null +++ b/docs/ArduinoWidgetv2template.md @@ -0,0 +1,20 @@ +# ArduinoIotClient.ArduinoWidgetv2template + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**height** | **Number** | Widget current height for desktop | +**heightMobile** | **Number** | Widget current height for mobile | [optional] +**name** | **String** | The name of the widget | [optional] +**options** | **{String: Object}** | Widget options | +**type** | **String** | The type of the widget | +**variables** | [**[ArduinoTemplatevariable]**](ArduinoTemplatevariable.md) | ArduinoTemplatevariableCollection is the media type for an array of ArduinoTemplatevariable (default view) | [optional] +**width** | **Number** | Widget current width for desktop | +**widthMobile** | **Number** | Widget current width for mobile | [optional] +**x** | **Number** | Widget x position for desktop | +**xMobile** | **Number** | Widget x position for mobile | [optional] +**y** | **Number** | Widget y position for desktop | +**yMobile** | **Number** | Widget y position for mobile | [optional] + + diff --git a/docs/BatchLastValueRequestsMediaV1.md b/docs/BatchLastValueRequestsMediaV1.md new file mode 100644 index 0000000..822e121 --- /dev/null +++ b/docs/BatchLastValueRequestsMediaV1.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.BatchLastValueRequestsMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**requests** | [**[BatchQueryRawLastValueRequestMediaV1]**](BatchQueryRawLastValueRequestMediaV1.md) | Requests | + + diff --git a/docs/BatchQueryRawLastValueRequestMediaV1.md b/docs/BatchQueryRawLastValueRequestMediaV1.md new file mode 100644 index 0000000..45a4b65 --- /dev/null +++ b/docs/BatchQueryRawLastValueRequestMediaV1.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.BatchQueryRawLastValueRequestMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**propertyId** | **String** | Property id | +**thingId** | **String** | Thing id | + + diff --git a/docs/BatchQueryRawRequestMediaV1.md b/docs/BatchQueryRawRequestMediaV1.md new file mode 100644 index 0000000..04b7639 --- /dev/null +++ b/docs/BatchQueryRawRequestMediaV1.md @@ -0,0 +1,24 @@ +# ArduinoIotClient.BatchQueryRawRequestMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**from** | **Date** | From timestamp | [optional] +**q** | **String** | Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5 or thing.95717675-4786-4ffc-afcc-799777755391) | +**seriesLimit** | **Number** | Maximum number of values returned, if any (default/limit: 1000, 10000 in case of thing query) | [optional] +**sort** | **String** | Sorting | [optional] [default to 'DESC'] +**to** | **Date** | To timestamp | [optional] + + + +## Enum: SortEnum + + +* `ASC` (value: `"ASC"`) + +* `DESC` (value: `"DESC"`) + + + + diff --git a/docs/BatchQueryRawRequestsMediaV1.md b/docs/BatchQueryRawRequestsMediaV1.md new file mode 100644 index 0000000..e366f76 --- /dev/null +++ b/docs/BatchQueryRawRequestsMediaV1.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.BatchQueryRawRequestsMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**requests** | [**[BatchQueryRawRequestMediaV1]**](BatchQueryRawRequestMediaV1.md) | Requests | +**respVersion** | **Number** | Response version | + + diff --git a/docs/BatchQueryRawResponseSeriesMediaV1.md b/docs/BatchQueryRawResponseSeriesMediaV1.md new file mode 100644 index 0000000..5de08fd --- /dev/null +++ b/docs/BatchQueryRawResponseSeriesMediaV1.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.BatchQueryRawResponseSeriesMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**metric** | **String** | Metric name | + + diff --git a/docs/BatchQueryRequestMediaV1.md b/docs/BatchQueryRequestMediaV1.md new file mode 100644 index 0000000..0b74d1c --- /dev/null +++ b/docs/BatchQueryRequestMediaV1.md @@ -0,0 +1,49 @@ +# ArduinoIotClient.BatchQueryRequestMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**aggregation** | **String** | Aggregation statistic function. For numeric values, AVG statistic is used by default. PCT_X compute the Xth approximate percentile (e.g. PCT_95 is the 95th approximate percentile). For boolean, BOOL_OR statistic is used as default. | [optional] +**from** | **Date** | From timestamp | +**interval** | **Number** | Resolution in seconds (max allowed: 86400) | [optional] +**q** | **String** | Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5 or thing.95717675-4786-4ffc-afcc-799777755391) | +**seriesLimit** | **Number** | Maximum number of values returned after data aggregation, if any (default: 300, limit: 1000 - 10000 in case of thing query) | [optional] +**to** | **Date** | To timestamp | + + + +## Enum: AggregationEnum + + +* `AVG` (value: `"AVG"`) + +* `MIN` (value: `"MIN"`) + +* `MAX` (value: `"MAX"`) + +* `SUM` (value: `"SUM"`) + +* `COUNT` (value: `"COUNT"`) + +* `PCT_99` (value: `"PCT_99"`) + +* `PCT_95` (value: `"PCT_95"`) + +* `PCT_90` (value: `"PCT_90"`) + +* `PCT_75` (value: `"PCT_75"`) + +* `PCT_50` (value: `"PCT_50"`) + +* `PCT_15` (value: `"PCT_15"`) + +* `PCT_5` (value: `"PCT_5"`) + +* `BOOL_OR` (value: `"BOOL_OR"`) + +* `BOOL_AND` (value: `"BOOL_AND"`) + + + + diff --git a/docs/BatchQueryRequestsMediaV1.md b/docs/BatchQueryRequestsMediaV1.md new file mode 100644 index 0000000..1d08054 --- /dev/null +++ b/docs/BatchQueryRequestsMediaV1.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.BatchQueryRequestsMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**requests** | [**[BatchQueryRequestMediaV1]**](BatchQueryRequestMediaV1.md) | Requests | +**respVersion** | **Number** | Response version | + + diff --git a/docs/BatchQuerySampledRequestMediaV1.md b/docs/BatchQuerySampledRequestMediaV1.md new file mode 100644 index 0000000..1c3dcb6 --- /dev/null +++ b/docs/BatchQuerySampledRequestMediaV1.md @@ -0,0 +1,13 @@ +# ArduinoIotClient.BatchQuerySampledRequestMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**from** | **Date** | From timestamp (default: now UTC - 24h) | [optional] +**interval** | **Number** | Resolution in seconds (allowed min:60, max:86400) | [optional] [default to 300] +**q** | **String** | Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5) | +**seriesLimit** | **Number** | Maximum number of values returned after data aggregation, if any (default: 300, limit: 1000) | [optional] +**to** | **Date** | To timestamp (default: now UTC) | [optional] + + diff --git a/docs/BatchQuerySampledRequestsMediaV1.md b/docs/BatchQuerySampledRequestsMediaV1.md new file mode 100644 index 0000000..65ee95d --- /dev/null +++ b/docs/BatchQuerySampledRequestsMediaV1.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.BatchQuerySampledRequestsMediaV1 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**requests** | [**[BatchQuerySampledRequestMediaV1]**](BatchQuerySampledRequestMediaV1.md) | Requests | +**respVersion** | **Number** | Response version | + + diff --git a/docs/CheckDevicesV2PassPayload.md b/docs/CheckDevicesV2PassPayload.md new file mode 100644 index 0000000..802f36b --- /dev/null +++ b/docs/CheckDevicesV2PassPayload.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.CheckDevicesV2PassPayload + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**password** | **String** | The password for the device | + + diff --git a/docs/Clone.md b/docs/Clone.md new file mode 100644 index 0000000..7e87e91 --- /dev/null +++ b/docs/Clone.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.Clone + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**overrides** | [**[Override]**](Override.md) | The overrides to apply to the cloned dashboard. An override is a tuple of ids: the id of the thing to override and the id of the new thing to link | [optional] + + diff --git a/docs/CreateDevicesV2CertsPayload.md b/docs/CreateDevicesV2CertsPayload.md new file mode 100644 index 0000000..b926935 --- /dev/null +++ b/docs/CreateDevicesV2CertsPayload.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.CreateDevicesV2CertsPayload + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ca** | **String** | The Certification Authority you want to use | [optional] +**csr** | **String** | The certificate request in pem format | +**enabled** | **Boolean** | Whether the certificate is enabled | + + diff --git a/docs/CreateDevicesV2Payload.md b/docs/CreateDevicesV2Payload.md new file mode 100644 index 0000000..768a762 --- /dev/null +++ b/docs/CreateDevicesV2Payload.md @@ -0,0 +1,79 @@ +# ArduinoIotClient.CreateDevicesV2Payload + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**connectionType** | **String** | The type of the connections selected by the user when multiple connections are available | [optional] +**fqbn** | **String** | The fully qualified board name | [optional] +**name** | **String** | The friendly name of the device | [optional] +**serial** | **String** | The serial uuid of the device | [optional] +**type** | **String** | The type of the device | +**userId** | **String** | The user_id associated to the device. If absent it will be inferred from the authentication header | [optional] +**wifiFwVersion** | **String** | The version of the NINA/WIFI101 firmware running on the device | [optional] + + + +## Enum: ConnectionTypeEnum + + +* `wifi` (value: `"wifi"`) + +* `eth` (value: `"eth"`) + +* `wifiandsecret` (value: `"wifiandsecret"`) + +* `gsm` (value: `"gsm"`) + +* `nb` (value: `"nb"`) + +* `lora` (value: `"lora"`) + +* `catm1` (value: `"catm1"`) + +* `cellular` (value: `"cellular"`) + + + + + +## Enum: TypeEnum + + +* `mkrwifi1010` (value: `"mkrwifi1010"`) + +* `mkr1000` (value: `"mkr1000"`) + +* `nano_33_iot` (value: `"nano_33_iot"`) + +* `mkrgsm1400` (value: `"mkrgsm1400"`) + +* `mkrnb1500` (value: `"mkrnb1500"`) + +* `login_and_secretkey_wifi` (value: `"login_and_secretkey_wifi"`) + +* `envie_m7` (value: `"envie_m7"`) + +* `nanorp2040connect` (value: `"nanorp2040connect"`) + +* `nicla_vision` (value: `"nicla_vision"`) + +* `phone` (value: `"phone"`) + +* `portenta_x8` (value: `"portenta_x8"`) + +* `opta` (value: `"opta"`) + +* `giga` (value: `"giga"`) + +* `generic_device_secretkey` (value: `"generic_device_secretkey"`) + +* `portenta_c33` (value: `"portenta_c33"`) + +* `unor4wifi` (value: `"unor4wifi"`) + +* `nano_nora` (value: `"nano_nora"`) + + + + diff --git a/docs/CreateLoraDevicesV1Payload.md b/docs/CreateLoraDevicesV1Payload.md new file mode 100644 index 0000000..290f776 --- /dev/null +++ b/docs/CreateLoraDevicesV1Payload.md @@ -0,0 +1,59 @@ +# ArduinoIotClient.CreateLoraDevicesV1Payload + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**app** | **String** | The app name | +**appEui** | **String** | The app eui of the lora device | [optional] +**appKey** | **String** | The app key of the lora device | [optional] +**eui** | **String** | The eui of the lora device | +**frequencyPlan** | **String** | The frequency plan required by your country | +**name** | **String** | A common name for the device | +**serial** | **String** | The optional serial number | [optional] +**type** | **String** | The type of device | +**userId** | **String** | The id of the user. Can be the special string 'me' | + + + +## Enum: FrequencyPlanEnum + + +* `EU_863_870_TTN` (value: `"EU_863_870_TTN"`) + +* `US_902_928_FSB_2` (value: `"US_902_928_FSB_2"`) + +* `EU_433` (value: `"EU_433"`) + +* `AU_915_928_FSB_2` (value: `"AU_915_928_FSB_2"`) + +* `CN_470_510_FSB_11` (value: `"CN_470_510_FSB_11"`) + +* `AS_920_923` (value: `"AS_920_923"`) + +* `AS_920_923_TTN_AU` (value: `"AS_920_923_TTN_AU"`) + +* `AS_923_925` (value: `"AS_923_925"`) + +* `AS_923_925_TTN_AU` (value: `"AS_923_925_TTN_AU"`) + +* `KR_920_923_TTN` (value: `"KR_920_923_TTN"`) + +* `IN_865_867` (value: `"IN_865_867"`) + + + + + +## Enum: TypeEnum + + +* `lora-device` (value: `"lora-device"`) + +* `mkrwan1300` (value: `"mkrwan1300"`) + +* `mkrwan1310` (value: `"mkrwan1310"`) + + + + diff --git a/docs/DashboardsV2Api.md b/docs/DashboardsV2Api.md new file mode 100644 index 0000000..4e3b057 --- /dev/null +++ b/docs/DashboardsV2Api.md @@ -0,0 +1,660 @@ +# ArduinoIotClient.DashboardsV2Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**dashboardsV2Clone**](DashboardsV2Api.md#dashboardsV2Clone) | **PUT** /iot/v2/dashboards/{id}/clone | clone dashboards_v2 +[**dashboardsV2Create**](DashboardsV2Api.md#dashboardsV2Create) | **POST** /iot/v2/dashboards | create dashboards_v2 +[**dashboardsV2Delete**](DashboardsV2Api.md#dashboardsV2Delete) | **DELETE** /iot/v2/dashboards/{id} | delete dashboards_v2 +[**dashboardsV2DeleteShare**](DashboardsV2Api.md#dashboardsV2DeleteShare) | **DELETE** /iot/v2/dashboards/{id}/shares/{user_id} | deleteShare dashboards_v2 +[**dashboardsV2Link**](DashboardsV2Api.md#dashboardsV2Link) | **PUT** /iot/v2/dashboards/{id}/widgets/{widgetId}/variables | link dashboards_v2 +[**dashboardsV2List**](DashboardsV2Api.md#dashboardsV2List) | **GET** /iot/v2/dashboards | list dashboards_v2 +[**dashboardsV2ListShares**](DashboardsV2Api.md#dashboardsV2ListShares) | **GET** /iot/v2/dashboards/{id}/shares | listShares dashboards_v2 +[**dashboardsV2RequestAccess**](DashboardsV2Api.md#dashboardsV2RequestAccess) | **PUT** /iot/v2/dashboards/{id}/share_request | requestAccess dashboards_v2 +[**dashboardsV2Share**](DashboardsV2Api.md#dashboardsV2Share) | **PUT** /iot/v2/dashboards/{id}/shares | share dashboards_v2 +[**dashboardsV2Show**](DashboardsV2Api.md#dashboardsV2Show) | **GET** /iot/v2/dashboards/{id} | show dashboards_v2 +[**dashboardsV2Template**](DashboardsV2Api.md#dashboardsV2Template) | **GET** /iot/v2/dashboards/{id}/template | template dashboards_v2 +[**dashboardsV2Update**](DashboardsV2Api.md#dashboardsV2Update) | **PUT** /iot/v2/dashboards/{id} | update dashboards_v2 + + + +## dashboardsV2Clone + +> ArduinoDashboardv2 dashboardsV2Clone(id, clone, opts) + +clone dashboards_v2 + +Clone an existing dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let clone = new ArduinoIotClient.Clone(); // Clone | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Clone(id, clone, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **clone** | [**Clone**](Clone.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDashboardv2**](ArduinoDashboardv2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.dashboardv2+json, application/vnd.goa.error+json + + +## dashboardsV2Create + +> ArduinoDashboardv2 dashboardsV2Create(dashboardv2, opts) + +create dashboards_v2 + +Create a new dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let dashboardv2 = new ArduinoIotClient.Dashboardv2(); // Dashboardv2 | DashboardV2Payload describes a dashboard +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Create(dashboardv2, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **dashboardv2** | [**Dashboardv2**](Dashboardv2.md)| DashboardV2Payload describes a dashboard | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDashboardv2**](ArduinoDashboardv2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.dashboardv2+json, application/vnd.goa.error+json + + +## dashboardsV2Delete + +> dashboardsV2Delete(id, opts) + +delete dashboards_v2 + +Delete a dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Delete(id, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## dashboardsV2DeleteShare + +> dashboardsV2DeleteShare(id, userId, opts) + +deleteShare dashboards_v2 + +Delete a user the dashboard has been shared with + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let userId = "userId_example"; // String | The id of the user +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2DeleteShare(id, userId, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **userId** | **String**| The id of the user | + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## dashboardsV2Link + +> ArduinoVariableslinks dashboardsV2Link(id, widgetId, widgetlink, opts) + +link dashboards_v2 + +Link or detach widget variables + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let widgetId = "widgetId_example"; // String | The id of the widget +let widgetlink = new ArduinoIotClient.Widgetlink(); // Widgetlink | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Link(id, widgetId, widgetlink, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **widgetId** | **String**| The id of the widget | + **widgetlink** | [**Widgetlink**](Widgetlink.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoVariableslinks**](ArduinoVariableslinks.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.variableslinks+json, application/vnd.goa.error+json + + +## dashboardsV2List + +> [ArduinoDashboardv2] dashboardsV2List(opts) + +list dashboards_v2 + +Returns the list of dashboards + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let opts = { + 'name': "name_example", // String | The name of the dashboard + 'userId': "userId_example", // String | The user_id of the dashboard's owner + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2List(opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **name** | **String**| The name of the dashboard | [optional] + **userId** | **String**| The user_id of the dashboard's owner | [optional] + **xOrganization** | **String**| | [optional] + +### Return type + +[**[ArduinoDashboardv2]**](ArduinoDashboardv2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.dashboardv2+json; type=collection, application/vnd.goa.error+json + + +## dashboardsV2ListShares + +> [ArduinoDashboardshare] dashboardsV2ListShares(id, opts) + +listShares dashboards_v2 + +List of users the dashboard has been shared with + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2ListShares(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **xOrganization** | **String**| | [optional] + +### Return type + +[**[ArduinoDashboardshare]**](ArduinoDashboardshare.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.dashboardshare+json; type=collection, application/vnd.goa.error+json + + +## dashboardsV2RequestAccess + +> dashboardsV2RequestAccess(id, sharerequest, opts) + +requestAccess dashboards_v2 + +Request access to a dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let sharerequest = new ArduinoIotClient.Sharerequest(); // Sharerequest | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2RequestAccess(id, sharerequest, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **sharerequest** | [**Sharerequest**](Sharerequest.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + + +## dashboardsV2Share + +> dashboardsV2Share(id, dashboardshare, opts) + +share dashboards_v2 + +Share a dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let dashboardshare = new ArduinoIotClient.Dashboardshare(); // Dashboardshare | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Share(id, dashboardshare, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **dashboardshare** | [**Dashboardshare**](Dashboardshare.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + + +## dashboardsV2Show + +> ArduinoDashboardv2 dashboardsV2Show(id, opts) + +show dashboards_v2 + +Show a dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Show(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDashboardv2**](ArduinoDashboardv2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.dashboardv2+json, application/vnd.goa.error+json + + +## dashboardsV2Template + +> ArduinoDashboardv2template dashboardsV2Template(id, opts) + +template dashboards_v2 + +Get a template of the dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Template(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDashboardv2template**](ArduinoDashboardv2template.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.dashboardv2template+json, application/vnd.goa.error+json + + +## dashboardsV2Update + +> ArduinoDashboardv2 dashboardsV2Update(id, dashboardv2, opts) + +update dashboards_v2 + +Updates an existing dashboard + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DashboardsV2Api(); +let id = "id_example"; // String | The id of the dashboard +let dashboardv2 = new ArduinoIotClient.Dashboardv2(); // Dashboardv2 | DashboardV2Payload describes a dashboard +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.dashboardsV2Update(id, dashboardv2, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the dashboard | + **dashboardv2** | [**Dashboardv2**](Dashboardv2.md)| DashboardV2Payload describes a dashboard | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDashboardv2**](ArduinoDashboardv2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.dashboardv2+json, application/vnd.goa.error+json + diff --git a/docs/Dashboardshare.md b/docs/Dashboardshare.md new file mode 100644 index 0000000..3c0bf3c --- /dev/null +++ b/docs/Dashboardshare.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.Dashboardshare + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**userId** | **String** | The userID of the user you want to share the dashboard with | [optional] +**username** | **String** | The username of the user you want to share the dashboard with | [optional] + + diff --git a/docs/Dashboardv2.md b/docs/Dashboardv2.md new file mode 100644 index 0000000..fc90e42 --- /dev/null +++ b/docs/Dashboardv2.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.Dashboardv2 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**coverImage** | **String** | The cover image of the dashboard | [optional] +**name** | **String** | The friendly name of the dashboard | [optional] +**widgets** | [**[Widget]**](Widget.md) | Widgets attached to this dashboard | [optional] + + diff --git a/docs/DevicesV2Api.md b/docs/DevicesV2Api.md new file mode 100644 index 0000000..1a0e5e1 --- /dev/null +++ b/docs/DevicesV2Api.md @@ -0,0 +1,562 @@ +# ArduinoIotClient.DevicesV2Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**devicesV2Create**](DevicesV2Api.md#devicesV2Create) | **PUT** /iot/v2/devices | create devices_v2 +[**devicesV2Delete**](DevicesV2Api.md#devicesV2Delete) | **DELETE** /iot/v2/devices/{id} | delete devices_v2 +[**devicesV2GetEvents**](DevicesV2Api.md#devicesV2GetEvents) | **GET** /iot/v2/devices/{id}/events | getEvents devices_v2 +[**devicesV2GetProperties**](DevicesV2Api.md#devicesV2GetProperties) | **GET** /iot/v2/devices/{id}/properties | getProperties devices_v2 +[**devicesV2GetStatusEvents**](DevicesV2Api.md#devicesV2GetStatusEvents) | **GET** /iot/v2/devices/{id}/status | GetStatusEvents devices_v2 +[**devicesV2List**](DevicesV2Api.md#devicesV2List) | **GET** /iot/v2/devices | list devices_v2 +[**devicesV2Show**](DevicesV2Api.md#devicesV2Show) | **GET** /iot/v2/devices/{id} | show devices_v2 +[**devicesV2Timeseries**](DevicesV2Api.md#devicesV2Timeseries) | **GET** /iot/v2/devices/{id}/properties/{pid} | timeseries devices_v2 +[**devicesV2Update**](DevicesV2Api.md#devicesV2Update) | **POST** /iot/v2/devices/{id} | update devices_v2 +[**devicesV2UpdateProperties**](DevicesV2Api.md#devicesV2UpdateProperties) | **PUT** /iot/v2/devices/{id}/properties | updateProperties devices_v2 + + + +## devicesV2Create + +> ArduinoDevicev2 devicesV2Create(createDevicesV2Payload, opts) + +create devices_v2 + +Creates a new device associated to the user. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let createDevicesV2Payload = new ArduinoIotClient.CreateDevicesV2Payload(); // CreateDevicesV2Payload | DeviceV2 describes a device. +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2Create(createDevicesV2Payload, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **createDevicesV2Payload** | [**CreateDevicesV2Payload**](CreateDevicesV2Payload.md)| DeviceV2 describes a device. | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDevicev2**](ArduinoDevicev2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.devicev2+json, application/vnd.goa.error+json + + +## devicesV2Delete + +> devicesV2Delete(id, opts) + +delete devices_v2 + +Removes a device associated to the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2Delete(id, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## devicesV2GetEvents + +> ArduinoDevicev2EventProperties devicesV2GetEvents(id, opts) + +getEvents devices_v2 + +GET device events + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let opts = { + 'limit': 56, // Number | The number of events to select + 'start': "start_example", // String | The time at which to start selecting events + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2GetEvents(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **limit** | **Number**| The number of events to select | [optional] + **start** | **String**| The time at which to start selecting events | [optional] + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDevicev2EventProperties**](ArduinoDevicev2EventProperties.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2.event.properties+json, application/vnd.goa.error+json + + +## devicesV2GetProperties + +> ArduinoDevicev2properties devicesV2GetProperties(id, opts) + +getProperties devices_v2 + +GET device properties + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let opts = { + 'showDeleted': false, // Boolean | If true, shows the soft deleted properties + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2GetProperties(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **showDeleted** | **Boolean**| If true, shows the soft deleted properties | [optional] [default to false] + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDevicev2properties**](ArduinoDevicev2properties.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2properties+json, application/vnd.goa.error+json + + +## devicesV2GetStatusEvents + +> ArduinoDevicev2StatusEvents devicesV2GetStatusEvents(id, opts) + +GetStatusEvents devices_v2 + +GET connection status events + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let opts = { + 'limit': 30, // Number | The number of events to select + 'start': "start_example", // String | The time at which to start selecting events + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2GetStatusEvents(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **limit** | **Number**| The number of events to select | [optional] [default to 30] + **start** | **String**| The time at which to start selecting events | [optional] + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDevicev2StatusEvents**](ArduinoDevicev2StatusEvents.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2.status.events+json, application/vnd.goa.error+json + + +## devicesV2List + +> [ArduinoDevicev2] devicesV2List(opts) + +list devices_v2 + +Returns the list of devices associated to the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let opts = { + 'acrossUserIds': false, // Boolean | If true, returns all the devices + 'serial': "serial_example", // String | Filter by device serial number + 'tags': ["null"], // [String] | Filter by tags + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2List(opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **acrossUserIds** | **Boolean**| If true, returns all the devices | [optional] [default to false] + **serial** | **String**| Filter by device serial number | [optional] + **tags** | [**[String]**](String.md)| Filter by tags | [optional] + **xOrganization** | **String**| | [optional] + +### Return type + +[**[ArduinoDevicev2]**](ArduinoDevicev2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2+json; type=collection, application/vnd.goa.error+json + + +## devicesV2Show + +> ArduinoDevicev2 devicesV2Show(id, opts) + +show devices_v2 + +Returns the device requested by the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2Show(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDevicev2**](ArduinoDevicev2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2+json, application/vnd.goa.error+json + + +## devicesV2Timeseries + +> ArduinoDevicev2propertyvalues devicesV2Timeseries(id, pid, opts) + +timeseries devices_v2 + +GET device properties values in a range of time + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let pid = "pid_example"; // String | The id of the property +let opts = { + 'limit': 56, // Number | The number of properties to select + 'start': "start_example", // String | The time at which to start selecting properties + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2Timeseries(id, pid, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **pid** | **String**| The id of the property | + **limit** | **Number**| The number of properties to select | [optional] + **start** | **String**| The time at which to start selecting properties | [optional] + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDevicev2propertyvalues**](ArduinoDevicev2propertyvalues.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2propertyvalues+json, application/vnd.goa.error+json + + +## devicesV2Update + +> ArduinoDevicev2 devicesV2Update(id, devicev2, opts) + +update devices_v2 + +Updates a device associated to the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let devicev2 = new ArduinoIotClient.Devicev2(); // Devicev2 | DeviceV2 describes a device. +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2Update(id, devicev2, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **devicev2** | [**Devicev2**](Devicev2.md)| DeviceV2 describes a device. | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoDevicev2**](ArduinoDevicev2.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.devicev2+json, application/vnd.goa.error+json + + +## devicesV2UpdateProperties + +> devicesV2UpdateProperties(id, propertiesValues, opts) + +updateProperties devices_v2 + +Update device properties last values + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2Api(); +let id = "id_example"; // String | The id of the device +let propertiesValues = new ArduinoIotClient.PropertiesValues(); // PropertiesValues | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.devicesV2UpdateProperties(id, propertiesValues, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **propertiesValues** | [**PropertiesValues**](PropertiesValues.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + diff --git a/docs/DevicesV2CertsApi.md b/docs/DevicesV2CertsApi.md new file mode 100644 index 0000000..89b07e8 --- /dev/null +++ b/docs/DevicesV2CertsApi.md @@ -0,0 +1,263 @@ +# ArduinoIotClient.DevicesV2CertsApi + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**devicesV2CertsCreate**](DevicesV2CertsApi.md#devicesV2CertsCreate) | **PUT** /iot/v2/devices/{id}/certs | create devices_v2_certs +[**devicesV2CertsDelete**](DevicesV2CertsApi.md#devicesV2CertsDelete) | **DELETE** /iot/v2/devices/{id}/certs/{cid} | delete devices_v2_certs +[**devicesV2CertsList**](DevicesV2CertsApi.md#devicesV2CertsList) | **GET** /iot/v2/devices/{id}/certs | list devices_v2_certs +[**devicesV2CertsShow**](DevicesV2CertsApi.md#devicesV2CertsShow) | **GET** /iot/v2/devices/{id}/certs/{cid} | show devices_v2_certs +[**devicesV2CertsUpdate**](DevicesV2CertsApi.md#devicesV2CertsUpdate) | **POST** /iot/v2/devices/{id}/certs/{cid} | update devices_v2_certs + + + +## devicesV2CertsCreate + +> ArduinoDevicev2Cert devicesV2CertsCreate(id, createDevicesV2CertsPayload) + +create devices_v2_certs + +Creates a new cert associated to a device. The csr is signed and saved in database. The CommonName will be replaced with the device id. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2CertsApi(); +let id = "id_example"; // String | The id of the device +let createDevicesV2CertsPayload = new ArduinoIotClient.CreateDevicesV2CertsPayload(); // CreateDevicesV2CertsPayload | +apiInstance.devicesV2CertsCreate(id, createDevicesV2CertsPayload).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **createDevicesV2CertsPayload** | [**CreateDevicesV2CertsPayload**](CreateDevicesV2CertsPayload.md)| | + +### Return type + +[**ArduinoDevicev2Cert**](ArduinoDevicev2Cert.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.devicev2.cert+json, application/vnd.goa.error+json + + +## devicesV2CertsDelete + +> devicesV2CertsDelete(cid, id) + +delete devices_v2_certs + +Removes a cert associated to a device + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2CertsApi(); +let cid = "cid_example"; // String | The id of the cert +let id = "id_example"; // String | The id of the device +apiInstance.devicesV2CertsDelete(cid, id).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cid** | **String**| The id of the cert | + **id** | **String**| The id of the device | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## devicesV2CertsList + +> [ArduinoDevicev2Cert] devicesV2CertsList(id) + +list devices_v2_certs + +Returns the list of certs associated to the device + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2CertsApi(); +let id = "id_example"; // String | The id of the device +apiInstance.devicesV2CertsList(id).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + +### Return type + +[**[ArduinoDevicev2Cert]**](ArduinoDevicev2Cert.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2.cert+json; type=collection, application/vnd.goa.error+json + + +## devicesV2CertsShow + +> ArduinoDevicev2Cert devicesV2CertsShow(cid, id) + +show devices_v2_certs + +Returns the cert requested by the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2CertsApi(); +let cid = "cid_example"; // String | The id of the cert +let id = "id_example"; // String | The id of the device +apiInstance.devicesV2CertsShow(cid, id).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cid** | **String**| The id of the cert | + **id** | **String**| The id of the device | + +### Return type + +[**ArduinoDevicev2Cert**](ArduinoDevicev2Cert.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2.cert+json, application/vnd.goa.error+json + + +## devicesV2CertsUpdate + +> ArduinoDevicev2Cert devicesV2CertsUpdate(cid, id, devicev2Cert) + +update devices_v2_certs + +Updates a cert associated to a device. The csr is signed and saved in database. The CommonName will be replaced with the device id. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2CertsApi(); +let cid = "cid_example"; // String | The id of the cert +let id = "id_example"; // String | The id of the device +let devicev2Cert = new ArduinoIotClient.Devicev2Cert(); // Devicev2Cert | +apiInstance.devicesV2CertsUpdate(cid, id, devicev2Cert).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **cid** | **String**| The id of the cert | + **id** | **String**| The id of the device | + **devicev2Cert** | [**Devicev2Cert**](Devicev2Cert.md)| | + +### Return type + +[**ArduinoDevicev2Cert**](ArduinoDevicev2Cert.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.devicev2.cert+json, application/vnd.goa.error+json + diff --git a/docs/DevicesV2OtaApi.md b/docs/DevicesV2OtaApi.md new file mode 100644 index 0000000..400c5b5 --- /dev/null +++ b/docs/DevicesV2OtaApi.md @@ -0,0 +1,167 @@ +# ArduinoIotClient.DevicesV2OtaApi + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**devicesV2OtaSend**](DevicesV2OtaApi.md#devicesV2OtaSend) | **PUT** /iot/v2/devices/{id}/ota | send devices_v2_ota +[**devicesV2OtaUpload**](DevicesV2OtaApi.md#devicesV2OtaUpload) | **POST** /iot/v2/devices/{id}/ota | upload devices_v2_ota +[**devicesV2OtaUrl**](DevicesV2OtaApi.md#devicesV2OtaUrl) | **POST** /iot/v2/devices/{id}/ota/url | url devices_v2_ota + + + +## devicesV2OtaSend + +> devicesV2OtaSend(id, devicev2Otabinaryurl) + +send devices_v2_ota + +Send a binary url to a device + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2OtaApi(); +let id = "id_example"; // String | The id of the device +let devicev2Otabinaryurl = new ArduinoIotClient.Devicev2Otabinaryurl(); // Devicev2Otabinaryurl | +apiInstance.devicesV2OtaSend(id, devicev2Otabinaryurl).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **devicev2Otabinaryurl** | [**Devicev2Otabinaryurl**](Devicev2Otabinaryurl.md)| | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + + +## devicesV2OtaUpload + +> ArduinoDevicev2Otaupload devicesV2OtaUpload(id, otaFile, opts) + +upload devices_v2_ota + +Upload a binary and send it to a device + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2OtaApi(); +let id = "id_example"; // String | The id of the device +let otaFile = "/path/to/file"; // File | OTA file +let opts = { + 'async': true, // Boolean | If false, wait for the full OTA process, until it gets a result from the device + 'expireInMins': 10 // Number | Binary expire time in minutes, default 10 mins +}; +apiInstance.devicesV2OtaUpload(id, otaFile, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **otaFile** | **File**| OTA file | + **async** | **Boolean**| If false, wait for the full OTA process, until it gets a result from the device | [optional] [default to true] + **expireInMins** | **Number**| Binary expire time in minutes, default 10 mins | [optional] [default to 10] + +### Return type + +[**ArduinoDevicev2Otaupload**](ArduinoDevicev2Otaupload.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: multipart/form-data +- **Accept**: application/vnd.arduino.devicev2.otaupload+json, application/vnd.goa.error+json + + +## devicesV2OtaUrl + +> devicesV2OtaUrl(id, devicev2Otaurlpyalod) + +url devices_v2_ota + +Generate a url for downloading a binary + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2OtaApi(); +let id = "id_example"; // String | The id of the device +let devicev2Otaurlpyalod = new ArduinoIotClient.Devicev2Otaurlpyalod(); // Devicev2Otaurlpyalod | +apiInstance.devicesV2OtaUrl(id, devicev2Otaurlpyalod).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **devicev2Otaurlpyalod** | [**Devicev2Otaurlpyalod**](Devicev2Otaurlpyalod.md)| | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + diff --git a/docs/DevicesV2PassApi.md b/docs/DevicesV2PassApi.md new file mode 100644 index 0000000..07bf379 --- /dev/null +++ b/docs/DevicesV2PassApi.md @@ -0,0 +1,212 @@ +# ArduinoIotClient.DevicesV2PassApi + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**devicesV2PassCheck**](DevicesV2PassApi.md#devicesV2PassCheck) | **POST** /iot/v2/devices/{id}/pass | check devices_v2_pass +[**devicesV2PassDelete**](DevicesV2PassApi.md#devicesV2PassDelete) | **DELETE** /iot/v2/devices/{id}/pass | delete devices_v2_pass +[**devicesV2PassGet**](DevicesV2PassApi.md#devicesV2PassGet) | **GET** /iot/v2/devices/{id}/pass | get devices_v2_pass +[**devicesV2PassSet**](DevicesV2PassApi.md#devicesV2PassSet) | **PUT** /iot/v2/devices/{id}/pass | set devices_v2_pass + + + +## devicesV2PassCheck + +> devicesV2PassCheck(id, checkDevicesV2PassPayload) + +check devices_v2_pass + +Check if the password matches. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2PassApi(); +let id = "id_example"; // String | The id of the device +let checkDevicesV2PassPayload = new ArduinoIotClient.CheckDevicesV2PassPayload(); // CheckDevicesV2PassPayload | +apiInstance.devicesV2PassCheck(id, checkDevicesV2PassPayload).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **checkDevicesV2PassPayload** | [**CheckDevicesV2PassPayload**](CheckDevicesV2PassPayload.md)| | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + + +## devicesV2PassDelete + +> devicesV2PassDelete(id) + +delete devices_v2_pass + +Removes the password for the device. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2PassApi(); +let id = "id_example"; // String | The id of the device +apiInstance.devicesV2PassDelete(id).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## devicesV2PassGet + +> ArduinoDevicev2Pass devicesV2PassGet(id, opts) + +get devices_v2_pass + +Returns whether the password for this device is set or not. It doesn't return the password. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2PassApi(); +let id = "id_example"; // String | The id of the device +let opts = { + 'suggestedPassword': false // Boolean | If true, return a suggested password +}; +apiInstance.devicesV2PassGet(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **suggestedPassword** | **Boolean**| If true, return a suggested password | [optional] [default to false] + +### Return type + +[**ArduinoDevicev2Pass**](ArduinoDevicev2Pass.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.devicev2.pass+json, application/vnd.goa.error+json + + +## devicesV2PassSet + +> ArduinoDevicev2Pass devicesV2PassSet(id, devicev2Pass) + +set devices_v2_pass + +Sets the password for the device. It can never be read back. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2PassApi(); +let id = "id_example"; // String | The id of the device +let devicev2Pass = new ArduinoIotClient.Devicev2Pass(); // Devicev2Pass | +apiInstance.devicesV2PassSet(id, devicev2Pass).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **devicev2Pass** | [**Devicev2Pass**](Devicev2Pass.md)| | + +### Return type + +[**ArduinoDevicev2Pass**](ArduinoDevicev2Pass.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.devicev2.pass+json, application/vnd.goa.error+json + diff --git a/docs/DevicesV2TagsApi.md b/docs/DevicesV2TagsApi.md new file mode 100644 index 0000000..d82d054 --- /dev/null +++ b/docs/DevicesV2TagsApi.md @@ -0,0 +1,159 @@ +# ArduinoIotClient.DevicesV2TagsApi + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**devicesV2TagsDelete**](DevicesV2TagsApi.md#devicesV2TagsDelete) | **DELETE** /iot/v2/devices/{id}/tags/{key} | delete devices_v2_tags +[**devicesV2TagsList**](DevicesV2TagsApi.md#devicesV2TagsList) | **GET** /iot/v2/devices/{id}/tags | list devices_v2_tags +[**devicesV2TagsUpsert**](DevicesV2TagsApi.md#devicesV2TagsUpsert) | **PUT** /iot/v2/devices/{id}/tags | upsert devices_v2_tags + + + +## devicesV2TagsDelete + +> devicesV2TagsDelete(id, key) + +delete devices_v2_tags + +Delete a tag associated to the device given its key. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2TagsApi(); +let id = "id_example"; // String | The id of the device +let key = "key_example"; // String | The key of the tag +apiInstance.devicesV2TagsDelete(id, key).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **key** | **String**| The key of the tag | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## devicesV2TagsList + +> ArduinoTags devicesV2TagsList(id) + +list devices_v2_tags + +List tags associated to the device. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2TagsApi(); +let id = "id_example"; // String | The id of the device +apiInstance.devicesV2TagsList(id).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + +### Return type + +[**ArduinoTags**](ArduinoTags.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.tags+json, application/vnd.goa.error+json + + +## devicesV2TagsUpsert + +> devicesV2TagsUpsert(id, tag) + +upsert devices_v2_tags + +Creates or updates a tag associated to the device. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.DevicesV2TagsApi(); +let id = "id_example"; // String | The id of the device +let tag = new ArduinoIotClient.Tag(); // Tag | +apiInstance.devicesV2TagsUpsert(id, tag).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the device | + **tag** | [**Tag**](Tag.md)| | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + diff --git a/docs/Devicev2.md b/docs/Devicev2.md new file mode 100644 index 0000000..612e61f --- /dev/null +++ b/docs/Devicev2.md @@ -0,0 +1,79 @@ +# ArduinoIotClient.Devicev2 + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**connectionType** | **String** | The type of the connections selected by the user when multiple connections are available | [optional] +**fqbn** | **String** | The fully qualified board name | [optional] +**name** | **String** | The friendly name of the device | [optional] +**serial** | **String** | The serial uuid of the device | [optional] +**type** | **String** | The type of the device | [optional] +**userId** | **String** | The user_id associated to the device. If absent it will be inferred from the authentication header | [optional] +**wifiFwVersion** | **String** | The version of the NINA/WIFI101 firmware running on the device | [optional] + + + +## Enum: ConnectionTypeEnum + + +* `wifi` (value: `"wifi"`) + +* `eth` (value: `"eth"`) + +* `wifiandsecret` (value: `"wifiandsecret"`) + +* `gsm` (value: `"gsm"`) + +* `nb` (value: `"nb"`) + +* `lora` (value: `"lora"`) + +* `catm1` (value: `"catm1"`) + +* `cellular` (value: `"cellular"`) + + + + + +## Enum: TypeEnum + + +* `mkrwifi1010` (value: `"mkrwifi1010"`) + +* `mkr1000` (value: `"mkr1000"`) + +* `nano_33_iot` (value: `"nano_33_iot"`) + +* `mkrgsm1400` (value: `"mkrgsm1400"`) + +* `mkrnb1500` (value: `"mkrnb1500"`) + +* `login_and_secretkey_wifi` (value: `"login_and_secretkey_wifi"`) + +* `envie_m7` (value: `"envie_m7"`) + +* `nanorp2040connect` (value: `"nanorp2040connect"`) + +* `nicla_vision` (value: `"nicla_vision"`) + +* `phone` (value: `"phone"`) + +* `portenta_x8` (value: `"portenta_x8"`) + +* `opta` (value: `"opta"`) + +* `giga` (value: `"giga"`) + +* `generic_device_secretkey` (value: `"generic_device_secretkey"`) + +* `portenta_c33` (value: `"portenta_c33"`) + +* `unor4wifi` (value: `"unor4wifi"`) + +* `nano_nora` (value: `"nano_nora"`) + + + + diff --git a/docs/Devicev2Cert.md b/docs/Devicev2Cert.md new file mode 100644 index 0000000..49ddd95 --- /dev/null +++ b/docs/Devicev2Cert.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.Devicev2Cert + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ca** | **String** | The Certification Authority you want to use | [optional] +**csr** | **String** | The certificate request in pem format | [optional] +**enabled** | **Boolean** | Whether the certificate is enabled | [optional] + + diff --git a/docs/Devicev2Otabinaryurl.md b/docs/Devicev2Otabinaryurl.md new file mode 100644 index 0000000..5cd2910 --- /dev/null +++ b/docs/Devicev2Otabinaryurl.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.Devicev2Otabinaryurl + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**async** | **Boolean** | If false, wait for the full OTA process, until it gets a result from the device | [optional] [default to true] +**binaryKey** | **String** | The object key of the binary | +**expireInMins** | **Number** | Binary expire time in minutes, default 10 mins | [optional] [default to 10] + + diff --git a/docs/Devicev2Otaurlpyalod.md b/docs/Devicev2Otaurlpyalod.md new file mode 100644 index 0000000..5b708e5 --- /dev/null +++ b/docs/Devicev2Otaurlpyalod.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.Devicev2Otaurlpyalod + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**binaryKey** | **String** | The object key of the binary | [optional] +**sha256** | **String** | The sha256 of the binary | [optional] +**userId** | **String** | The id of the user who is requesting the url | [optional] + + diff --git a/docs/Devicev2Pass.md b/docs/Devicev2Pass.md new file mode 100644 index 0000000..72325ae --- /dev/null +++ b/docs/Devicev2Pass.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.Devicev2Pass + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**password** | **String** | The password for the device | [optional] + + diff --git a/docs/Error.md b/docs/Error.md new file mode 100644 index 0000000..2773248 --- /dev/null +++ b/docs/Error.md @@ -0,0 +1,13 @@ +# ArduinoIotClient.Error + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **String** | an application-specific error code, expressed as a string value. | [optional] +**detail** | **String** | a human-readable explanation specific to this occurrence of the problem. | [optional] +**id** | **String** | a unique identifier for this particular occurrence of the problem. | [optional] +**meta** | **{String: Object}** | a meta object containing non-standard meta-information about the error. | [optional] +**status** | **Number** | the HTTP status code applicable to this problem | [optional] + + diff --git a/docs/HistoricDataRequest.md b/docs/HistoricDataRequest.md new file mode 100644 index 0000000..3d740bb --- /dev/null +++ b/docs/HistoricDataRequest.md @@ -0,0 +1,11 @@ +# ArduinoIotClient.HistoricDataRequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**from** | **Date** | Get data starting from this date | +**properties** | **[String]** | IDs of properties | +**to** | **Date** | Get data up to this date | + + diff --git a/docs/LoraDevicesV1Api.md b/docs/LoraDevicesV1Api.md new file mode 100644 index 0000000..18e9437 --- /dev/null +++ b/docs/LoraDevicesV1Api.md @@ -0,0 +1,57 @@ +# ArduinoIotClient.LoraDevicesV1Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**loraDevicesV1Create**](LoraDevicesV1Api.md#loraDevicesV1Create) | **PUT** /iot/v1/lora-devices/ | create lora_devices_v1 + + + +## loraDevicesV1Create + +> ArduinoLoradevicev1 loraDevicesV1Create(createLoraDevicesV1Payload, opts) + +create lora_devices_v1 + +Create a new lora device. Its info are saved on our database, and on the lora provider network. Creates a device_v2 automatically + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; + +let apiInstance = new ArduinoIotClient.LoraDevicesV1Api(); +let createLoraDevicesV1Payload = new ArduinoIotClient.CreateLoraDevicesV1Payload(); // CreateLoraDevicesV1Payload | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.loraDevicesV1Create(createLoraDevicesV1Payload, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **createLoraDevicesV1Payload** | [**CreateLoraDevicesV1Payload**](CreateLoraDevicesV1Payload.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoLoradevicev1**](ArduinoLoradevicev1.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.loradevicev1+json + diff --git a/docs/LoraFreqPlanV1Api.md b/docs/LoraFreqPlanV1Api.md new file mode 100644 index 0000000..61af766 --- /dev/null +++ b/docs/LoraFreqPlanV1Api.md @@ -0,0 +1,49 @@ +# ArduinoIotClient.LoraFreqPlanV1Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**loraFreqPlanV1List**](LoraFreqPlanV1Api.md#loraFreqPlanV1List) | **GET** /iot/v1/lora-freq-plans/ | list lora_freq_plan_v1 + + + +## loraFreqPlanV1List + +> ArduinoLorafreqplansv1 loraFreqPlanV1List() + +list lora_freq_plan_v1 + +List the lora frequency plans supported + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; + +let apiInstance = new ArduinoIotClient.LoraFreqPlanV1Api(); +apiInstance.loraFreqPlanV1List().then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ArduinoLorafreqplansv1**](ArduinoLorafreqplansv1.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.lorafreqplansv1+json, application/vnd.goa.error+json + diff --git a/docs/NetworkCredentialsV1Api.md b/docs/NetworkCredentialsV1Api.md new file mode 100644 index 0000000..7cec289 --- /dev/null +++ b/docs/NetworkCredentialsV1Api.md @@ -0,0 +1,102 @@ +# ArduinoIotClient.NetworkCredentialsV1Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**networkCredentialsV1Show**](NetworkCredentialsV1Api.md#networkCredentialsV1Show) | **GET** /iot/v1/network_credentials/{type} | show network_credentials_v1 +[**networkCredentialsV1ShowByDevice**](NetworkCredentialsV1Api.md#networkCredentialsV1ShowByDevice) | **GET** /iot/v1/network_credentials/{type}/connections | showByDevice network_credentials_v1 + + + +## networkCredentialsV1Show + +> [ArduinoCredentialsv1] networkCredentialsV1Show(type, opts) + +show network_credentials_v1 + +Show required network credentials depending on device type + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; + +let apiInstance = new ArduinoIotClient.NetworkCredentialsV1Api(); +let type = "type_example"; // String | Device type +let opts = { + 'connection': "connection_example" // String | Connection used by the device +}; +apiInstance.networkCredentialsV1Show(type, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **type** | **String**| Device type | + **connection** | **String**| Connection used by the device | [optional] + +### Return type + +[**[ArduinoCredentialsv1]**](ArduinoCredentialsv1.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.credentialsv1+json; type=collection, application/vnd.goa.error+json + + +## networkCredentialsV1ShowByDevice + +> networkCredentialsV1ShowByDevice(type) + +showByDevice network_credentials_v1 + +Show available connection types depending on device type + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; + +let apiInstance = new ArduinoIotClient.NetworkCredentialsV1Api(); +let type = "type_example"; // String | Device type +apiInstance.networkCredentialsV1ShowByDevice(type).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **type** | **String**| Device type | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json, application/vnd.goa.error+json + diff --git a/docs/Override.md b/docs/Override.md new file mode 100644 index 0000000..9d0644d --- /dev/null +++ b/docs/Override.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.Override + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**newThingId** | **String** | The id of the new thing to link | +**oldThingId** | **String** | The id of the thing to override | + + diff --git a/docs/PropertiesV2Api.md b/docs/PropertiesV2Api.md new file mode 100644 index 0000000..0223161 --- /dev/null +++ b/docs/PropertiesV2Api.md @@ -0,0 +1,411 @@ +# ArduinoIotClient.PropertiesV2Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**propertiesV2Create**](PropertiesV2Api.md#propertiesV2Create) | **PUT** /iot/v2/things/{id}/properties | create properties_v2 +[**propertiesV2Delete**](PropertiesV2Api.md#propertiesV2Delete) | **DELETE** /iot/v2/things/{id}/properties/{pid} | delete properties_v2 +[**propertiesV2List**](PropertiesV2Api.md#propertiesV2List) | **GET** /iot/v2/things/{id}/properties | list properties_v2 +[**propertiesV2Publish**](PropertiesV2Api.md#propertiesV2Publish) | **PUT** /iot/v2/things/{id}/properties/{pid}/publish | publish properties_v2 +[**propertiesV2Show**](PropertiesV2Api.md#propertiesV2Show) | **GET** /iot/v2/things/{id}/properties/{pid} | show properties_v2 +[**propertiesV2Timeseries**](PropertiesV2Api.md#propertiesV2Timeseries) | **GET** /iot/v2/things/{id}/properties/{pid}/timeseries | timeseries properties_v2 +[**propertiesV2Update**](PropertiesV2Api.md#propertiesV2Update) | **POST** /iot/v2/things/{id}/properties/{pid} | update properties_v2 + + + +## propertiesV2Create + +> ArduinoProperty propertiesV2Create(id, property, opts) + +create properties_v2 + +Creates a new property associated to a thing + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertiesV2Api(); +let id = "id_example"; // String | The id of the thing +let property = new ArduinoIotClient.Property(); // Property | PropertyPayload describes a property of a thing. No field is mandatory +let opts = { + 'xOrganization': "xOrganization_example" // String | The id of the organization +}; +apiInstance.propertiesV2Create(id, property, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **property** | [**Property**](Property.md)| PropertyPayload describes a property of a thing. No field is mandatory | + **xOrganization** | **String**| The id of the organization | [optional] + +### Return type + +[**ArduinoProperty**](ArduinoProperty.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.property+json, application/vnd.goa.error+json + + +## propertiesV2Delete + +> propertiesV2Delete(id, pid, opts) + +delete properties_v2 + +Removes a property associated to a thing + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertiesV2Api(); +let id = "id_example"; // String | The id of the thing +let pid = "pid_example"; // String | The id of the property +let opts = { + 'force': false, // Boolean | If true, hard delete the property + 'xOrganization': "xOrganization_example" // String | The id of the organization +}; +apiInstance.propertiesV2Delete(id, pid, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **pid** | **String**| The id of the property | + **force** | **Boolean**| If true, hard delete the property | [optional] [default to false] + **xOrganization** | **String**| The id of the organization | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## propertiesV2List + +> [ArduinoProperty] propertiesV2List(id, opts) + +list properties_v2 + +Returns the list of properties associated to the thing + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertiesV2Api(); +let id = "id_example"; // String | The id of the thing +let opts = { + 'showDeleted': false, // Boolean | If true, shows the soft deleted properties + 'xOrganization': "xOrganization_example" // String | The id of the organization +}; +apiInstance.propertiesV2List(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **showDeleted** | **Boolean**| If true, shows the soft deleted properties | [optional] [default to false] + **xOrganization** | **String**| The id of the organization | [optional] + +### Return type + +[**[ArduinoProperty]**](ArduinoProperty.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.property+json; type=collection, application/vnd.goa.error+json + + +## propertiesV2Publish + +> propertiesV2Publish(id, pid, propertyValue, opts) + +publish properties_v2 + +Publish a property value to MQTT + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertiesV2Api(); +let id = "id_example"; // String | The id of the thing +let pid = "pid_example"; // String | The id of the property +let propertyValue = new ArduinoIotClient.PropertyValue(); // PropertyValue | PropertyValuePayload describes a property value +let opts = { + 'xOrganization': "xOrganization_example" // String | The id of the organization +}; +apiInstance.propertiesV2Publish(id, pid, propertyValue, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **pid** | **String**| The id of the property | + **propertyValue** | [**PropertyValue**](PropertyValue.md)| PropertyValuePayload describes a property value | + **xOrganization** | **String**| The id of the organization | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + + +## propertiesV2Show + +> ArduinoProperty propertiesV2Show(id, pid, opts) + +show properties_v2 + +Returns the property requested by the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertiesV2Api(); +let id = "id_example"; // String | The id of the thing +let pid = "pid_example"; // String | The id of the property +let opts = { + 'showDeleted': false, // Boolean | If true, shows the soft deleted properties + 'xOrganization': "xOrganization_example" // String | The id of the organization +}; +apiInstance.propertiesV2Show(id, pid, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **pid** | **String**| The id of the property | + **showDeleted** | **Boolean**| If true, shows the soft deleted properties | [optional] [default to false] + **xOrganization** | **String**| The id of the organization | [optional] + +### Return type + +[**ArduinoProperty**](ArduinoProperty.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.property+json, application/vnd.goa.error+json + + +## propertiesV2Timeseries + +> ArduinoTimeseriesmedia propertiesV2Timeseries(id, pid, opts) + +timeseries properties_v2 + +Get numerical property's historic data binned on a specified time interval (note: the total number of data points should NOT be greater than 1000 otherwise the result will be truncated) + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertiesV2Api(); +let id = "id_example"; // String | The id of the thing +let pid = "pid_example"; // String | ID of a numerical property +let opts = { + 'aggregation': "aggregation_example", // String | Samples aggregation statistic. Supported aggregations AVG|MAX|MIN|COUNT|SUM|PCT_99|PCT_95|PCT_90|PCT_75|PCT_50|PCT_15|PCT_5 + 'desc': false, // Boolean | Whether data's ordering (by time) should be descending + 'from': "from_example", // String | Get data with a timestamp >= to this date (default: 2 weeks ago, min: 1842-01-01T00:00:00Z, max: 2242-01-01T00:00:00Z) + 'interval': 56, // Number | Binning interval in seconds (defaut: the smallest possible value compatibly with the limit of 1000 data points in the response) + 'to': "to_example", // String | Get data with a timestamp < to this date (default: now, min: 1842-01-01T00:00:00Z, max: 2242-01-01T00:00:00Z) + 'xOrganization': "xOrganization_example" // String | The id of the organization +}; +apiInstance.propertiesV2Timeseries(id, pid, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **pid** | **String**| ID of a numerical property | + **aggregation** | **String**| Samples aggregation statistic. Supported aggregations AVG|MAX|MIN|COUNT|SUM|PCT_99|PCT_95|PCT_90|PCT_75|PCT_50|PCT_15|PCT_5 | [optional] + **desc** | **Boolean**| Whether data's ordering (by time) should be descending | [optional] [default to false] + **from** | **String**| Get data with a timestamp >= to this date (default: 2 weeks ago, min: 1842-01-01T00:00:00Z, max: 2242-01-01T00:00:00Z) | [optional] + **interval** | **Number**| Binning interval in seconds (defaut: the smallest possible value compatibly with the limit of 1000 data points in the response) | [optional] + **to** | **String**| Get data with a timestamp < to this date (default: now, min: 1842-01-01T00:00:00Z, max: 2242-01-01T00:00:00Z) | [optional] + **xOrganization** | **String**| The id of the organization | [optional] + +### Return type + +[**ArduinoTimeseriesmedia**](ArduinoTimeseriesmedia.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.timeseriesmedia+json, application/vnd.goa.error+json + + +## propertiesV2Update + +> ArduinoProperty propertiesV2Update(id, pid, property, opts) + +update properties_v2 + +Updates a property associated to a thing + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertiesV2Api(); +let id = "id_example"; // String | The id of the thing +let pid = "pid_example"; // String | The id of the property +let property = new ArduinoIotClient.Property(); // Property | PropertyPayload describes a property of a thing. No field is mandatory +let opts = { + 'xOrganization': "xOrganization_example" // String | The id of the organization +}; +apiInstance.propertiesV2Update(id, pid, property, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **pid** | **String**| The id of the property | + **property** | [**Property**](Property.md)| PropertyPayload describes a property of a thing. No field is mandatory | + **xOrganization** | **String**| The id of the organization | [optional] + +### Return type + +[**ArduinoProperty**](ArduinoProperty.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.property+json, application/vnd.goa.error+json + diff --git a/docs/PropertiesValue.md b/docs/PropertiesValue.md new file mode 100644 index 0000000..57e0d8a --- /dev/null +++ b/docs/PropertiesValue.md @@ -0,0 +1,26 @@ +# ArduinoIotClient.PropertiesValue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | The name of the property | +**type** | **String** | The type of the property | [default to 'infer'] +**value** | **Object** | The last value of the property | + + + +## Enum: TypeEnum + + +* `infer` (value: `"infer"`) + +* `base64` (value: `"base64"`) + +* `hex` (value: `"hex"`) + +* `json` (value: `"json"`) + + + + diff --git a/docs/PropertiesValues.md b/docs/PropertiesValues.md new file mode 100644 index 0000000..0c41c52 --- /dev/null +++ b/docs/PropertiesValues.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.PropertiesValues + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**input** | **Boolean** | If true, send property values to device's input topic. | [optional] [default to false] +**properties** | [**[PropertiesValue]**](PropertiesValue.md) | | + + diff --git a/docs/Property.md b/docs/Property.md new file mode 100644 index 0000000..f25cab8 --- /dev/null +++ b/docs/Property.md @@ -0,0 +1,311 @@ +# ArduinoIotClient.Property + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**maxValue** | **Number** | Maximum value of this property | [optional] +**minValue** | **Number** | Minimum value of this property | [optional] +**name** | **String** | The friendly name of the property | +**permission** | **String** | The permission of the property | +**persist** | **Boolean** | If true, data will persist into a timeseries database | [optional] [default to true] +**tag** | **Number** | The integer id of the property | [optional] +**type** | **String** | The type of the property | +**updateParameter** | **Number** | The update frequency in seconds, or the amount of the property has to change in order to trigger an update | [optional] +**updateStrategy** | **String** | The update strategy for the property value | +**variableName** | **String** | The sketch variable name of the property | [optional] + + + +## Enum: PermissionEnum + + +* `ONLY` (value: `"READ_ONLY"`) + +* `WRITE` (value: `"READ_WRITE"`) + + + + + +## Enum: TypeEnum + + +* `ANALOG` (value: `"ANALOG"`) + +* `CHARSTRING` (value: `"CHARSTRING"`) + +* `FLOAT` (value: `"FLOAT"`) + +* `INT` (value: `"INT"`) + +* `LENGHT_C` (value: `"LENGHT_C"`) + +* `LENGHT_I` (value: `"LENGHT_I"`) + +* `LENGHT_M` (value: `"LENGHT_M"`) + +* `PERCENTAGE` (value: `"PERCENTAGE"`) + +* `STATUS` (value: `"STATUS"`) + +* `TEMPERATURE_C` (value: `"TEMPERATURE_C"`) + +* `TEMPERATURE_F` (value: `"TEMPERATURE_F"`) + +* `METER` (value: `"METER"`) + +* `KILOGRAM` (value: `"KILOGRAM"`) + +* `GRAM` (value: `"GRAM"`) + +* `SECOND` (value: `"SECOND"`) + +* `AMPERE` (value: `"AMPERE"`) + +* `KELVIN` (value: `"KELVIN"`) + +* `CANDELA` (value: `"CANDELA"`) + +* `MOLE` (value: `"MOLE"`) + +* `HERTZ` (value: `"HERTZ"`) + +* `RADIAN` (value: `"RADIAN"`) + +* `STERADIAN` (value: `"STERADIAN"`) + +* `NEWTON` (value: `"NEWTON"`) + +* `PASCAL` (value: `"PASCAL"`) + +* `JOULE` (value: `"JOULE"`) + +* `WATT` (value: `"WATT"`) + +* `COULOMB` (value: `"COULOMB"`) + +* `VOLT` (value: `"VOLT"`) + +* `FARAD` (value: `"FARAD"`) + +* `OHM` (value: `"OHM"`) + +* `SIEMENS` (value: `"SIEMENS"`) + +* `WEBER` (value: `"WEBER"`) + +* `TESLA` (value: `"TESLA"`) + +* `HENRY` (value: `"HENRY"`) + +* `DEGREES_CELSIUS` (value: `"DEGREES_CELSIUS"`) + +* `LUMEN` (value: `"LUMEN"`) + +* `LUX` (value: `"LUX"`) + +* `BECQUEREL` (value: `"BECQUEREL"`) + +* `GRAY` (value: `"GRAY"`) + +* `SIEVERT` (value: `"SIEVERT"`) + +* `KATAL` (value: `"KATAL"`) + +* `SQUARE_METER` (value: `"SQUARE_METER"`) + +* `CUBIC_METER` (value: `"CUBIC_METER"`) + +* `LITER` (value: `"LITER"`) + +* `METER_PER_SECOND` (value: `"METER_PER_SECOND"`) + +* `METER_PER_SQUARE_SECOND` (value: `"METER_PER_SQUARE_SECOND"`) + +* `CUBIC_METER_PER_SECOND` (value: `"CUBIC_METER_PER_SECOND"`) + +* `LITER_PER_SECOND` (value: `"LITER_PER_SECOND"`) + +* `WATT_PER_SQUARE_METER` (value: `"WATT_PER_SQUARE_METER"`) + +* `CANDELA_PER_SQUARE_METER` (value: `"CANDELA_PER_SQUARE_METER"`) + +* `BIT` (value: `"BIT"`) + +* `BIT_PER_SECOND` (value: `"BIT_PER_SECOND"`) + +* `DEGREES_LATITUDE` (value: `"DEGREES_LATITUDE"`) + +* `DEGREES_LONGITUDE` (value: `"DEGREES_LONGITUDE"`) + +* `PH_VALUE` (value: `"PH_VALUE"`) + +* `DECIBEL` (value: `"DECIBEL"`) + +* `DECIBEL_1W` (value: `"DECIBEL_1W"`) + +* `BEL` (value: `"BEL"`) + +* `COUNT` (value: `"COUNT"`) + +* `RATIO_DIV` (value: `"RATIO_DIV"`) + +* `RATIO_MOD` (value: `"RATIO_MOD"`) + +* `PERCENTAGE_RELATIVE_HUMIDITY` (value: `"PERCENTAGE_RELATIVE_HUMIDITY"`) + +* `PERCENTAGE_BATTERY_LEVEL` (value: `"PERCENTAGE_BATTERY_LEVEL"`) + +* `SECONDS_BATTERY_LEVEL` (value: `"SECONDS_BATTERY_LEVEL"`) + +* `EVENT_RATE_SECOND` (value: `"EVENT_RATE_SECOND"`) + +* `EVENT_RATE_MINUTE` (value: `"EVENT_RATE_MINUTE"`) + +* `HEART_RATE` (value: `"HEART_RATE"`) + +* `HEART_BEATS` (value: `"HEART_BEATS"`) + +* `SIEMENS_PER_METER` (value: `"SIEMENS_PER_METER"`) + +* `LOCATION` (value: `"LOCATION"`) + +* `COLOR_HSB` (value: `"COLOR_HSB"`) + +* `COLOR_RGB` (value: `"COLOR_RGB"`) + +* `GENERIC_COMPLEX_PROPERTY` (value: `"GENERIC_COMPLEX_PROPERTY"`) + +* `HOME_COLORED_LIGHT` (value: `"HOME_COLORED_LIGHT"`) + +* `HOME_DIMMED_LIGHT` (value: `"HOME_DIMMED_LIGHT"`) + +* `HOME_LIGHT` (value: `"HOME_LIGHT"`) + +* `HOME_CONTACT_SENSOR` (value: `"HOME_CONTACT_SENSOR"`) + +* `HOME_MOTION_SENSOR` (value: `"HOME_MOTION_SENSOR"`) + +* `HOME_SMART_PLUG` (value: `"HOME_SMART_PLUG"`) + +* `HOME_TEMPERATURE` (value: `"HOME_TEMPERATURE"`) + +* `HOME_TEMPERATURE_C` (value: `"HOME_TEMPERATURE_C"`) + +* `HOME_TEMPERATURE_F` (value: `"HOME_TEMPERATURE_F"`) + +* `HOME_SWITCH` (value: `"HOME_SWITCH"`) + +* `HOME_TELEVISION` (value: `"HOME_TELEVISION"`) + +* `GOOGLE_HOME_COLORED_LIGHT` (value: `"GOOGLE_HOME_COLORED_LIGHT"`) + +* `GOOGLE_HOME_DIMMED_LIGHT` (value: `"GOOGLE_HOME_DIMMED_LIGHT"`) + +* `GOOGLE_HOME_LIGHT` (value: `"GOOGLE_HOME_LIGHT"`) + +* `GOOGLE_HOME_CONTACT_SENSOR` (value: `"GOOGLE_HOME_CONTACT_SENSOR"`) + +* `GOOGLE_HOME_MOTION_SENSOR` (value: `"GOOGLE_HOME_MOTION_SENSOR"`) + +* `GOOGLE_HOME_SMART_PLUG` (value: `"GOOGLE_HOME_SMART_PLUG"`) + +* `GOOGLE_HOME_TEMPERATURE` (value: `"GOOGLE_HOME_TEMPERATURE"`) + +* `GOOGLE_HOME_TEMPERATURE_C` (value: `"GOOGLE_HOME_TEMPERATURE_C"`) + +* `GOOGLE_HOME_TEMPERATURE_F` (value: `"GOOGLE_HOME_TEMPERATURE_F"`) + +* `GOOGLE_HOME_SWITCH` (value: `"GOOGLE_HOME_SWITCH"`) + +* `SMART_HOME_COLORED_LIGHT` (value: `"SMART_HOME_COLORED_LIGHT"`) + +* `SMART_HOME_DIMMED_LIGHT` (value: `"SMART_HOME_DIMMED_LIGHT"`) + +* `SMART_HOME_LIGHT` (value: `"SMART_HOME_LIGHT"`) + +* `SMART_HOME_CONTACT_SENSOR` (value: `"SMART_HOME_CONTACT_SENSOR"`) + +* `SMART_HOME_MOTION_SENSOR` (value: `"SMART_HOME_MOTION_SENSOR"`) + +* `SMART_HOME_SMART_PLUG` (value: `"SMART_HOME_SMART_PLUG"`) + +* `SMART_HOME_TEMPERATURE` (value: `"SMART_HOME_TEMPERATURE"`) + +* `SMART_HOME_TEMPERATURE_C` (value: `"SMART_HOME_TEMPERATURE_C"`) + +* `SMART_HOME_TEMPERATURE_F` (value: `"SMART_HOME_TEMPERATURE_F"`) + +* `SMART_HOME_SWITCH` (value: `"SMART_HOME_SWITCH"`) + +* `SMART_HOME_TELEVISION` (value: `"SMART_HOME_TELEVISION"`) + +* `ENERGY` (value: `"ENERGY"`) + +* `FORCE` (value: `"FORCE"`) + +* `TEMPERATURE` (value: `"TEMPERATURE"`) + +* `POWER` (value: `"POWER"`) + +* `ELECTRIC_CURRENT` (value: `"ELECTRIC_CURRENT"`) + +* `ELECTRIC_POTENTIAL` (value: `"ELECTRIC_POTENTIAL"`) + +* `ELECTRICAL_RESISTANCE` (value: `"ELECTRICAL_RESISTANCE"`) + +* `CAPACITANCE` (value: `"CAPACITANCE"`) + +* `TIME` (value: `"TIME"`) + +* `FREQUENCY` (value: `"FREQUENCY"`) + +* `DATA_RATE` (value: `"DATA_RATE"`) + +* `ACCELERATION` (value: `"ACCELERATION"`) + +* `AREA` (value: `"AREA"`) + +* `LENGTH` (value: `"LENGTH"`) + +* `VELOCITY` (value: `"VELOCITY"`) + +* `MASS` (value: `"MASS"`) + +* `VOLUME` (value: `"VOLUME"`) + +* `FLOW_RATE` (value: `"FLOW_RATE"`) + +* `ANGLE` (value: `"ANGLE"`) + +* `ILLUMINANCE` (value: `"ILLUMINANCE"`) + +* `LUMINOUS_FLUX` (value: `"LUMINOUS_FLUX"`) + +* `LUMINANCE` (value: `"LUMINANCE"`) + +* `LUMINOUS_INTENSITY` (value: `"LUMINOUS_INTENSITY"`) + +* `LOGARITHMIC_QUANTITY` (value: `"LOGARITHMIC_QUANTITY"`) + +* `PRESSURE` (value: `"PRESSURE"`) + +* `INFORMATION_CONTENT` (value: `"INFORMATION_CONTENT"`) + +* `SCHEDULE` (value: `"SCHEDULE"`) + + + + + +## Enum: UpdateStrategyEnum + + +* `ON_CHANGE` (value: `"ON_CHANGE"`) + +* `TIMED` (value: `"TIMED"`) + + + + diff --git a/docs/PropertyTypesV1Api.md b/docs/PropertyTypesV1Api.md new file mode 100644 index 0000000..8fb3ac0 --- /dev/null +++ b/docs/PropertyTypesV1Api.md @@ -0,0 +1,53 @@ +# ArduinoIotClient.PropertyTypesV1Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**propertyTypesV1ListTypes**](PropertyTypesV1Api.md#propertyTypesV1ListTypes) | **GET** /iot/v1/property_types | listTypes property_types_v1 + + + +## propertyTypesV1ListTypes + +> [ArduinoPropertytype] propertyTypesV1ListTypes() + +listTypes property_types_v1 + +Returns the list of available property types + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.PropertyTypesV1Api(); +apiInstance.propertyTypesV1ListTypes().then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**[ArduinoPropertytype]**](ArduinoPropertytype.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.propertytype+json; type=collection, application/vnd.goa.error+json + diff --git a/docs/PropertyValue.md b/docs/PropertyValue.md new file mode 100644 index 0000000..d0b6b2e --- /dev/null +++ b/docs/PropertyValue.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.PropertyValue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**deviceId** | **String** | The device who send the property | [optional] +**value** | **Object** | The property value | + + diff --git a/docs/SeriesV2Api.md b/docs/SeriesV2Api.md new file mode 100644 index 0000000..a2695b1 --- /dev/null +++ b/docs/SeriesV2Api.md @@ -0,0 +1,273 @@ +# ArduinoIotClient.SeriesV2Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**seriesV2BatchQuery**](SeriesV2Api.md#seriesV2BatchQuery) | **POST** /iot/v2/series/batch_query | batch_query series_v2 +[**seriesV2BatchQueryRaw**](SeriesV2Api.md#seriesV2BatchQueryRaw) | **POST** /iot/v2/series/batch_query_raw | batch_query_raw series_v2 +[**seriesV2BatchQueryRawLastValue**](SeriesV2Api.md#seriesV2BatchQueryRawLastValue) | **POST** /iot/v2/series/batch_query_raw/lastvalue | batch_query_raw_last_value series_v2 +[**seriesV2BatchQuerySampling**](SeriesV2Api.md#seriesV2BatchQuerySampling) | **POST** /iot/v2/series/batch_query_sampling | batch_query_sampling series_v2 +[**seriesV2HistoricData**](SeriesV2Api.md#seriesV2HistoricData) | **POST** /iot/v2/series/historic_data | historic_data series_v2 + + + +## seriesV2BatchQuery + +> ArduinoSeriesBatch seriesV2BatchQuery(batchQueryRequestsMediaV1, opts) + +batch_query series_v2 + +Returns the batch of time-series aggregated samples + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.SeriesV2Api(); +let batchQueryRequestsMediaV1 = new ArduinoIotClient.BatchQueryRequestsMediaV1(); // BatchQueryRequestsMediaV1 | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.seriesV2BatchQuery(batchQueryRequestsMediaV1, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **batchQueryRequestsMediaV1** | [**BatchQueryRequestsMediaV1**](BatchQueryRequestsMediaV1.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoSeriesBatch**](ArduinoSeriesBatch.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.series.batch+json, application/vnd.goa.error+json + + +## seriesV2BatchQueryRaw + +> ArduinoSeriesRawBatch seriesV2BatchQueryRaw(batchQueryRawRequestsMediaV1, opts) + +batch_query_raw series_v2 + +Returns the batch of time-series raw samples + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.SeriesV2Api(); +let batchQueryRawRequestsMediaV1 = new ArduinoIotClient.BatchQueryRawRequestsMediaV1(); // BatchQueryRawRequestsMediaV1 | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.seriesV2BatchQueryRaw(batchQueryRawRequestsMediaV1, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **batchQueryRawRequestsMediaV1** | [**BatchQueryRawRequestsMediaV1**](BatchQueryRawRequestsMediaV1.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoSeriesRawBatch**](ArduinoSeriesRawBatch.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.series.raw.batch+json, application/vnd.goa.error+json + + +## seriesV2BatchQueryRawLastValue + +> ArduinoSeriesRawBatchLastvalue seriesV2BatchQueryRawLastValue(batchLastValueRequestsMediaV1, opts) + +batch_query_raw_last_value series_v2 + +Returns the batch of time-series data raw + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.SeriesV2Api(); +let batchLastValueRequestsMediaV1 = new ArduinoIotClient.BatchLastValueRequestsMediaV1(); // BatchLastValueRequestsMediaV1 | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.seriesV2BatchQueryRawLastValue(batchLastValueRequestsMediaV1, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **batchLastValueRequestsMediaV1** | [**BatchLastValueRequestsMediaV1**](BatchLastValueRequestsMediaV1.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoSeriesRawBatchLastvalue**](ArduinoSeriesRawBatchLastvalue.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.series.raw.batch.lastvalue+json, application/vnd.goa.error+json + + +## seriesV2BatchQuerySampling + +> ArduinoSeriesBatchSampled seriesV2BatchQuerySampling(batchQuerySampledRequestsMediaV1, opts) + +batch_query_sampling series_v2 + +Returns a batch of time-series sampled samples. To be used for types that does not support mathematic aggregation. Types supported: strings, complex types. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.SeriesV2Api(); +let batchQuerySampledRequestsMediaV1 = new ArduinoIotClient.BatchQuerySampledRequestsMediaV1(); // BatchQuerySampledRequestsMediaV1 | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.seriesV2BatchQuerySampling(batchQuerySampledRequestsMediaV1, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **batchQuerySampledRequestsMediaV1** | [**BatchQuerySampledRequestsMediaV1**](BatchQuerySampledRequestsMediaV1.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoSeriesBatchSampled**](ArduinoSeriesBatchSampled.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.series.batch.sampled+json, application/vnd.goa.error+json + + +## seriesV2HistoricData + +> seriesV2HistoricData(historicDataRequest, opts) + +historic_data series_v2 + +Request sending of historical data of properties by email + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.SeriesV2Api(); +let historicDataRequest = new ArduinoIotClient.HistoricDataRequest(); // HistoricDataRequest | +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.seriesV2HistoricData(historicDataRequest, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **historicDataRequest** | [**HistoricDataRequest**](HistoricDataRequest.md)| | + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json + diff --git a/docs/Sharerequest.md b/docs/Sharerequest.md new file mode 100644 index 0000000..fb54b84 --- /dev/null +++ b/docs/Sharerequest.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.Sharerequest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**message** | **String** | The message the user want to send to the dashboard owner | [optional] + + diff --git a/docs/Tag.md b/docs/Tag.md new file mode 100644 index 0000000..1b25bfb --- /dev/null +++ b/docs/Tag.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.Tag + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **String** | Key of the tag | +**value** | **String** | Value of the tag | + + diff --git a/docs/Template.md b/docs/Template.md new file mode 100644 index 0000000..1629a9c --- /dev/null +++ b/docs/Template.md @@ -0,0 +1,12 @@ +# ArduinoIotClient.Template + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**customTemplateId** | **String** | The name of the directory on S3 bucket containing the user's template | [optional] +**prefixName** | **String** | The prefix to apply to the names of the generated resources | [optional] +**templateName** | **String** | The name of the directory on S3 bucket containing the template | +**thingsOptions** | **{String: Object}** | | [optional] + + diff --git a/docs/TemplatesApi.md b/docs/TemplatesApi.md new file mode 100644 index 0000000..7c23375 --- /dev/null +++ b/docs/TemplatesApi.md @@ -0,0 +1,57 @@ +# ArduinoIotClient.TemplatesApi + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**templatesApply**](TemplatesApi.md#templatesApply) | **PUT** /iot/v1/templates | apply templates + + + +## templatesApply + +> ArduinoTemplate templatesApply(template, opts) + +apply templates + +Apply an existing cloud template and generate all the needed resources + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; + +let apiInstance = new ArduinoIotClient.TemplatesApi(); +let template = new ArduinoIotClient.Template(); // Template | TemplatePayload describes the needed attribute to apply a template +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.templatesApply(template, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **template** | [**Template**](Template.md)| TemplatePayload describes the needed attribute to apply a template | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoTemplate**](ArduinoTemplate.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.template+json, application/vnd.goa.error+json + diff --git a/docs/ThingClone.md b/docs/ThingClone.md new file mode 100644 index 0000000..4e2c628 --- /dev/null +++ b/docs/ThingClone.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.ThingClone + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**includeTags** | **Boolean** | Include tags in clone procedure | [optional] +**name** | **String** | The friendly name of the thing | + + diff --git a/docs/ThingCreate.md b/docs/ThingCreate.md new file mode 100644 index 0000000..4e89900 --- /dev/null +++ b/docs/ThingCreate.md @@ -0,0 +1,30 @@ +# ArduinoIotClient.ThingCreate + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**assistant** | **String** | The kind of voice assistant the thing is connected to, it can be ALEXA | GOOGLE | NONE | [optional] +**deviceId** | **String** | The arn of the associated device | [optional] +**id** | **String** | The id of the thing | [optional] +**name** | **String** | The friendly name of the thing | [optional] +**properties** | [**[Property]**](Property.md) | The properties of the thing | [optional] +**tags** | [**[Tag]**](Tag.md) | Optional set of tags | [optional] +**timezone** | **String** | A time zone name Check /v2/timezones for a list of valid names. | [optional] [default to 'America/New_York'] +**webhookActive** | **Boolean** | Webhook uri | [optional] +**webhookUri** | **String** | Webhook uri | [optional] + + + +## Enum: AssistantEnum + + +* `ALEXA` (value: `"ALEXA"`) + +* `GOOGLE` (value: `"GOOGLE"`) + +* `NONE` (value: `"NONE"`) + + + + diff --git a/docs/ThingSketch.md b/docs/ThingSketch.md new file mode 100644 index 0000000..929c3e7 --- /dev/null +++ b/docs/ThingSketch.md @@ -0,0 +1,20 @@ +# ArduinoIotClient.ThingSketch + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**sketchVersion** | **String** | The autogenerated sketch version | [optional] + + + +## Enum: SketchVersionEnum + + +* `v1` (value: `"v1"`) + +* `v2` (value: `"v2"`) + + + + diff --git a/docs/ThingUpdate.md b/docs/ThingUpdate.md new file mode 100644 index 0000000..02269cf --- /dev/null +++ b/docs/ThingUpdate.md @@ -0,0 +1,29 @@ +# ArduinoIotClient.ThingUpdate + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**assistant** | **String** | The kind of voice assistant the thing is connected to, it can be ALEXA | GOOGLE | NONE | [optional] +**deviceId** | **String** | The arn of the associated device | [optional] +**id** | **String** | The id of the thing | [optional] +**name** | **String** | The friendly name of the thing | [optional] +**properties** | [**[Property]**](Property.md) | The properties of the thing | [optional] +**timezone** | **String** | A time zone name. Check /v2/timezones for a list of valid names. | [optional] +**webhookActive** | **Boolean** | Webhook uri | [optional] +**webhookUri** | **String** | Webhook uri | [optional] + + + +## Enum: AssistantEnum + + +* `ALEXA` (value: `"ALEXA"`) + +* `GOOGLE` (value: `"GOOGLE"`) + +* `NONE` (value: `"NONE"`) + + + + diff --git a/docs/ThingsV2Api.md b/docs/ThingsV2Api.md new file mode 100644 index 0000000..a466285 --- /dev/null +++ b/docs/ThingsV2Api.md @@ -0,0 +1,564 @@ +# ArduinoIotClient.ThingsV2Api + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**thingsV2Clone**](ThingsV2Api.md#thingsV2Clone) | **PUT** /iot/v2/things/{id}/clone | clone things_v2 +[**thingsV2Create**](ThingsV2Api.md#thingsV2Create) | **PUT** /iot/v2/things | create things_v2 +[**thingsV2CreateSketch**](ThingsV2Api.md#thingsV2CreateSketch) | **PUT** /iot/v2/things/{id}/sketch | createSketch things_v2 +[**thingsV2Delete**](ThingsV2Api.md#thingsV2Delete) | **DELETE** /iot/v2/things/{id} | delete things_v2 +[**thingsV2DeleteSketch**](ThingsV2Api.md#thingsV2DeleteSketch) | **DELETE** /iot/v2/things/{id}/sketch | deleteSketch things_v2 +[**thingsV2List**](ThingsV2Api.md#thingsV2List) | **GET** /iot/v2/things | list things_v2 +[**thingsV2Show**](ThingsV2Api.md#thingsV2Show) | **GET** /iot/v2/things/{id} | show things_v2 +[**thingsV2Template**](ThingsV2Api.md#thingsV2Template) | **GET** /iot/v2/things/{id}/template | template things_v2 +[**thingsV2Update**](ThingsV2Api.md#thingsV2Update) | **POST** /iot/v2/things/{id} | update things_v2 +[**thingsV2UpdateSketch**](ThingsV2Api.md#thingsV2UpdateSketch) | **PUT** /iot/v2/things/{id}/sketch/{sketchId} | updateSketch things_v2 + + + +## thingsV2Clone + +> ArduinoThing thingsV2Clone(id, thingClone, opts) + +clone things_v2 + +Clone a given thing + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let thingClone = new ArduinoIotClient.ThingClone(); // ThingClone | Payload to clone a new thing from an existing one +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2Clone(id, thingClone, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **thingClone** | [**ThingClone**](ThingClone.md)| Payload to clone a new thing from an existing one | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoThing**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.thing+json, application/vnd.goa.error+json + + +## thingsV2Create + +> ArduinoThing thingsV2Create(thingCreate, opts) + +create things_v2 + +Creates a new thing associated to the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let thingCreate = new ArduinoIotClient.ThingCreate(); // ThingCreate | Payload to create a new thing +let opts = { + 'force': false, // Boolean | If true, detach device from the other thing, and attach to this thing + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2Create(thingCreate, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **thingCreate** | [**ThingCreate**](ThingCreate.md)| Payload to create a new thing | + **force** | **Boolean**| If true, detach device from the other thing, and attach to this thing | [optional] [default to false] + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoThing**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.thing+json, application/vnd.goa.error+json + + +## thingsV2CreateSketch + +> ArduinoThing thingsV2CreateSketch(id, thingSketch, opts) + +createSketch things_v2 + +Creates a new sketch thing associated to the thing + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let thingSketch = new ArduinoIotClient.ThingSketch(); // ThingSketch | ThingSketchPayload describes a sketch of a thing +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2CreateSketch(id, thingSketch, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **thingSketch** | [**ThingSketch**](ThingSketch.md)| ThingSketchPayload describes a sketch of a thing | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoThing**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.thing+json, application/vnd.goa.error+json + + +## thingsV2Delete + +> thingsV2Delete(id, opts) + +delete things_v2 + +Removes a thing associated to the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let opts = { + 'force': false, // Boolean | If true, hard delete the thing + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2Delete(id, opts).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **force** | **Boolean**| If true, hard delete the thing | [optional] [default to false] + **xOrganization** | **String**| | [optional] + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## thingsV2DeleteSketch + +> ArduinoThing thingsV2DeleteSketch(id, opts) + +deleteSketch things_v2 + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2DeleteSketch(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoThing**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.thing+json, application/vnd.goa.error+json + + +## thingsV2List + +> [ArduinoThing] thingsV2List(opts) + +list things_v2 + +Returns the list of things associated to the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let opts = { + 'acrossUserIds': false, // Boolean | If true, returns all the things + 'deviceId': "deviceId_example", // String | The id of the device you want to filter + 'ids': ["null"], // [String] | Filter only the desired things + 'showDeleted': false, // Boolean | If true, shows the soft deleted things + 'showProperties': false, // Boolean | If true, returns things with their properties, and last values + 'tags': ["null"], // [String] | Filter by tags + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2List(opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **acrossUserIds** | **Boolean**| If true, returns all the things | [optional] [default to false] + **deviceId** | **String**| The id of the device you want to filter | [optional] + **ids** | [**[String]**](String.md)| Filter only the desired things | [optional] + **showDeleted** | **Boolean**| If true, shows the soft deleted things | [optional] [default to false] + **showProperties** | **Boolean**| If true, returns things with their properties, and last values | [optional] [default to false] + **tags** | [**[String]**](String.md)| Filter by tags | [optional] + **xOrganization** | **String**| | [optional] + +### Return type + +[**[ArduinoThing]**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.thing+json; type=collection, application/vnd.goa.error+json + + +## thingsV2Show + +> ArduinoThing thingsV2Show(id, opts) + +show things_v2 + +Returns the thing requested by the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let opts = { + 'showDeleted': false, // Boolean | If true, shows the soft deleted thing + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2Show(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **showDeleted** | **Boolean**| If true, shows the soft deleted thing | [optional] [default to false] + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoThing**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.thing+json, application/vnd.goa.error+json + + +## thingsV2Template + +> ArduinoThingtemplate thingsV2Template(id, opts) + +template things_v2 + +Extract template from the given thing + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let opts = { + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2Template(id, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoThingtemplate**](ArduinoThingtemplate.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.thingtemplate+json, application/vnd.goa.error+json + + +## thingsV2Update + +> ArduinoThing thingsV2Update(id, thingUpdate, opts) + +update things_v2 + +Updates a thing associated to the user + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let thingUpdate = new ArduinoIotClient.ThingUpdate(); // ThingUpdate | Payload to update an existing thing +let opts = { + 'force': false, // Boolean | If true, detach device from the other thing, and attach to this thing + 'xOrganization': "xOrganization_example" // String | +}; +apiInstance.thingsV2Update(id, thingUpdate, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **thingUpdate** | [**ThingUpdate**](ThingUpdate.md)| Payload to update an existing thing | + **force** | **Boolean**| If true, detach device from the other thing, and attach to this thing | [optional] [default to false] + **xOrganization** | **String**| | [optional] + +### Return type + +[**ArduinoThing**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.thing+json, application/vnd.goa.error+json + + +## thingsV2UpdateSketch + +> ArduinoThing thingsV2UpdateSketch(id, sketchId, opts) + +updateSketch things_v2 + +Update an existing thing sketch + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2Api(); +let id = "id_example"; // String | The id of the thing +let sketchId = "sketchId_example"; // String | The id of the sketch +let opts = { + 'xOrganization': "xOrganization_example", // String | + 'updateSketch': new ArduinoIotClient.UpdateSketch() // UpdateSketch | +}; +apiInstance.thingsV2UpdateSketch(id, sketchId, opts).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **sketchId** | **String**| The id of the sketch | + **xOrganization** | **String**| | [optional] + **updateSketch** | [**UpdateSketch**](UpdateSketch.md)| | [optional] + +### Return type + +[**ArduinoThing**](ArduinoThing.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.arduino.thing+json, application/vnd.goa.error+json + diff --git a/docs/ThingsV2TagsApi.md b/docs/ThingsV2TagsApi.md new file mode 100644 index 0000000..84911fc --- /dev/null +++ b/docs/ThingsV2TagsApi.md @@ -0,0 +1,159 @@ +# ArduinoIotClient.ThingsV2TagsApi + +All URIs are relative to *https://api2.arduino.cc* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**thingsV2TagsDelete**](ThingsV2TagsApi.md#thingsV2TagsDelete) | **DELETE** /iot/v2/things/{id}/tags/{key} | delete things_v2_tags +[**thingsV2TagsList**](ThingsV2TagsApi.md#thingsV2TagsList) | **GET** /iot/v2/things/{id}/tags | list things_v2_tags +[**thingsV2TagsUpsert**](ThingsV2TagsApi.md#thingsV2TagsUpsert) | **PUT** /iot/v2/things/{id}/tags | upsert things_v2_tags + + + +## thingsV2TagsDelete + +> thingsV2TagsDelete(id, key) + +delete things_v2_tags + +Delete a tag associated to the thing given its key. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2TagsApi(); +let id = "id_example"; // String | The id of the thing +let key = "key_example"; // String | The key of the tag +apiInstance.thingsV2TagsDelete(id, key).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **key** | **String**| The key of the tag | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.goa.error+json, text/plain + + +## thingsV2TagsList + +> ArduinoTags thingsV2TagsList(id) + +list things_v2_tags + +List tags associated to the thing. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2TagsApi(); +let id = "id_example"; // String | The id of the thing +apiInstance.thingsV2TagsList(id).then((data) => { + console.log('API called successfully. Returned data: ' + data); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + +### Return type + +[**ArduinoTags**](ArduinoTags.md) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/vnd.arduino.tags+json, application/vnd.goa.error+json + + +## thingsV2TagsUpsert + +> thingsV2TagsUpsert(id, tag) + +upsert things_v2_tags + +Creates or updates a tag associated to the thing. + +### Example + +```javascript +import ArduinoIotClient from '@arduino/arduino-iot-client'; +let defaultClient = ArduinoIotClient.ApiClient.instance; +// Configure OAuth2 access token for authorization: oauth2 +let oauth2 = defaultClient.authentications['oauth2']; +oauth2.accessToken = 'YOUR ACCESS TOKEN'; + +let apiInstance = new ArduinoIotClient.ThingsV2TagsApi(); +let id = "id_example"; // String | The id of the thing +let tag = new ArduinoIotClient.Tag(); // Tag | +apiInstance.thingsV2TagsUpsert(id, tag).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **String**| The id of the thing | + **tag** | [**Tag**](Tag.md)| | + +### Return type + +null (empty response body) + +### Authorization + +[oauth2](../README.md#oauth2) + +### HTTP request headers + +- **Content-Type**: application/json, application/x-www-form-urlencoded +- **Accept**: application/vnd.goa.error+json, text/plain + diff --git a/docs/TimeseriesDataPoint.md b/docs/TimeseriesDataPoint.md new file mode 100644 index 0000000..05776f0 --- /dev/null +++ b/docs/TimeseriesDataPoint.md @@ -0,0 +1,10 @@ +# ArduinoIotClient.TimeseriesDataPoint + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**time** | **Date** | Binning timestamp | +**value** | **Number** | Avg value on the binning interval | + + diff --git a/docs/UpdateSketch.md b/docs/UpdateSketch.md new file mode 100644 index 0000000..baef788 --- /dev/null +++ b/docs/UpdateSketch.md @@ -0,0 +1,20 @@ +# ArduinoIotClient.UpdateSketch + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**sketchVersion** | **String** | The autogenerated sketch version | [optional] + + + +## Enum: SketchVersionEnum + + +* `v1` (value: `"v1"`) + +* `v2` (value: `"v2"`) + + + + diff --git a/docs/Widget.md b/docs/Widget.md new file mode 100644 index 0000000..df947a5 --- /dev/null +++ b/docs/Widget.md @@ -0,0 +1,21 @@ +# ArduinoIotClient.Widget + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**height** | **Number** | Widget current height for desktop | +**heightMobile** | **Number** | Widget current height for mobile | [optional] +**id** | **String** | The UUID of the widget, set by client | +**name** | **String** | The name of the widget | [optional] +**options** | **{String: Object}** | Widget options | +**type** | **String** | The type of the widget | +**variables** | **[String]** | | [optional] +**width** | **Number** | Widget current width for desktop | +**widthMobile** | **Number** | Widget current width for mobile | [optional] +**x** | **Number** | Widget x position for desktop | +**xMobile** | **Number** | Widget x position for mobile | [optional] +**y** | **Number** | Widget y position for desktop | +**yMobile** | **Number** | Widget y position for mobile | [optional] + + diff --git a/docs/Widgetlink.md b/docs/Widgetlink.md new file mode 100644 index 0000000..b2cb25b --- /dev/null +++ b/docs/Widgetlink.md @@ -0,0 +1,9 @@ +# ArduinoIotClient.Widgetlink + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**variables** | **[String]** | | [optional] + + diff --git a/img/selection_1.png b/img/selection_1.png index edf2e80f41a0ac3f6bc0f009e70370eb9fc22eb5..81cfd72b8a4a8f92cc7ad435dd6fa72e9e3cf78b 100644 GIT binary patch literal 9330 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

V8mPHM^oI<&Ebdbxf5iM88P(JIR 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%0D|3#rb}j$lx%+s5SW+2PZO+sVE0T1$tL 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 literal 75926 zcmce-1ymbrxc5s9b}3Tap}0eFhg}HnPSE1+?xihmMS{!5ifafSD8;=L*OcNCTodFA zJ!hYL?^)}v^R4@>b!WkvB$JuE@67u=^Z)mT4-p`g;D=> ze?3Kg(k->fh*~}KlvdRF>#x6-*3^HY-oEydHSp4Qwej*b_pnCOw)6J#vi7k2_~RuS z+8Z=Qz&jnk#e)@~8^uj9H^R)fsQ&2H%MT0y%-?h|u>fcK#Bt&Jbx$YtASYOb@TQ{L zOu48~^TFtPa1=bUqZof+dsA{bCO7@eWBlYgZ$nR{#vrA2$cibgWU@2)qk=`tyXP(M zX?^~g+&M&|;eU<_|3w#Hb`zq6`+9z7vkUFP>>=G|E1k}|9)M~oYN^E{!n;5w($fBU z_iLt`4%N)ZCG4@wsO2fqpVi<0Ja!lj?Ze+M{;Xe@{aK;C(RlLb#dEg*c>kBqf2{LL zrSZ|eIWnaVNsd@Wv*@w`ryam@5_@$tv*XO`(Ty5PASHm;ju-~&>!^K?+x$a$ysXVn z4E-2Whh`rx8s^R}Pb|%jB)0g-uIkUsMxWPmaG1na6@UJjAO+;#YepuRTn2QC&37ec z?2+)j+o0-DkziUE3*@duL*u65>muAe^Z)W1&CLt7QwMT#CgMa9>KlQ0I9LW`uPIgN zAeIKyLoWR)BqhtY`N%@uLM+tRh9QH)LLnED9>+viiLhJ5zL!X7@b-Oe*NtEU5!$6Z zht2O1+%(&J&UC|}DhVFZl^&ALe|Wq|FzJd8!GUuAkhQvmaB3nn;qO`{Kig?cpbd4? z_wuXRIHo`YME6bfQGA|g?{#F9bml>Rh}VT}V*c$!?fvRK!ui*X*Fx-)KN=bU&}}4z zd%NXo%`@;;rBmaVch+~0OCJmP#{ABAFws^0J9?6Z*SS=|u2jQoZ!@XU5-NuLep7S> zgsN)}+xXF^hWNp^XhM(8tt%8|q}oFEQJcE%Sges%7AMX3_vv$V?1OL6(EOY?rW|SR z4~%>tPPhdNlY&Hxwsjroh~z6g-o->R*9IT#Utq`Q1bA%cKkT~RZ+v<{K#YHrp$5Zs z4(iImu4h0)1|4f=V-6SDrdOyxg|o~uq7`)&6$; zc}5(JhQh!7sFm!jTx-|RZ*%y&)?MSpkijkLOgzwZ-FPdj4xSti=)|ukNWf%DDg|HZ2sM-hvLmt4(DH?Dg7oOrti`wX zC^FQmmrOdRNV=+i8u6n$d!1<36kkVA$qvuL6M+8L1apmh-a;Ag4f);1} z17MN;Ke*9^El}eVCK;lIOaNAQB63}Y;OeE({Qoqw!frrM^TzCN2z9M!_!&_ z1w0SHmaWFzo`7A3Wg5FZU9Y_jgz^xZyp(9Y`qg7*g1mSjFbR;}ET&7p3_ia*FN+gC z0M#TfcEjLZFVWmyOLc^J4v0zJ{WOA0d7ofxGY8pBp#rWt_zb%Hk8E{$e){Q3_kDgy z`AUg$5YzfZ*Chz{5Xla?V?)Kn8LFYk&iNyp%PziYFX%drX}ie9tx87i6;+^Z9n4k` zIK8LALv|4t!-peD%my9<_?nS6Q5OB%C~A|_GQ;^*eP zc`d}Iis_dR^oH$ijj~15-l9QFmUs9wDJQ*&H7ia{DGtp>`(sf%?J{>43s>L)^;I(i zy27LQTu}w{XK3^9Gzs6Scn-_$Eims|*m!Sssu5ZX-Z&xF{q)3ncqQN7M+{HP#^srl zt=fq^%x0^*z*54W*47mow4Bu*UD?3XMJMoj_^{5BpMqc^+e;Y!1ZeMJsMLj=xY7*r ztqZM<2PGu_a$l4b{^deFrE zuiM@(WV@N3(J?3z+9>=RHPXAf{@z4I*|r%{3I059#B}0nK<#c4gJ#xdp=`>uwa{_R zgjf!_I$w^8&HjXuoBQj*qlX^Q;&D}g2r666j8svV2v$45$~)CSN>Uv@p0LD~<@yez zl4o#K0@cAFaG{ocy$JlvWo~Tsylo$LyELE;+T0x_7eHkzVE`|ywO;b)-gw+qKCJ~C zn{oza6_>q9s>=4IGF?8ySdRJyV?)>XFBC1XiDl${nc9*J5|tV_*bn;q(PaRblOewe z#pPe1C8Q#fbRf+`SA>-+{lCQ`zQFD91Y@--)a`GYx0!7ly9{)(hIdok(2GJEc9Gw8b8@V6^p!U80n_H{Af>r0h}K!Q zsjt9f^2cL_PEGqFqv^f;kegW7yA^KS{ZaN^f?=!6l|&tpC8Z7R-I>g|K3Mik!GqQc zmjwnc0bMcF9mR<;sN!yLvnDq`H;%a?)~>6oE|m?$p-NnY8Yt|t$s?E(BUomGo(;+R z_DUZuc6W}w0}c)?t5)0aOazQXau@%xuy?i|gF{~8Q$&}}S*+;4!*_^EXf_%t7WK8%LJrb!K0h+l|9dN{$c& zzx&d}z0qCT%$Hp==@D4#=>y)RtnW4k>^_*T?chQO<2NeZ>PeYmH{K)0?}jxm;mCD* zP~2bE4X$^0-0ZI!P`7!x+yq45!s6oEyuxN5eCFcecqEjeFvVwyIrO>=2Sr2EeEex*F91!Y7479p*g>XXP7_X?BrZVHg*7+C1d=lYY%lU(g*p38N zhSMS4qJ>;e;$msF;nUXnws&LXkPbjxRb596J)P`=StMo}Gx`U5>w#|>2wGj#7=F0w z8H&jFwu6X?DrT)@KkTNjiViyOQiTnJp;7`KG!=>`uxETAl4iZRG;pg+QCJk0um4xm z4NsGb`1P(%&o1&zSR1Tta;aPEFg!-Y^xv|xBTqrBX+ zrw+$)Al)^D+OMXr($de&ZhxkK0t>013$L$*C$o@`GAZg2%Kjz=a+VN<6NxCwEGuK` z)QR(;b|@Z`}+am5*e{V1+bd5a}at3 zz5ctzXHS|19LybBWKd;%@rnv(`d|mC*Y0P?0?iGGF8uK}{0gqgucw`MfTX_jmS`|! zeK~U8Y9g+w240{$z1k2BIF6$!M6kC ztBaX8!yXsjdK_IFMKnrRn$A5?2IZMK5zQ)eqDYUX6N?j#OYJ3JtI4tf;{;TTg1M(q z%BS-gNXeN0cb(DnlJbjxv|pg%9FZik5|nD~k5QQC2l}mY?m;+3?ee$tzpyqXrU|myUD`NVC61Z0_)o;WlGLJ2w_?-fuy5SRl2a z9+9EFpevp7^Hs0o$T^ozA*$v2V|{^OpU;dKyHpi%$O@e&`9lUbW3ni5A1Ot-pebolyU72Qh|9{R!xsxZ~B6D@$8FVmrUQun`lP^#`x-jROyMMoNO<3b}@f*qIVkg)|yF%ly-FC8DphdC)- zNtFcy55-KX=jK5~&(gk#yPSo;p2aX$EnT=Sh*36)O!X)_g<{gbAcH+!kx({*R`IJx zs|p5b#Rul8XWuj%EE7CRRGYd??v4>-Ht>~H4F}?$M$3T|Q$zkN+z~4dQ`N|59R1C3 zU^R6kkiGUwqCB`(9yZA@bkyA15iF8h15fpG`fAmqmhBK{rB}J+^!1_pLsvk{Cyw#i zx9zx&kz+dj!MZp)WSV+#y9%>D3bgl9?oUT}d089WwzpheZ!gU*Hw$!}t1lNn{x;JFgy(0Ez)G)mNtpzV&pVTZVrDObS=D92BM25hg($kRc{gBF$ z_DsjbuQ=?i6`K|JPjU4bsqX_|^-9vZx06!AQL-^le$~B=iveA5WKWXE-)lp2JCo>2 zK_fSX9MNo`7(CLZ-q$k83@LBeHsBH$UiM)r)@&eaAilNiC=pS~x1W;o#P9trP^SYW zwdartGd{pu3nstT5pb!^LLgr^0w)C}suuCuI)tbg3K0g@)4SILt|7TmL0@x~f2j2n zNVNubUFK4!xSyk?oRdq+6s>{hLp`?dmyFawH>*44NAWH~rlDSUTe0Kmi`^csS5%d7 z{nmpE{-DFayEo8nuI1~)Kg*AdygxhEfY&>0m!aBVAhKN6bAMKQZwklp-H;8B z-u7kKwGuyRPEp74xS6?t<&9j)N!VW);ZOEoJ&c$p8nmzKJM(s~_#U8KZ`}RU4>FiK zr15$^!x2-qp^?@N*1s8nI)t*x3~EU_#TE;^J-ji6bsX&MG0+~Dx0y}>&KwPGNeZ59 zHB~HFj_)(lh0kA&5Ip;4TXxTSgwn>~y8>0IR^&gDN;ik^9};0fMT^>+6qOywlNqX_ z5jJ*?8Fh=7)(xSz>JJT;c~{DQOu-jBC_9K0V}gI?U3d)2^tZ2B7*kgfNV8d*ox8pt z_tbvL_>YzmDb^sM%LYXqN(l|s%F2nyWKs|jZDxRBI9{;^`XwXiCh zmJ5{cx=89z&_h0&2wZzP%FDfBn$Yv^$fG&PG0H%|f_AHCJXg9G0N7%{(!IbRGV2O~-=EkIEWhbRn5?f>K#1y3$k>eR*%OGyL762f0s=gRJek z@PX_uJ52z*7WN;dI7*c|i?yE$A76d_biru}HoRLp3TnSdHfu*`J7)76b7`d2c=7?N zMF>pB#HZ)O9C?d1!dv_nleJi<--{>Ph_$y4YY6peGDo?NVT8z!?7 zdRyyt#@JOs^@h`>=O{|6BJjQ_6p>C0o~R6diXDhnp*f6d&t;9!9A4QQjd!SQZfsZkWQ5`hzN9_5ICUh$|s(+Y7W0b1!<{vL#r_YATf9`iki-B-jY{ zWXMEmM*TIR`Q$^9Bgz0>G_T$Vtngj@2KA(+@`-|)2jM}sOAHeV-(i=e<+Kubd% z3Y?W+0x2OV{{tf4fWYDrAUvk&-z?oUD{Ppq{oeS<5hlj0pI@oS;}76 z*?jf6JxfB#BH$3148f+pTG+V}iU#{&VP(!>*Su}_^A+eby0ta#N8jaUn4221qRl56 zu?{!TE79B^L-&jvveDpyr0WgKrl(L)e0($9+t8tATStD7Yg0si@rZuWOuPP;we|>1 z+0}3l7I73a54s2R0)*+4+luyES!9P9)4y7hB}Hvci&m%60|~>OxYEY@^i@_qQTa%C zvXu58JLE<%(#a+<7U(F%gj)%&?~5MJ@W<+sCd`pRmQKFtun}5mm3uG3)$RDXi=Qbg z^{45353B?sX;>KxW6#Q^GowgNOK0uLWbwnLd30I6f{SS&y7clQ%{&kMdF%u|l@Pf! zhVs-A=M9hDr-2^d1`E(1qu|>gYs5uw&ncm9Za^r3^-d6(o(%7+3b;0Ry*?XA&uU!5M_l1 z00*<-kF252{4kx6uFddWq zX`njbUYVflF|t1yw68j{3(%zP-{Ef*D3Yz5IRR`QENZC%tRJuVhY9U}q}ke`J%fY0 zR{TXQH(ngHM>}e?T9_i5v_HwGRnGd`Ol1HT^~X;|B{rl*8427CB_7yp3RSAQSK*p` z9`4Q|ML!(0Y0VhuOiNu|e-T&iAMl+N6VB?{FwM;h0bc5&I5R3Blv0n`a-JUv+ayRR zGUhP~>{*3P=T7*Rz6OmjhDVv}a{gvZ(B%Wf=%hvCxFbGm4R7L46ut~2{j^|hiF48b za&ki09DMQV-)R>$8QQ#X`VBOI!Ak6d3L7{;(NVgP+#`p;?dW$irxv^^BUPhTv;3mj z1CzV6r)6S~zkl3@!PcAQlzTY}28c`dE|{pvr1bmkLn&7eQhyGgu7kEGG;9wKeRptf z8bsm~D!W*Kua!5U6PV@#xdYXi%oO3rh%CsGvt5QENQ8L|UrTY6i-TEYd&tsMTeZr< zld>7;QLp30m^)7NJ9cC!V@Bu~|2pbM_W08Q7;FGGqh`*uC=vzuf#7VeP6@_8-mZ#3 zHg-UqQt)5ty>|Q&!+h$+T3pOY{Q*JK_QD6|9&xL)bGKoM$d^G_mw7co$C-7K`ET<* zb}0Jg*a{nTxCjKW_^g0QnR0mf!@s;pb9~I{@$z7URw>HhihI0DVu8ONf7~=m-^NF{ zXj6cVE^SWG?$*PBN*y5m&S`P-jlPXpnYX}1kd;AN6k+R0TJsuuFd$v6;ylR>`})pFOeQ7nFywrfbT2_|T_G z-~Aaa}Cf!1ZPLaL+?h=v{cd!GWk2X8DhxtycNj^ziFj!>Yfl z78ad;hd6hv@9|VBvR3s9Daq4AyjBy`=;^m(!V#u#pfgM5HVVtv{2ip@5+p-|7WVQ6 zT1wm!n4Gd60_DusJ^TAWx>Y+qzOug`yL)U=mN1^VXdFCH65eO*;4T6kwQuZ*VN_%x zdI6-BTR#x?S=JGfGM@7Po*7C$Qd2wDYe7ym;TcBk2F5HpTc zb8T}BU@zk-a6A zDzE5%Z?{fYsjp-xhHlv=nY9E9(G`3|O~6v?)B?bE62l_b7my&c{Cn90*mU3}WltzN ziOp#)@?&C@f*QIDhZtA9R}&^y`0+Z%NdNs5Nu&TJUQ)(b3_0Os`od4l@zmov6e?km401zsdTx;vHS0M#6G_;mMS#i&?(fn52Pk{;m+s9;*m~JJbK3h|`9< z6^+s(1nT2`*{A;+<-PhUe-zPG$qw=DtQ9%lka#^On((X*P>V|1ec}DkN`NyqTYf56 zL@je>N~eflGIut-;c-(!ov7XQ3savf_Vme~;f?Hh&@numHD8e@aN)%-x3m3=N-%fF zV{f@k!>B>u7e!n9vAMJ)42CXm;%8v9I~%#!wuzKDr9*;lho3=F3dFNpr6lW5c^KF| zcuL9UV|<8RFs5zCy__LL7TV30DFxZRr`Y`-^i6e{|9STT-)JuBhfyvzBj(mu_r{u?~QmybTG z7&4%5d%g`5tO<|ji^mymefZ?=q3cTi&3DEp<4kcJO4c?b#lxIEy#8VL_S~G@Q{cOijy9BbQ zbA}(SD0_?c&iH9E0oUSIKJ}Q$xro)<+N6Q;lN17ALn)F|vu48!$4+h{+$jt(4XqCc zZp`U9*;yuPBo>J@;iSJgg4dz(ZTN<%*g%6<=)~G|tPNGWl%g}X>(Ry68!L8KH?&3q zY2)K72pu8!#gP=kPTyMopaS(~V3W2oUw7G?p=1`V?IG};PtC4Nw8C(Nt&KD=njsT{ zWJWg;du3+h?_nbXGN+M>`1d3-0#4lcKiSgkYw~vIiU|U7M^; z9itcjD1ux~a1@oeF>L68nF_RQB!JS|cf^1V9xB>g#*LmNhRqoR?&V-XRza; zAJe6kvYA%V;PX7n%bm(};K9k3Oj5_Ng!mR;eXZMzp;|R5Y-a_4HSc9YT)>6h0IDzt zM5162tF=w49u%3~)t+`i5x)d`xVfl%D;N@DS6M>W{}eZmEONqx-xI)K`$^~%vZXac z>E*q)ZDb>Wq5tclIM7qYj}1F_XIiIm{XBe9Y07+e?bC<7pBaI3a&3(~NR}!p5#R1! zyrJ*I8<I@ODrjS^S$)ZCT660%&#=Qrvi{oLPQ*Ybf-jDxRKA_E6GrJRjz)VtQ5# z7CHAk;Q+=109qC%P5UX1WV~5yrK#_8i^TCX18BcA=C{B7PM|3JuErI!;=rUo+?L|r zd`S;!%UIx^U*nXKnV+S7yUk_jPsi5x%$H`=ezh#x-ly~mCw{mUxw#g-XwCp9iS`IO zos4ncIR6q&Pp3%ODtP&ZBpEn1pLr&i5am%|lt_}B-ZXAFRB{@;ZhIS$prE7<%X_&n zp=T(lB~BXEu4YC$`&!dyZ8k-Asc*RSGpM}WU|_z_TmmnNMM)eFcvtl7d$q!VL2Qy# z^{|{n2%D3zzqeE79umAMrqp^mdp;mg+Jf!hjXu_m#X;45f=KXq**6 zXC4ZzKUPW?R!?3PEe=D|F7Is6j30VipPN-;&paS${t}(@=*kUVO1)1G zZJGJ5O%|{8Zr*ubF1C36z$b*B)+sMQ$LHe8E_r`pj7dSo-Aj+FokN*dH=)N~ApWDw z_^v?dcXxaCMx&LtUSjOc)F~5s0?-*3Mo3YYJ^>ER_m0)e*v~C(8StH>rM9_oXY6MV zPz=58^Va4=b&4D{!Q2|0Npq}2>h#W2q48yV0&wft)4F>OxcK3sQx;jfgt14FL92Cp z2a6A`?onNn)USHkg)i#`Ed{QQ`Q*OMtOT_>TG?}1@eCCUcxt4MXHMI2qbM2KS`5*&6k-^8(AIZax*^gpEr>U8MMOo|d{o z#1@@>v_jfxbYZ<`Gu()g>d1{Z43a!inr5N7Ao7oI1%K?mf0rgVBYwl(^%m;_5-~@! z(uQ|&eiOLT-w)SzZ1(hVhaMc4MQJ6a4lS9rZfJ@2klhMMEp!ZhtFdC_r8&0kxT8x_ z!jx-1c@y~Nw?Tx0y_P0WZ`DbRxMAV@;`t|R8+KdSS$YCI#mp)@A9&HnMmCBPW5M){ z;OqB%j6^^yc!NqWJ`g&-(CR&j$`{E=sU?ABozK&Ll7SX#7kgY(JD(tnBIoeOJJ*9v zoD=^^-m$Z$xEwbwf%1n z;e)fa*6-qqkr>$=1N0*tXLRi!$nVRJjy_<);TSmrq`EgcNjV4-pOz+V^~H?Nu77Am zBrLS>hK9c74t6K2tv8NLxesl})UaRD3b^BxUM?8k`{lnT;gFblHS2|AvctjDqs-SV z{Z-o*oqQ~o$EWr4uE69}pKBE%hlIf9=Y=FRN*?ZJ1(xaSs7QmdChpmJp(Y6`)O@Rb zC{eNX!h7$$$><2nhd7fOkM}0$UiI}eAE)Nr_F@_MmREg7jF1z-1wzoa>s_d$;ls_E zpiFIqDzc{qw#)&+ous8I^jCvMv2iQ&){n;40waN+gi9Y(yxSJ>s^8=+2%XsIhe!|x z`FVB=2~Pfj*P=+L$dFC_!Ypmq4)@*f;bWn$Smf)K0d|v%#Gj-F$uEY82L(>-p zp>d00{!xoG=LNI53a2t}L!L|rEthi_lIp6zHhYyOC!L-A8swl~)RY33IPp$wd>?v& zW+7au&Xk!)JOBK`LKjT0UNK{$H{!^$36mJYP=()xZXa^kM0!Q(DYhv;nU@DK>y^$C zYqk0u6(0=NUhd28bMEguRdNGAiGs!t>Fv#+nBRBB5d9O#*1o=Y5^xTx^zJE9;j*C$ ze6I|eIM^pU(-( zM=Ia^Fdhx5vb>UH?kpN1eZ{rSE=AfqUN8)yKs+ENEWs86_apjX=yf2$JHw{Olx*=bn@}BWN$sC zFj8ev_SLuNscW05V2{o|0+T}>*y9{BGC7CQ9k09zKX#YZ>8@%iuC*S#FD&?xwLDq; z&C@5Jo(ij9$d@zL!asclGxK0JyO8CKt;T&{Lt91f)TqKZX3_>TgyKHS_K}_<}P@SL(x#hAcY;bd)aDNm5h<#r1lzBok(1Xo{Uy-UUns zj37jp*fiV&FOo9DNA(!T82Fs;l{%z}0Heic*(4govLLxWmtf~K)2Y6hC%?|%U`hlC z7=M~;drdX=wAqC#nZdD$3ElC4MvB_cW7|-puTmH~Wy$9P`vJbdUCI-0!`m`Q^Mj69 zXu)p=OqV1=w6MfGMbtT1dySAxh-!Eo)tZ=kLM&g3ugeHl(sy86WTe=YWSopOm8cXx zCc0}d-5}@*QB}?MMyBMxDNZSz`Vd=X6{^ZHP){B^Qf0fS1l_(oqB@9|=)8|ss@?LF zKdNIU^=k-lpRQi;{aJ5Q$`xQne!EgVwULwS^ovzW)L;dGkAIdDMkiDJ+V+qN?v!@i zu~d08$9ghtG?AO&{C-qO%oCZWfQ47&iyP66JY9qBZyB&*$hC4K(X3SJ!TL zZl$?EElS^G2R5QgC4(#3ALE}`1cHixbrAFKm7ev!Z_{IcorqTodM{N4fvwT^&i-o% zeXI!#(!qJ|Vv?duDPOfH@OF7sC0)PlW7NWCW_i^hFGI?zgr5i4Ohm-jGN!-l?fY)t z_bA|Mj(Qd#^oArf;qwQ2`ewI%?Umk^Y4tofka24$edJE7^ho(o4CHuk zFoK}Xg*opJTtrQ+{hCRND^^(%Bs4;O;lo@mrXrerwD+$ZqVmUM93y(F?H^w}?)zu` z?`+(E=PUotw$-}-Ls$L6#T0r!G_#*?e0SZ$PGeHp(J2UF!%w2j?GVULrU=paYvsl& zU>z*7`-g~-K+bNz!`tz88IAjt#eNj9)~(JIekrJRTRT9?j|IlhWw#}EQ4aS{au|T8W&_qyf*BeMWm^|HVFz}tq((mfE$u%BiLkA-iY_8b#7H^(?X5~g2n%a;BmT!`w zq5ZN8@XlA^9w`B^yf&VQ0RRH7z70t_ZkC#$V30m}=Z{i)I($pdlr#5tw9)*XYwr2> z+aae(ySse=rI*X<^#IX{Zy)640Swl3VVRp%Dhxwa<$-=>OFF7pJkVqQ7Q-)5R==yD z%#q>|D@!_SfmggPk#$)d!^s?HY7hSy8RJMQV*(i51s?`A2DakOS;3SU(Hlf`nT>gC zc=`1;V{|nysKxmba?YGDc@_VkW>;sGL_3ymYTqB26zz$fd$QEhb{9mRVWuA2Do-Zh z-m!mO*PJY^<->Vx$4INt0O%MK68$yn^rBidL6^BpRDxnWO_A`0B20|uaE3tBBys4vA58o;@RO@(`GWzsY^E0hxp5|nH2CXRYbg@6GLHMvfX8i^_ydgIEhbR~jJ4NZFwKSIJT{2^) z@3lOJ@yz`T+RnGoFRzIdIfjDf23t)nr+%*TtC!p=y*=jO#7~meDtO-@z`mx+9j`#F zUGPnbUpoz;IopODxJwv2X82DGQNIM?SD5IZqqFYe<145FB#$oM5qzqNaQ~8OiZd$L zz*`UCE!q{9?C_VX{}yj>RZ>uW*eAUs_qX?2RXY75u>ZeNneBvc0u*gX2Gp6|SZ2g` z)KSbA(?gn3X8St24j#)0wXAgY(p_s2lq4TcmOXc!2 z8;s#)#;%bG+8L`mD+J@CnO0R}3Oc2YRQ(1v;XTTA%X- zXayiHRR%+vYTp&V%e*NU=?gt91ThzCiMw5O=WJnjMGsC(1Q?#}jQ5{JKhaL98t0b4 z*$9}(^*jbJ#QxU%DYU|jmz47#tY~j4M?t03-mCajg!c5;Z0SjJ1baL($j&1PUCoT& z9bnoSf+i@mr=U3F#nb8D{-P~Cgzv0ezGBTQKRbq+UHsz5b2>GkW2ssBm=tQJl+y%BuS49J zGdjeb`nV-f#W@#yICmD_YWact)Op>zR#UqkceSZ3`iFaXNlHcbVh8wo(*C{=v$-DQ z(^Igdm$mwG3fAc|O1=+z&pv}MFS9KR3@GR|NI$iY)cYqI!}l6@at^B>PA_p}1Wo3b zt><>n?)t~xD%IloJ~#NjIIZ(_|NI}&lH^j|&O#e^881?_#6XLVj%_4a1@ulUM-QAH zLHdYfvI*Y$m5$`VL|eZOEKZ^WO-6mruQCNEk}AnyJ?*ywSBpjmZs}fj72fDP=)Q@{ zW+L4G0YT)%lKzmC;Mp-~8Py#$%dG_}((U2l4xACIn>n@iH=P-m%>F8Zchckno89K; zN|(%DQi&T?%DB34`O0^6(0~~|j8g(B5g2*d6<)iAHrLT8H1t#iTE~Elgd(b)tVEg? z7@Ir!i$b(&!~AiX5a8-n<#_NodC&A%Jj9)%h~wZX0s>+;xfklI|CYuv`Q!G zJ1nTCMq5m3@$flxR}d5aIWu0>=EG*+Zbk)&>xO&kHdF3RRq?YmI?q~Im=uvT(*=Ph z%Lt!m`c%qmJpvV1X6^}h)1pluk>*+Z)mx+HZGft63ngwJcCeAyWJ|kh zre6f=4qK*0m2|dYV8i~#|Ipbt)a>BCdMT|&GBi;cb~$6!@Np72HT*9@Q5?3CwS@cO zk6Y<&pFK?qab+G&s+zt}2Q}TZ6A{EJI|3i^35B&S>~bKcJ`?%k;#kBN4&PB>${to( zF@d=t>;kOl5)Ojz_7h!Jq5=@NP#5~p57V2eD+w1JI$Cer;++}2�OdB8e|k-?62E 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

u&+PgH!by}du;4BPUp5=bd>AwZjHh#68 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ε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 z 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

i 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 gBs^Q`4x<&XIFd?)sxwBLmYagFS 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 K!2;x|i~k3m9C{Q0 literal 105944 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Ͱwrt3@@9QIP~T9iaYV5b+F|+CI+)3yX`AVbaizr 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�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⁡Pk3a=P~1b)USvTVr7AX^w~0{ft&XM{P(q-68;> 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 A_W%F@ diff --git a/package.json b/package.json index 25e96d5..554baf8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@arduino/arduino-iot-client", - "version": "2.0.5", - "description": " Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go)", + "version": "3.0.0", + "description": "Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go)", "license": "GPLv3", "main": "dist/index.js", "scripts": { diff --git a/src/ApiClient.js b/src/ApiClient.js index b0f694b..7ba927c 100644 --- a/src/ApiClient.js +++ b/src/ApiClient.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import querystring from "querystring"; /** * @module ApiClient -* @version 2.0.5 +* @version 3.0.0 */ /** @@ -33,11 +33,11 @@ class ApiClient { * Overrides the default value set in spec file if present * @param {String} basePath */ - constructor(basePath = 'https://api2.arduino.cc/iot') { + constructor(basePath = 'https://api2.arduino.cc') { /** * The base URL against which to resolve every API call's (relative) path. * @type {String} - * @default https://api2.arduino.cc/iot + * @default https://api2.arduino.cc */ this.basePath = basePath.replace(/\/+$/, ''); @@ -55,7 +55,7 @@ class ApiClient { * @default {} */ this.defaultHeaders = { - 'User-Agent': 'OpenAPI/1.3.5/javascript' + 'User-Agent': 'OpenAPI-Generator/3.0.0/Javascript' }; /** @@ -155,7 +155,7 @@ class ApiClient { url = apiBasePath + path; } - url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => { + url = url.replace(/\{([\w-\.#]+)\}/g, (fullMatch, key) => { var value; if (pathParams.hasOwnProperty(key)) { value = this.paramToString(pathParams[key]); @@ -594,7 +594,7 @@ class ApiClient { hostSettings() { return [ { - 'url': "https://api2.arduino.cc/iot", + 'url': "https://api2.arduino.cc", 'description': "No description provided", } ]; diff --git a/src/api/DashboardsV2Api.js b/src/api/DashboardsV2Api.js index eeb2a5a..34eb47a 100644 --- a/src/api/DashboardsV2Api.js +++ b/src/api/DashboardsV2Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -27,7 +27,7 @@ import Widgetlink from '../model/Widgetlink'; /** * DashboardsV2 service. * @module api/DashboardsV2Api -* @version 2.0.5 +* @version 3.0.0 */ export default class DashboardsV2Api { @@ -81,7 +81,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.dashboardv2+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDashboardv2; return this.apiClient.callApi( - '/v2/dashboards/{id}/clone', 'PUT', + '/iot/v2/dashboards/{id}/clone', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -135,7 +135,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.dashboardv2+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDashboardv2; return this.apiClient.callApi( - '/v2/dashboards', 'POST', + '/iot/v2/dashboards', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -189,7 +189,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/dashboards/{id}', 'DELETE', + '/iot/v2/dashboards/{id}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -249,7 +249,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/dashboards/{id}/shares/{user_id}', 'DELETE', + '/iot/v2/dashboards/{id}/shares/{user_id}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -315,7 +315,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.variableslinks+json', 'application/vnd.goa.error+json']; let returnType = ArduinoVariableslinks; return this.apiClient.callApi( - '/v2/dashboards/{id}/widgets/{widgetId}/variables', 'PUT', + '/iot/v2/dashboards/{id}/widgets/{widgetId}/variables', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -369,7 +369,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.dashboardv2+json; type=collection', 'application/vnd.goa.error+json']; let returnType = [ArduinoDashboardv2]; return this.apiClient.callApi( - '/v2/dashboards', 'GET', + '/iot/v2/dashboards', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -424,7 +424,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.dashboardshare+json; type=collection', 'application/vnd.goa.error+json']; let returnType = [ArduinoDashboardshare]; return this.apiClient.callApi( - '/v2/dashboards/{id}/shares', 'GET', + '/iot/v2/dashboards/{id}/shares', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -483,7 +483,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/dashboards/{id}/share_request', 'PUT', + '/iot/v2/dashboards/{id}/share_request', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -543,7 +543,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/dashboards/{id}/shares', 'PUT', + '/iot/v2/dashboards/{id}/shares', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -598,7 +598,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.dashboardv2+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDashboardv2; return this.apiClient.callApi( - '/v2/dashboards/{id}', 'GET', + '/iot/v2/dashboards/{id}', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -652,7 +652,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.dashboardv2template+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDashboardv2template; return this.apiClient.callApi( - '/v2/dashboards/{id}/template', 'GET', + '/iot/v2/dashboards/{id}/template', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -711,7 +711,7 @@ export default class DashboardsV2Api { let accepts = ['application/vnd.arduino.dashboardv2+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDashboardv2; return this.apiClient.callApi( - '/v2/dashboards/{id}', 'PUT', + '/iot/v2/dashboards/{id}', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/DevicesV2Api.js b/src/api/DevicesV2Api.js index 54222c9..45ab08d 100644 --- a/src/api/DevicesV2Api.js +++ b/src/api/DevicesV2Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -26,7 +26,7 @@ import PropertiesValues from '../model/PropertiesValues'; /** * DevicesV2 service. * @module api/DevicesV2Api -* @version 2.0.5 +* @version 3.0.0 */ export default class DevicesV2Api { @@ -74,7 +74,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2; return this.apiClient.callApi( - '/v2/devices', 'PUT', + '/iot/v2/devices', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -128,7 +128,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}', 'DELETE', + '/iot/v2/devices/{id}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -186,7 +186,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2.event.properties+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2EventProperties; return this.apiClient.callApi( - '/v2/devices/{id}/events', 'GET', + '/iot/v2/devices/{id}/events', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -244,7 +244,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2properties+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2properties; return this.apiClient.callApi( - '/v2/devices/{id}/properties', 'GET', + '/iot/v2/devices/{id}/properties', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -303,7 +303,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2.status.events+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2StatusEvents; return this.apiClient.callApi( - '/v2/devices/{id}/status', 'GET', + '/iot/v2/devices/{id}/status', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -359,7 +359,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2+json; type=collection', 'application/vnd.goa.error+json']; let returnType = [ArduinoDevicev2]; return this.apiClient.callApi( - '/v2/devices', 'GET', + '/iot/v2/devices', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -415,7 +415,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2; return this.apiClient.callApi( - '/v2/devices/{id}', 'GET', + '/iot/v2/devices/{id}', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -479,7 +479,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2propertyvalues+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2propertyvalues; return this.apiClient.callApi( - '/v2/devices/{id}/properties/{pid}', 'GET', + '/iot/v2/devices/{id}/properties/{pid}', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -541,7 +541,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.arduino.devicev2+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2; return this.apiClient.callApi( - '/v2/devices/{id}', 'POST', + '/iot/v2/devices/{id}', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -601,7 +601,7 @@ export default class DevicesV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/properties', 'PUT', + '/iot/v2/devices/{id}/properties', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/DevicesV2CertsApi.js b/src/api/DevicesV2CertsApi.js index 90083d2..0695e7e 100644 --- a/src/api/DevicesV2CertsApi.js +++ b/src/api/DevicesV2CertsApi.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -21,7 +21,7 @@ import Error from '../model/Error'; /** * DevicesV2Certs service. * @module api/DevicesV2CertsApi -* @version 2.0.5 +* @version 3.0.0 */ export default class DevicesV2CertsApi { @@ -71,7 +71,7 @@ export default class DevicesV2CertsApi { let accepts = ['application/vnd.arduino.devicev2.cert+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2Cert; return this.apiClient.callApi( - '/v2/devices/{id}/certs', 'PUT', + '/iot/v2/devices/{id}/certs', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -126,7 +126,7 @@ export default class DevicesV2CertsApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/certs/{cid}', 'DELETE', + '/iot/v2/devices/{id}/certs/{cid}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -175,7 +175,7 @@ export default class DevicesV2CertsApi { let accepts = ['application/vnd.arduino.devicev2.cert+json; type=collection', 'application/vnd.goa.error+json']; let returnType = [ArduinoDevicev2Cert]; return this.apiClient.callApi( - '/v2/devices/{id}/certs', 'GET', + '/iot/v2/devices/{id}/certs', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -229,7 +229,7 @@ export default class DevicesV2CertsApi { let accepts = ['application/vnd.arduino.devicev2.cert+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2Cert; return this.apiClient.callApi( - '/v2/devices/{id}/certs/{cid}', 'GET', + '/iot/v2/devices/{id}/certs/{cid}', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -289,7 +289,7 @@ export default class DevicesV2CertsApi { let accepts = ['application/vnd.arduino.devicev2.cert+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2Cert; return this.apiClient.callApi( - '/v2/devices/{id}/certs/{cid}', 'POST', + '/iot/v2/devices/{id}/certs/{cid}', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/DevicesV2OtaApi.js b/src/api/DevicesV2OtaApi.js index 2570a4f..530514b 100644 --- a/src/api/DevicesV2OtaApi.js +++ b/src/api/DevicesV2OtaApi.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -21,7 +21,7 @@ import Error from '../model/Error'; /** * DevicesV2Ota service. * @module api/DevicesV2OtaApi -* @version 2.0.5 +* @version 3.0.0 */ export default class DevicesV2OtaApi { @@ -71,7 +71,7 @@ export default class DevicesV2OtaApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/ota', 'PUT', + '/iot/v2/devices/{id}/ota', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -132,7 +132,7 @@ export default class DevicesV2OtaApi { let accepts = ['application/vnd.arduino.devicev2.otaupload+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2Otaupload; return this.apiClient.callApi( - '/v2/devices/{id}/ota', 'POST', + '/iot/v2/devices/{id}/ota', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -189,7 +189,7 @@ export default class DevicesV2OtaApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/ota/url', 'POST', + '/iot/v2/devices/{id}/ota/url', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/DevicesV2PassApi.js b/src/api/DevicesV2PassApi.js index 3c07bda..498e70a 100644 --- a/src/api/DevicesV2PassApi.js +++ b/src/api/DevicesV2PassApi.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -21,7 +21,7 @@ import Error from '../model/Error'; /** * DevicesV2Pass service. * @module api/DevicesV2PassApi -* @version 2.0.5 +* @version 3.0.0 */ export default class DevicesV2PassApi { @@ -71,7 +71,7 @@ export default class DevicesV2PassApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/pass', 'POST', + '/iot/v2/devices/{id}/pass', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -120,7 +120,7 @@ export default class DevicesV2PassApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/pass', 'DELETE', + '/iot/v2/devices/{id}/pass', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -172,7 +172,7 @@ export default class DevicesV2PassApi { let accepts = ['application/vnd.arduino.devicev2.pass+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2Pass; return this.apiClient.callApi( - '/v2/devices/{id}/pass', 'GET', + '/iot/v2/devices/{id}/pass', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -227,7 +227,7 @@ export default class DevicesV2PassApi { let accepts = ['application/vnd.arduino.devicev2.pass+json', 'application/vnd.goa.error+json']; let returnType = ArduinoDevicev2Pass; return this.apiClient.callApi( - '/v2/devices/{id}/pass', 'PUT', + '/iot/v2/devices/{id}/pass', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/DevicesV2TagsApi.js b/src/api/DevicesV2TagsApi.js index e8ff514..a4a6847 100644 --- a/src/api/DevicesV2TagsApi.js +++ b/src/api/DevicesV2TagsApi.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -20,7 +20,7 @@ import Tag from '../model/Tag'; /** * DevicesV2Tags service. * @module api/DevicesV2TagsApi -* @version 2.0.5 +* @version 3.0.0 */ export default class DevicesV2TagsApi { @@ -71,7 +71,7 @@ export default class DevicesV2TagsApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/tags/{key}', 'DELETE', + '/iot/v2/devices/{id}/tags/{key}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -120,7 +120,7 @@ export default class DevicesV2TagsApi { let accepts = ['application/vnd.arduino.tags+json', 'application/vnd.goa.error+json']; let returnType = ArduinoTags; return this.apiClient.callApi( - '/v2/devices/{id}/tags', 'GET', + '/iot/v2/devices/{id}/tags', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -173,7 +173,7 @@ export default class DevicesV2TagsApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/devices/{id}/tags', 'PUT', + '/iot/v2/devices/{id}/tags', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/LoraDevicesV1Api.js b/src/api/LoraDevicesV1Api.js index 5d07f27..25679e7 100644 --- a/src/api/LoraDevicesV1Api.js +++ b/src/api/LoraDevicesV1Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -19,7 +19,7 @@ import CreateLoraDevicesV1Payload from '../model/CreateLoraDevicesV1Payload'; /** * LoraDevicesV1 service. * @module api/LoraDevicesV1Api -* @version 2.0.5 +* @version 3.0.0 */ export default class LoraDevicesV1Api { @@ -67,7 +67,7 @@ export default class LoraDevicesV1Api { let accepts = ['application/vnd.arduino.loradevicev1+json']; let returnType = ArduinoLoradevicev1; return this.apiClient.callApi( - '/v1/lora-devices/', 'PUT', + '/iot/v1/lora-devices/', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/LoraFreqPlanV1Api.js b/src/api/LoraFreqPlanV1Api.js index 64588a8..f9aaf85 100644 --- a/src/api/LoraFreqPlanV1Api.js +++ b/src/api/LoraFreqPlanV1Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -19,7 +19,7 @@ import Error from '../model/Error'; /** * LoraFreqPlanV1 service. * @module api/LoraFreqPlanV1Api -* @version 2.0.5 +* @version 3.0.0 */ export default class LoraFreqPlanV1Api { @@ -58,7 +58,7 @@ export default class LoraFreqPlanV1Api { let accepts = ['application/vnd.arduino.lorafreqplansv1+json', 'application/vnd.goa.error+json']; let returnType = ArduinoLorafreqplansv1; return this.apiClient.callApi( - '/v1/lora-freq-plans/', 'GET', + '/iot/v1/lora-freq-plans/', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/NetworkCredentialsV1Api.js b/src/api/NetworkCredentialsV1Api.js index 481b091..5bfd9ad 100644 --- a/src/api/NetworkCredentialsV1Api.js +++ b/src/api/NetworkCredentialsV1Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -14,11 +14,12 @@ import ApiClient from "../ApiClient"; import ArduinoCredentialsv1 from '../model/ArduinoCredentialsv1'; +import Error from '../model/Error'; /** * NetworkCredentialsV1 service. * @module api/NetworkCredentialsV1Api -* @version 2.0.5 +* @version 3.0.0 */ export default class NetworkCredentialsV1Api { @@ -64,10 +65,10 @@ export default class NetworkCredentialsV1Api { let authNames = []; let contentTypes = []; - let accepts = ['application/vnd.arduino.credentialsv1+json; type=collection']; + let accepts = ['application/vnd.arduino.credentialsv1+json; type=collection', 'application/vnd.goa.error+json']; let returnType = [ArduinoCredentialsv1]; return this.apiClient.callApi( - '/v1/network_credentials/{type}', 'GET', + '/iot/v1/network_credentials/{type}', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -114,10 +115,10 @@ export default class NetworkCredentialsV1Api { let authNames = []; let contentTypes = []; - let accepts = []; + let accepts = ['application/json', 'application/vnd.goa.error+json']; let returnType = null; return this.apiClient.callApi( - '/v1/network_credentials/{type}/connections', 'GET', + '/iot/v1/network_credentials/{type}/connections', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/PropertiesV2Api.js b/src/api/PropertiesV2Api.js index 7cd85f0..d9bfe01 100644 --- a/src/api/PropertiesV2Api.js +++ b/src/api/PropertiesV2Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -22,7 +22,7 @@ import PropertyValue from '../model/PropertyValue'; /** * PropertiesV2 service. * @module api/PropertiesV2Api -* @version 2.0.5 +* @version 3.0.0 */ export default class PropertiesV2Api { @@ -76,7 +76,7 @@ export default class PropertiesV2Api { let accepts = ['application/vnd.arduino.property+json', 'application/vnd.goa.error+json']; let returnType = ArduinoProperty; return this.apiClient.callApi( - '/v2/things/{id}/properties', 'PUT', + '/iot/v2/things/{id}/properties', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -139,7 +139,7 @@ export default class PropertiesV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/things/{id}/properties/{pid}', 'DELETE', + '/iot/v2/things/{id}/properties/{pid}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -197,7 +197,7 @@ export default class PropertiesV2Api { let accepts = ['application/vnd.arduino.property+json; type=collection', 'application/vnd.goa.error+json']; let returnType = [ArduinoProperty]; return this.apiClient.callApi( - '/v2/things/{id}/properties', 'GET', + '/iot/v2/things/{id}/properties', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -263,7 +263,7 @@ export default class PropertiesV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/things/{id}/properties/{pid}/publish', 'PUT', + '/iot/v2/things/{id}/properties/{pid}/publish', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -327,7 +327,7 @@ export default class PropertiesV2Api { let accepts = ['application/vnd.arduino.property+json', 'application/vnd.goa.error+json']; let returnType = ArduinoProperty; return this.apiClient.callApi( - '/v2/things/{id}/properties/{pid}', 'GET', + '/iot/v2/things/{id}/properties/{pid}', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -399,7 +399,7 @@ export default class PropertiesV2Api { let accepts = ['application/vnd.arduino.timeseriesmedia+json', 'application/vnd.goa.error+json']; let returnType = ArduinoTimeseriesmedia; return this.apiClient.callApi( - '/v2/things/{id}/properties/{pid}/timeseries', 'GET', + '/iot/v2/things/{id}/properties/{pid}/timeseries', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -470,7 +470,7 @@ export default class PropertiesV2Api { let accepts = ['application/vnd.arduino.property+json', 'application/vnd.goa.error+json']; let returnType = ArduinoProperty; return this.apiClient.callApi( - '/v2/things/{id}/properties/{pid}', 'POST', + '/iot/v2/things/{id}/properties/{pid}', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/PropertyTypesV1Api.js b/src/api/PropertyTypesV1Api.js new file mode 100644 index 0000000..8b6283b --- /dev/null +++ b/src/api/PropertyTypesV1Api.js @@ -0,0 +1,80 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + + +import ApiClient from "../ApiClient"; +import ArduinoPropertytype from '../model/ArduinoPropertytype'; +import Error from '../model/Error'; + +/** +* PropertyTypesV1 service. +* @module api/PropertyTypesV1Api +* @version 3.0.0 +*/ +export default class PropertyTypesV1Api { + + /** + * Constructs a new PropertyTypesV1Api. + * @alias module:api/PropertyTypesV1Api + * @class + * @param {module:ApiClient} [apiClient] Optional API client implementation to use, + * default to {@link module:ApiClient#instance} if unspecified. + */ + constructor(apiClient) { + this.apiClient = apiClient || ApiClient.instance; + } + + + + /** + * listTypes property_types_v1 + * Returns the list of available property types + * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Array.} and HTTP response + */ + propertyTypesV1ListTypesWithHttpInfo() { + let postBody = null; + + let pathParams = { + }; + let queryParams = { + }; + let headerParams = { + }; + let formParams = { + }; + + let authNames = ['oauth2']; + let contentTypes = []; + let accepts = ['application/vnd.arduino.propertytype+json; type=collection', 'application/vnd.goa.error+json']; + let returnType = [ArduinoPropertytype]; + return this.apiClient.callApi( + '/iot/v1/property_types', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + authNames, contentTypes, accepts, returnType, null + ); + } + + /** + * listTypes property_types_v1 + * Returns the list of available property types + * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Array.} + */ + propertyTypesV1ListTypes() { + return this.propertyTypesV1ListTypesWithHttpInfo() + .then(function(response_and_data) { + return response_and_data.data; + }); + } + + +} diff --git a/src/api/SeriesV2Api.js b/src/api/SeriesV2Api.js index a23fa19..1438c68 100644 --- a/src/api/SeriesV2Api.js +++ b/src/api/SeriesV2Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -27,7 +27,7 @@ import HistoricDataRequest from '../model/HistoricDataRequest'; /** * SeriesV2 service. * @module api/SeriesV2Api -* @version 2.0.5 +* @version 3.0.0 */ export default class SeriesV2Api { @@ -75,7 +75,7 @@ export default class SeriesV2Api { let accepts = ['application/vnd.arduino.series.batch+json', 'application/vnd.goa.error+json']; let returnType = ArduinoSeriesBatch; return this.apiClient.callApi( - '/v2/series/batch_query', 'POST', + '/iot/v2/series/batch_query', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -128,7 +128,7 @@ export default class SeriesV2Api { let accepts = ['application/vnd.arduino.series.raw.batch+json', 'application/vnd.goa.error+json']; let returnType = ArduinoSeriesRawBatch; return this.apiClient.callApi( - '/v2/series/batch_query_raw', 'POST', + '/iot/v2/series/batch_query_raw', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -181,7 +181,7 @@ export default class SeriesV2Api { let accepts = ['application/vnd.arduino.series.raw.batch.lastvalue+json', 'application/vnd.goa.error+json']; let returnType = ArduinoSeriesRawBatchLastvalue; return this.apiClient.callApi( - '/v2/series/batch_query_raw/lastvalue', 'POST', + '/iot/v2/series/batch_query_raw/lastvalue', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -234,7 +234,7 @@ export default class SeriesV2Api { let accepts = ['application/vnd.arduino.series.batch.sampled+json', 'application/vnd.goa.error+json']; let returnType = ArduinoSeriesBatchSampled; return this.apiClient.callApi( - '/v2/series/batch_query_sampling', 'POST', + '/iot/v2/series/batch_query_sampling', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -287,7 +287,7 @@ export default class SeriesV2Api { let accepts = ['application/vnd.goa.error+json']; let returnType = null; return this.apiClient.callApi( - '/v2/series/historic_data', 'POST', + '/iot/v2/series/historic_data', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/TemplatesApi.js b/src/api/TemplatesApi.js index 5750dbb..6a81052 100644 --- a/src/api/TemplatesApi.js +++ b/src/api/TemplatesApi.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -20,7 +20,7 @@ import Template from '../model/Template'; /** * Templates service. * @module api/TemplatesApi -* @version 2.0.5 +* @version 3.0.0 */ export default class TemplatesApi { @@ -68,7 +68,7 @@ export default class TemplatesApi { let accepts = ['application/vnd.arduino.template+json', 'application/vnd.goa.error+json']; let returnType = ArduinoTemplate; return this.apiClient.callApi( - '/v1/templates', 'PUT', + '/iot/v1/templates', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/ThingsV2Api.js b/src/api/ThingsV2Api.js index 12ff621..587e6f8 100644 --- a/src/api/ThingsV2Api.js +++ b/src/api/ThingsV2Api.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -25,7 +25,7 @@ import UpdateSketch from '../model/UpdateSketch'; /** * ThingsV2 service. * @module api/ThingsV2Api -* @version 2.0.5 +* @version 3.0.0 */ export default class ThingsV2Api { @@ -79,7 +79,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThing; return this.apiClient.callApi( - '/v2/things/{id}/clone', 'PUT', + '/iot/v2/things/{id}/clone', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -135,7 +135,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThing; return this.apiClient.callApi( - '/v2/things', 'PUT', + '/iot/v2/things', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -195,7 +195,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThing; return this.apiClient.callApi( - '/v2/things/{id}/sketch', 'PUT', + '/iot/v2/things/{id}/sketch', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -252,7 +252,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/things/{id}', 'DELETE', + '/iot/v2/things/{id}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -306,7 +306,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThing; return this.apiClient.callApi( - '/v2/things/{id}/sketch', 'DELETE', + '/iot/v2/things/{id}/sketch', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -365,7 +365,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json; type=collection', 'application/vnd.goa.error+json']; let returnType = [ArduinoThing]; return this.apiClient.callApi( - '/v2/things', 'GET', + '/iot/v2/things', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -426,7 +426,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThing; return this.apiClient.callApi( - '/v2/things/{id}', 'GET', + '/iot/v2/things/{id}', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -481,7 +481,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thingtemplate+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThingtemplate; return this.apiClient.callApi( - '/v2/things/{id}/template', 'GET', + '/iot/v2/things/{id}/template', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -542,7 +542,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThing; return this.apiClient.callApi( - '/v2/things/{id}', 'POST', + '/iot/v2/things/{id}', 'POST', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -605,7 +605,7 @@ export default class ThingsV2Api { let accepts = ['application/vnd.arduino.thing+json', 'application/vnd.goa.error+json']; let returnType = ArduinoThing; return this.apiClient.callApi( - '/v2/things/{id}/sketch/{sketchId}', 'PUT', + '/iot/v2/things/{id}/sketch/{sketchId}', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/api/ThingsV2TagsApi.js b/src/api/ThingsV2TagsApi.js index 0aefd38..94ed28c 100644 --- a/src/api/ThingsV2TagsApi.js +++ b/src/api/ThingsV2TagsApi.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -20,7 +20,7 @@ import Tag from '../model/Tag'; /** * ThingsV2Tags service. * @module api/ThingsV2TagsApi -* @version 2.0.5 +* @version 3.0.0 */ export default class ThingsV2TagsApi { @@ -71,7 +71,7 @@ export default class ThingsV2TagsApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/things/{id}/tags/{key}', 'DELETE', + '/iot/v2/things/{id}/tags/{key}', 'DELETE', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -120,7 +120,7 @@ export default class ThingsV2TagsApi { let accepts = ['application/vnd.arduino.tags+json', 'application/vnd.goa.error+json']; let returnType = ArduinoTags; return this.apiClient.callApi( - '/v2/things/{id}/tags', 'GET', + '/iot/v2/things/{id}/tags', 'GET', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); @@ -173,7 +173,7 @@ export default class ThingsV2TagsApi { let accepts = ['application/vnd.goa.error+json', 'text/plain']; let returnType = null; return this.apiClient.callApi( - '/v2/things/{id}/tags', 'PUT', + '/iot/v2/things/{id}/tags', 'PUT', pathParams, queryParams, headerParams, formParams, postBody, authNames, contentTypes, accepts, returnType, null ); diff --git a/src/index.js b/src/index.js index 174acc7..d7b16c2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -40,6 +40,7 @@ import ArduinoLoradevicev1 from './model/ArduinoLoradevicev1'; import ArduinoLorafreqplansv1 from './model/ArduinoLorafreqplansv1'; import ArduinoLorafreqplanv1 from './model/ArduinoLorafreqplanv1'; import ArduinoProperty from './model/ArduinoProperty'; +import ArduinoPropertytype from './model/ArduinoPropertytype'; import ArduinoSeriesBatch from './model/ArduinoSeriesBatch'; import ArduinoSeriesBatchSampled from './model/ArduinoSeriesBatchSampled'; import ArduinoSeriesRawBatch from './model/ArduinoSeriesRawBatch'; @@ -109,6 +110,7 @@ import LoraDevicesV1Api from './api/LoraDevicesV1Api'; import LoraFreqPlanV1Api from './api/LoraFreqPlanV1Api'; import NetworkCredentialsV1Api from './api/NetworkCredentialsV1Api'; import PropertiesV2Api from './api/PropertiesV2Api'; +import PropertyTypesV1Api from './api/PropertyTypesV1Api'; import SeriesV2Api from './api/SeriesV2Api'; import TemplatesApi from './api/TemplatesApi'; import ThingsV2Api from './api/ThingsV2Api'; @@ -116,7 +118,7 @@ import ThingsV2TagsApi from './api/ThingsV2TagsApi'; /** -* Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go).
+* Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go).
* The index module provides access to constructors for all the classes which comprise the public API. *

* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following: @@ -144,7 +146,7 @@ import ThingsV2TagsApi from './api/ThingsV2TagsApi'; * *

* @module index -* @version 2.0.5 +* @version 3.0.0 */ export { /** @@ -315,6 +317,12 @@ export { */ ArduinoProperty, + /** + * The ArduinoPropertytype model constructor. + * @property {module:model/ArduinoPropertytype} + */ + ArduinoPropertytype, + /** * The ArduinoSeriesBatch model constructor. * @property {module:model/ArduinoSeriesBatch} @@ -729,6 +737,12 @@ export { */ PropertiesV2Api, + /** + * The PropertyTypesV1Api service constructor. + * @property {module:api/PropertyTypesV1Api} + */ + PropertyTypesV1Api, + /** * The SeriesV2Api service constructor. * @property {module:api/SeriesV2Api} diff --git a/src/model/ArduinoCompressedv2.js b/src/model/ArduinoCompressedv2.js index a7c4460..16bed6b 100644 --- a/src/model/ArduinoCompressedv2.js +++ b/src/model/ArduinoCompressedv2.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoCompressedv2 model module. * @module model/ArduinoCompressedv2 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoCompressedv2 { /** @@ -93,7 +93,7 @@ class ArduinoCompressedv2 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoCompressedv2.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoCredentialsv1.js b/src/model/ArduinoCredentialsv1.js index 100030a..c11ef90 100644 --- a/src/model/ArduinoCredentialsv1.js +++ b/src/model/ArduinoCredentialsv1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoCredentialsv1 model module. * @module model/ArduinoCredentialsv1 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoCredentialsv1 { /** @@ -80,7 +80,7 @@ class ArduinoCredentialsv1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoCredentialsv1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDashboardowner.js b/src/model/ArduinoDashboardowner.js index 299d218..42084b2 100644 --- a/src/model/ArduinoDashboardowner.js +++ b/src/model/ArduinoDashboardowner.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDashboardowner model module. * @module model/ArduinoDashboardowner - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDashboardowner { /** @@ -68,7 +68,7 @@ class ArduinoDashboardowner { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDashboardowner.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDashboardshare.js b/src/model/ArduinoDashboardshare.js index a31c033..50eaefa 100644 --- a/src/model/ArduinoDashboardshare.js +++ b/src/model/ArduinoDashboardshare.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDashboardshare model module. * @module model/ArduinoDashboardshare - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDashboardshare { /** @@ -68,7 +68,7 @@ class ArduinoDashboardshare { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDashboardshare.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDashboardv2.js b/src/model/ArduinoDashboardv2.js index 987152e..0ed5957 100644 --- a/src/model/ArduinoDashboardv2.js +++ b/src/model/ArduinoDashboardv2.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -19,7 +19,7 @@ import ArduinoWidgetv2 from './ArduinoWidgetv2'; /** * The ArduinoDashboardv2 model module. * @module model/ArduinoDashboardv2 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDashboardv2 { /** @@ -96,7 +96,7 @@ class ArduinoDashboardv2 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDashboardv2.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDashboardv2template.js b/src/model/ArduinoDashboardv2template.js index 115f6ca..2c7fce2 100644 --- a/src/model/ArduinoDashboardv2template.js +++ b/src/model/ArduinoDashboardv2template.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoWidgetv2template from './ArduinoWidgetv2template'; /** * The ArduinoDashboardv2template model module. * @module model/ArduinoDashboardv2template - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDashboardv2template { /** @@ -75,7 +75,7 @@ class ArduinoDashboardv2template { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDashboardv2template.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2.js b/src/model/ArduinoDevicev2.js index 9e8d5ae..6a3d702 100644 --- a/src/model/ArduinoDevicev2.js +++ b/src/model/ArduinoDevicev2.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -19,7 +19,7 @@ import ArduinoThing from './ArduinoThing'; /** * The ArduinoDevicev2 model module. * @module model/ArduinoDevicev2 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2 { /** @@ -149,7 +149,7 @@ class ArduinoDevicev2 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2Cert.js b/src/model/ArduinoDevicev2Cert.js index a42c761..e59899d 100644 --- a/src/model/ArduinoDevicev2Cert.js +++ b/src/model/ArduinoDevicev2Cert.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoCompressedv2 from './ArduinoCompressedv2'; /** * The ArduinoDevicev2Cert model module. * @module model/ArduinoDevicev2Cert - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2Cert { /** @@ -99,7 +99,7 @@ class ArduinoDevicev2Cert { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2Cert.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2EventProperties.js b/src/model/ArduinoDevicev2EventProperties.js index 9b14d0d..38710a3 100644 --- a/src/model/ArduinoDevicev2EventProperties.js +++ b/src/model/ArduinoDevicev2EventProperties.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoDevicev2SimpleProperties from './ArduinoDevicev2SimpleProperties'; /** * The ArduinoDevicev2EventProperties model module. * @module model/ArduinoDevicev2EventProperties - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2EventProperties { /** @@ -71,7 +71,7 @@ class ArduinoDevicev2EventProperties { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2EventProperties.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2Otaupload.js b/src/model/ArduinoDevicev2Otaupload.js index 7f6b78f..8b01b16 100644 --- a/src/model/ArduinoDevicev2Otaupload.js +++ b/src/model/ArduinoDevicev2Otaupload.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2Otaupload model module. * @module model/ArduinoDevicev2Otaupload - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2Otaupload { /** @@ -74,7 +74,7 @@ class ArduinoDevicev2Otaupload { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2Otaupload.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2Pass.js b/src/model/ArduinoDevicev2Pass.js index 62d2e12..4006795 100644 --- a/src/model/ArduinoDevicev2Pass.js +++ b/src/model/ArduinoDevicev2Pass.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2Pass model module. * @module model/ArduinoDevicev2Pass - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2Pass { /** @@ -68,7 +68,7 @@ class ArduinoDevicev2Pass { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2Pass.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2SimpleProperties.js b/src/model/ArduinoDevicev2SimpleProperties.js index 230234d..dce885d 100644 --- a/src/model/ArduinoDevicev2SimpleProperties.js +++ b/src/model/ArduinoDevicev2SimpleProperties.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2SimpleProperties model module. * @module model/ArduinoDevicev2SimpleProperties - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2SimpleProperties { /** @@ -75,7 +75,7 @@ class ArduinoDevicev2SimpleProperties { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2SimpleProperties.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2StatusEvent.js b/src/model/ArduinoDevicev2StatusEvent.js index 7693aba..61eba9b 100644 --- a/src/model/ArduinoDevicev2StatusEvent.js +++ b/src/model/ArduinoDevicev2StatusEvent.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2StatusEvent model module. * @module model/ArduinoDevicev2StatusEvent - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2StatusEvent { /** @@ -70,7 +70,7 @@ class ArduinoDevicev2StatusEvent { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2StatusEvent.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2StatusEvents.js b/src/model/ArduinoDevicev2StatusEvents.js index 2d1b5e6..273ab41 100644 --- a/src/model/ArduinoDevicev2StatusEvents.js +++ b/src/model/ArduinoDevicev2StatusEvents.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoDevicev2StatusEvent from './ArduinoDevicev2StatusEvent'; /** * The ArduinoDevicev2StatusEvents model module. * @module model/ArduinoDevicev2StatusEvents - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2StatusEvents { /** @@ -71,7 +71,7 @@ class ArduinoDevicev2StatusEvents { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2StatusEvents.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2Webhook.js b/src/model/ArduinoDevicev2Webhook.js index f319b11..c8627df 100644 --- a/src/model/ArduinoDevicev2Webhook.js +++ b/src/model/ArduinoDevicev2Webhook.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2Webhook model module. * @module model/ArduinoDevicev2Webhook - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2Webhook { /** @@ -37,6 +37,7 @@ class ArduinoDevicev2Webhook { * Only for internal use. */ static initialize(obj, id, uri) { + obj['active'] = true; obj['id'] = id; obj['uri'] = uri; } @@ -73,7 +74,7 @@ class ArduinoDevicev2Webhook { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2Webhook.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2properties.js b/src/model/ArduinoDevicev2properties.js index 5512c68..4ff3030 100644 --- a/src/model/ArduinoDevicev2properties.js +++ b/src/model/ArduinoDevicev2properties.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoProperty from './ArduinoProperty'; /** * The ArduinoDevicev2properties model module. * @module model/ArduinoDevicev2properties - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2properties { /** @@ -81,7 +81,7 @@ class ArduinoDevicev2properties { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2properties.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2propertyvalue.js b/src/model/ArduinoDevicev2propertyvalue.js index 5d9b62a..b6c3521 100644 --- a/src/model/ArduinoDevicev2propertyvalue.js +++ b/src/model/ArduinoDevicev2propertyvalue.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoDevicev2propertyvalueValue from './ArduinoDevicev2propertyvalueVal /** * The ArduinoDevicev2propertyvalue model module. * @module model/ArduinoDevicev2propertyvalue - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2propertyvalue { /** diff --git a/src/model/ArduinoDevicev2propertyvalueValue.js b/src/model/ArduinoDevicev2propertyvalueValue.js index b525ac5..efda454 100644 --- a/src/model/ArduinoDevicev2propertyvalueValue.js +++ b/src/model/ArduinoDevicev2propertyvalueValue.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoDevicev2propertyvalueValueStatistics from './ArduinoDevicev2proper /** * The ArduinoDevicev2propertyvalueValue model module. * @module model/ArduinoDevicev2propertyvalueValue - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2propertyvalueValue { /** diff --git a/src/model/ArduinoDevicev2propertyvalueValueStatistics.js b/src/model/ArduinoDevicev2propertyvalueValueStatistics.js index ee094b8..baa5ea8 100644 --- a/src/model/ArduinoDevicev2propertyvalueValueStatistics.js +++ b/src/model/ArduinoDevicev2propertyvalueValueStatistics.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2propertyvalueValueStatistics model module. * @module model/ArduinoDevicev2propertyvalueValueStatistics - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2propertyvalueValueStatistics { /** diff --git a/src/model/ArduinoDevicev2propertyvalues.js b/src/model/ArduinoDevicev2propertyvalues.js index 0e1fd3a..c713280 100644 --- a/src/model/ArduinoDevicev2propertyvalues.js +++ b/src/model/ArduinoDevicev2propertyvalues.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -18,7 +18,7 @@ import ArduinoDevicev2propertyvaluesLastEvaluatedKey from './ArduinoDevicev2prop /** * The ArduinoDevicev2propertyvalues model module. * @module model/ArduinoDevicev2propertyvalues - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2propertyvalues { /** @@ -82,7 +82,7 @@ class ArduinoDevicev2propertyvalues { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoDevicev2propertyvalues.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.js b/src/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.js index 55b9048..aba8847 100644 --- a/src/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.js +++ b/src/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2propertyvaluesLastEvaluatedKey model module. * @module model/ArduinoDevicev2propertyvaluesLastEvaluatedKey - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2propertyvaluesLastEvaluatedKey { /** diff --git a/src/model/ArduinoDevicev2templatedevice.js b/src/model/ArduinoDevicev2templatedevice.js index 46b2426..edbcf01 100644 --- a/src/model/ArduinoDevicev2templatedevice.js +++ b/src/model/ArduinoDevicev2templatedevice.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoDevicev2templatedevice model module. * @module model/ArduinoDevicev2templatedevice - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoDevicev2templatedevice { /** diff --git a/src/model/ArduinoLinkedvariable.js b/src/model/ArduinoLinkedvariable.js index 9420426..c5a4b82 100644 --- a/src/model/ArduinoLinkedvariable.js +++ b/src/model/ArduinoLinkedvariable.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoTimezone from './ArduinoTimezone'; /** * The ArduinoLinkedvariable model module. * @module model/ArduinoLinkedvariable - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoLinkedvariable { /** @@ -105,7 +105,7 @@ class ArduinoLinkedvariable { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoLinkedvariable.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoLoradevicev1.js b/src/model/ArduinoLoradevicev1.js index 5f07d46..0e58167 100644 --- a/src/model/ArduinoLoradevicev1.js +++ b/src/model/ArduinoLoradevicev1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoLoradevicev1 model module. * @module model/ArduinoLoradevicev1 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoLoradevicev1 { /** @@ -80,7 +80,7 @@ class ArduinoLoradevicev1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoLoradevicev1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoLorafreqplansv1.js b/src/model/ArduinoLorafreqplansv1.js index 6f66b61..405587b 100644 --- a/src/model/ArduinoLorafreqplansv1.js +++ b/src/model/ArduinoLorafreqplansv1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoLorafreqplanv1 from './ArduinoLorafreqplanv1'; /** * The ArduinoLorafreqplansv1 model module. * @module model/ArduinoLorafreqplansv1 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoLorafreqplansv1 { /** diff --git a/src/model/ArduinoLorafreqplanv1.js b/src/model/ArduinoLorafreqplanv1.js index 3c2ac24..11be062 100644 --- a/src/model/ArduinoLorafreqplanv1.js +++ b/src/model/ArduinoLorafreqplanv1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoLorafreqplanv1 model module. * @module model/ArduinoLorafreqplanv1 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoLorafreqplanv1 { /** @@ -75,7 +75,7 @@ class ArduinoLorafreqplanv1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoLorafreqplanv1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoProperty.js b/src/model/ArduinoProperty.js index db56a51..7a05504 100644 --- a/src/model/ArduinoProperty.js +++ b/src/model/ArduinoProperty.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoProperty model module. * @module model/ArduinoProperty - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoProperty { /** @@ -137,7 +137,7 @@ class ArduinoProperty { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoProperty.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoPropertytype.js b/src/model/ArduinoPropertytype.js new file mode 100644 index 0000000..786e3ea --- /dev/null +++ b/src/model/ArduinoPropertytype.js @@ -0,0 +1,214 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +import ApiClient from '../ApiClient'; + +/** + * The ArduinoPropertytype model module. + * @module model/ArduinoPropertytype + * @version 3.0.0 + */ +class ArduinoPropertytype { + /** + * Constructs a new ArduinoPropertytype. + * ArduinoPropertytype media type (default view) + * @alias module:model/ArduinoPropertytype + * @param declaration {String} The c++ type we are using for this variable type + * @param deprecated {Boolean} Tell if this type is deprecated + * @param name {String} The friendly name of the property type + * @param rw {Boolean} Tell if the type allow a R/W permission + * @param type {String} The api reference of this type + */ + constructor(declaration, deprecated, name, rw, type) { + + ArduinoPropertytype.initialize(this, declaration, deprecated, name, rw, type); + } + + /** + * Initializes the fields of this object. + * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins). + * Only for internal use. + */ + static initialize(obj, declaration, deprecated, name, rw, type) { + obj['declaration'] = declaration; + obj['deprecated'] = deprecated; + obj['name'] = name; + obj['rw'] = rw; + obj['type'] = type; + } + + /** + * Constructs a ArduinoPropertytype from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/ArduinoPropertytype} obj Optional instance to populate. + * @return {module:model/ArduinoPropertytype} The populated ArduinoPropertytype instance. + */ + static constructFromObject(data, obj) { + if (data) { + obj = obj || new ArduinoPropertytype(); + + if (data.hasOwnProperty('assistants')) { + obj['assistants'] = ApiClient.convertToType(data['assistants'], ['String']); + } + if (data.hasOwnProperty('declaration')) { + obj['declaration'] = ApiClient.convertToType(data['declaration'], 'String'); + } + if (data.hasOwnProperty('deprecated')) { + obj['deprecated'] = ApiClient.convertToType(data['deprecated'], 'Boolean'); + } + if (data.hasOwnProperty('example')) { + obj['example'] = ApiClient.convertToType(data['example'], 'String'); + } + if (data.hasOwnProperty('name')) { + obj['name'] = ApiClient.convertToType(data['name'], 'String'); + } + if (data.hasOwnProperty('rw')) { + obj['rw'] = ApiClient.convertToType(data['rw'], 'Boolean'); + } + if (data.hasOwnProperty('supersededBy')) { + obj['supersededBy'] = ApiClient.convertToType(data['supersededBy'], 'String'); + } + if (data.hasOwnProperty('tags')) { + obj['tags'] = ApiClient.convertToType(data['tags'], ['String']); + } + if (data.hasOwnProperty('type')) { + obj['type'] = ApiClient.convertToType(data['type'], 'String'); + } + if (data.hasOwnProperty('units')) { + obj['units'] = ApiClient.convertToType(data['units'], ['String']); + } + } + return obj; + } + + /** + * Validates the JSON data with respect to ArduinoPropertytype. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @return {boolean} to indicate whether the JSON data is valid with respect to ArduinoPropertytype. + */ + static validateJSON(data) { + // check to make sure all required properties are present in the JSON string + for (const property of ArduinoPropertytype.RequiredProperties) { + if (!data.hasOwnProperty(property)) { + throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); + } + } + // ensure the json data is an array + if (!Array.isArray(data['assistants'])) { + throw new Error("Expected the field `assistants` to be an array in the JSON data but got " + data['assistants']); + } + // ensure the json data is a string + if (data['declaration'] && !(typeof data['declaration'] === 'string' || data['declaration'] instanceof String)) { + throw new Error("Expected the field `declaration` to be a primitive type in the JSON string but got " + data['declaration']); + } + // ensure the json data is a string + if (data['example'] && !(typeof data['example'] === 'string' || data['example'] instanceof String)) { + throw new Error("Expected the field `example` to be a primitive type in the JSON string but got " + data['example']); + } + // ensure the json data is a string + if (data['name'] && !(typeof data['name'] === 'string' || data['name'] instanceof String)) { + throw new Error("Expected the field `name` to be a primitive type in the JSON string but got " + data['name']); + } + // ensure the json data is a string + if (data['supersededBy'] && !(typeof data['supersededBy'] === 'string' || data['supersededBy'] instanceof String)) { + throw new Error("Expected the field `supersededBy` to be a primitive type in the JSON string but got " + data['supersededBy']); + } + // ensure the json data is an array + if (!Array.isArray(data['tags'])) { + throw new Error("Expected the field `tags` to be an array in the JSON data but got " + data['tags']); + } + // ensure the json data is a string + if (data['type'] && !(typeof data['type'] === 'string' || data['type'] instanceof String)) { + throw new Error("Expected the field `type` to be a primitive type in the JSON string but got " + data['type']); + } + // ensure the json data is an array + if (!Array.isArray(data['units'])) { + throw new Error("Expected the field `units` to be an array in the JSON data but got " + data['units']); + } + + return true; + } + + +} + +ArduinoPropertytype.RequiredProperties = ["declaration", "deprecated", "name", "rw", "type"]; + +/** + * The voice assistants available for this type + * @member {Array.} assistants + */ +ArduinoPropertytype.prototype['assistants'] = undefined; + +/** + * The c++ type we are using for this variable type + * @member {String} declaration + */ +ArduinoPropertytype.prototype['declaration'] = undefined; + +/** + * Tell if this type is deprecated + * @member {Boolean} deprecated + */ +ArduinoPropertytype.prototype['deprecated'] = undefined; + +/** + * Example of use + * @member {String} example + */ +ArduinoPropertytype.prototype['example'] = undefined; + +/** + * The friendly name of the property type + * @member {String} name + */ +ArduinoPropertytype.prototype['name'] = undefined; + +/** + * Tell if the type allow a R/W permission + * @member {Boolean} rw + */ +ArduinoPropertytype.prototype['rw'] = undefined; + +/** + * The type of property to use if it's deprecated + * @member {String} supersededBy + */ +ArduinoPropertytype.prototype['supersededBy'] = undefined; + +/** + * The tags related to the type + * @member {Array.} tags + */ +ArduinoPropertytype.prototype['tags'] = undefined; + +/** + * The api reference of this type + * @member {String} type + */ +ArduinoPropertytype.prototype['type'] = undefined; + +/** + * The measure units available for this type + * @member {Array.} units + */ +ArduinoPropertytype.prototype['units'] = undefined; + + + + + + +export default ArduinoPropertytype; + diff --git a/src/model/ArduinoSeriesBatch.js b/src/model/ArduinoSeriesBatch.js index e02bd08..f78049c 100644 --- a/src/model/ArduinoSeriesBatch.js +++ b/src/model/ArduinoSeriesBatch.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoSeriesResponse from './ArduinoSeriesResponse'; /** * The ArduinoSeriesBatch model module. * @module model/ArduinoSeriesBatch - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesBatch { /** @@ -71,7 +71,7 @@ class ArduinoSeriesBatch { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesBatch.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoSeriesBatchSampled.js b/src/model/ArduinoSeriesBatchSampled.js index b0a1dee..a229089 100644 --- a/src/model/ArduinoSeriesBatchSampled.js +++ b/src/model/ArduinoSeriesBatchSampled.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoSeriesSampledResponse from './ArduinoSeriesSampledResponse'; /** * The ArduinoSeriesBatchSampled model module. * @module model/ArduinoSeriesBatchSampled - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesBatchSampled { /** @@ -71,7 +71,7 @@ class ArduinoSeriesBatchSampled { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesBatchSampled.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoSeriesRawBatch.js b/src/model/ArduinoSeriesRawBatch.js index df58376..b2b40e5 100644 --- a/src/model/ArduinoSeriesRawBatch.js +++ b/src/model/ArduinoSeriesRawBatch.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoSeriesRawResponse from './ArduinoSeriesRawResponse'; /** * The ArduinoSeriesRawBatch model module. * @module model/ArduinoSeriesRawBatch - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesRawBatch { /** @@ -71,7 +71,7 @@ class ArduinoSeriesRawBatch { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesRawBatch.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoSeriesRawBatchLastvalue.js b/src/model/ArduinoSeriesRawBatchLastvalue.js index afd17a1..0284fe0 100644 --- a/src/model/ArduinoSeriesRawBatchLastvalue.js +++ b/src/model/ArduinoSeriesRawBatchLastvalue.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoSeriesRawLastValueResponse from './ArduinoSeriesRawLastValueRespon /** * The ArduinoSeriesRawBatchLastvalue model module. * @module model/ArduinoSeriesRawBatchLastvalue - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesRawBatchLastvalue { /** @@ -71,7 +71,7 @@ class ArduinoSeriesRawBatchLastvalue { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesRawBatchLastvalue.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoSeriesRawLastValueResponse.js b/src/model/ArduinoSeriesRawLastValueResponse.js index 2381b27..2b48560 100644 --- a/src/model/ArduinoSeriesRawLastValueResponse.js +++ b/src/model/ArduinoSeriesRawLastValueResponse.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoSeriesRawLastValueResponse model module. * @module model/ArduinoSeriesRawLastValueResponse - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesRawLastValueResponse { /** @@ -85,7 +85,7 @@ class ArduinoSeriesRawLastValueResponse { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesRawLastValueResponse.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoSeriesRawResponse.js b/src/model/ArduinoSeriesRawResponse.js index 567822e..469a030 100644 --- a/src/model/ArduinoSeriesRawResponse.js +++ b/src/model/ArduinoSeriesRawResponse.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import BatchQueryRawResponseSeriesMediaV1 from './BatchQueryRawResponseSeriesMed /** * The ArduinoSeriesRawResponse model module. * @module model/ArduinoSeriesRawResponse - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesRawResponse { /** @@ -48,6 +48,7 @@ class ArduinoSeriesRawResponse { static initialize(obj, countValues, fromDate, query, respVersion, series, sort, status, times, toDate, values) { obj['count_values'] = countValues; obj['from_date'] = fromDate; + obj['message'] = ''; obj['query'] = query; obj['resp_version'] = respVersion; obj['series'] = series; @@ -78,6 +79,15 @@ class ArduinoSeriesRawResponse { if (data.hasOwnProperty('message')) { obj['message'] = ApiClient.convertToType(data['message'], 'String'); } + if (data.hasOwnProperty('property_id')) { + obj['property_id'] = ApiClient.convertToType(data['property_id'], 'String'); + } + if (data.hasOwnProperty('property_name')) { + obj['property_name'] = ApiClient.convertToType(data['property_name'], 'String'); + } + if (data.hasOwnProperty('property_type')) { + obj['property_type'] = ApiClient.convertToType(data['property_type'], 'String'); + } if (data.hasOwnProperty('query')) { obj['query'] = ApiClient.convertToType(data['query'], 'String'); } @@ -96,6 +106,9 @@ class ArduinoSeriesRawResponse { if (data.hasOwnProperty('status')) { obj['status'] = ApiClient.convertToType(data['status'], 'String'); } + if (data.hasOwnProperty('thing_id')) { + obj['thing_id'] = ApiClient.convertToType(data['thing_id'], 'String'); + } if (data.hasOwnProperty('times')) { obj['times'] = ApiClient.convertToType(data['times'], ['Date']); } @@ -117,7 +130,7 @@ class ArduinoSeriesRawResponse { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesRawResponse.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } @@ -126,6 +139,18 @@ class ArduinoSeriesRawResponse { throw new Error("Expected the field `message` to be a primitive type in the JSON string but got " + data['message']); } // ensure the json data is a string + if (data['property_id'] && !(typeof data['property_id'] === 'string' || data['property_id'] instanceof String)) { + throw new Error("Expected the field `property_id` to be a primitive type in the JSON string but got " + data['property_id']); + } + // ensure the json data is a string + if (data['property_name'] && !(typeof data['property_name'] === 'string' || data['property_name'] instanceof String)) { + throw new Error("Expected the field `property_name` to be a primitive type in the JSON string but got " + data['property_name']); + } + // ensure the json data is a string + if (data['property_type'] && !(typeof data['property_type'] === 'string' || data['property_type'] instanceof String)) { + throw new Error("Expected the field `property_type` to be a primitive type in the JSON string but got " + data['property_type']); + } + // ensure the json data is a string if (data['query'] && !(typeof data['query'] === 'string' || data['query'] instanceof String)) { throw new Error("Expected the field `query` to be a primitive type in the JSON string but got " + data['query']); } @@ -141,6 +166,10 @@ class ArduinoSeriesRawResponse { if (data['status'] && !(typeof data['status'] === 'string' || data['status'] instanceof String)) { throw new Error("Expected the field `status` to be a primitive type in the JSON string but got " + data['status']); } + // ensure the json data is a string + if (data['thing_id'] && !(typeof data['thing_id'] === 'string' || data['thing_id'] instanceof String)) { + throw new Error("Expected the field `thing_id` to be a primitive type in the JSON string but got " + data['thing_id']); + } // ensure the json data is an array if (!Array.isArray(data['times'])) { throw new Error("Expected the field `times` to be an array in the JSON data but got " + data['times']); @@ -177,6 +206,24 @@ ArduinoSeriesRawResponse.prototype['from_date'] = undefined; */ ArduinoSeriesRawResponse.prototype['message'] = ''; +/** + * Property id + * @member {String} property_id + */ +ArduinoSeriesRawResponse.prototype['property_id'] = undefined; + +/** + * Property name + * @member {String} property_name + */ +ArduinoSeriesRawResponse.prototype['property_name'] = undefined; + +/** + * Property type + * @member {String} property_type + */ +ArduinoSeriesRawResponse.prototype['property_type'] = undefined; + /** * Query of for the data * @member {String} query @@ -212,6 +259,12 @@ ArduinoSeriesRawResponse.prototype['sort'] = undefined; */ ArduinoSeriesRawResponse.prototype['status'] = undefined; +/** + * Thing id + * @member {String} thing_id + */ +ArduinoSeriesRawResponse.prototype['thing_id'] = undefined; + /** * Timestamp in RFC3339 * @member {Array.} times diff --git a/src/model/ArduinoSeriesResponse.js b/src/model/ArduinoSeriesResponse.js index 8783041..aa142d1 100644 --- a/src/model/ArduinoSeriesResponse.js +++ b/src/model/ArduinoSeriesResponse.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoSeriesResponse model module. * @module model/ArduinoSeriesResponse - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesResponse { /** @@ -47,6 +47,7 @@ class ArduinoSeriesResponse { obj['count_values'] = countValues; obj['from_date'] = fromDate; obj['interval'] = interval; + obj['message'] = ''; obj['query'] = query; obj['resp_version'] = respVersion; obj['status'] = status; @@ -81,6 +82,15 @@ class ArduinoSeriesResponse { if (data.hasOwnProperty('message')) { obj['message'] = ApiClient.convertToType(data['message'], 'String'); } + if (data.hasOwnProperty('property_id')) { + obj['property_id'] = ApiClient.convertToType(data['property_id'], 'String'); + } + if (data.hasOwnProperty('property_name')) { + obj['property_name'] = ApiClient.convertToType(data['property_name'], 'String'); + } + if (data.hasOwnProperty('property_type')) { + obj['property_type'] = ApiClient.convertToType(data['property_type'], 'String'); + } if (data.hasOwnProperty('query')) { obj['query'] = ApiClient.convertToType(data['query'], 'String'); } @@ -93,6 +103,9 @@ class ArduinoSeriesResponse { if (data.hasOwnProperty('status')) { obj['status'] = ApiClient.convertToType(data['status'], 'String'); } + if (data.hasOwnProperty('thing_id')) { + obj['thing_id'] = ApiClient.convertToType(data['thing_id'], 'String'); + } if (data.hasOwnProperty('times')) { obj['times'] = ApiClient.convertToType(data['times'], ['Date']); } @@ -114,7 +127,7 @@ class ArduinoSeriesResponse { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesResponse.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } @@ -127,6 +140,18 @@ class ArduinoSeriesResponse { throw new Error("Expected the field `message` to be a primitive type in the JSON string but got " + data['message']); } // ensure the json data is a string + if (data['property_id'] && !(typeof data['property_id'] === 'string' || data['property_id'] instanceof String)) { + throw new Error("Expected the field `property_id` to be a primitive type in the JSON string but got " + data['property_id']); + } + // ensure the json data is a string + if (data['property_name'] && !(typeof data['property_name'] === 'string' || data['property_name'] instanceof String)) { + throw new Error("Expected the field `property_name` to be a primitive type in the JSON string but got " + data['property_name']); + } + // ensure the json data is a string + if (data['property_type'] && !(typeof data['property_type'] === 'string' || data['property_type'] instanceof String)) { + throw new Error("Expected the field `property_type` to be a primitive type in the JSON string but got " + data['property_type']); + } + // ensure the json data is a string if (data['query'] && !(typeof data['query'] === 'string' || data['query'] instanceof String)) { throw new Error("Expected the field `query` to be a primitive type in the JSON string but got " + data['query']); } @@ -134,6 +159,10 @@ class ArduinoSeriesResponse { if (data['status'] && !(typeof data['status'] === 'string' || data['status'] instanceof String)) { throw new Error("Expected the field `status` to be a primitive type in the JSON string but got " + data['status']); } + // ensure the json data is a string + if (data['thing_id'] && !(typeof data['thing_id'] === 'string' || data['thing_id'] instanceof String)) { + throw new Error("Expected the field `thing_id` to be a primitive type in the JSON string but got " + data['thing_id']); + } // ensure the json data is an array if (!Array.isArray(data['times'])) { throw new Error("Expected the field `times` to be an array in the JSON data but got " + data['times']); @@ -182,6 +211,24 @@ ArduinoSeriesResponse.prototype['interval'] = undefined; */ ArduinoSeriesResponse.prototype['message'] = ''; +/** + * Property id + * @member {String} property_id + */ +ArduinoSeriesResponse.prototype['property_id'] = undefined; + +/** + * Property name + * @member {String} property_name + */ +ArduinoSeriesResponse.prototype['property_name'] = undefined; + +/** + * Property type + * @member {String} property_type + */ +ArduinoSeriesResponse.prototype['property_type'] = undefined; + /** * Query of for the data * @member {String} query @@ -206,6 +253,12 @@ ArduinoSeriesResponse.prototype['series_limit'] = undefined; */ ArduinoSeriesResponse.prototype['status'] = undefined; +/** + * Thing id + * @member {String} thing_id + */ +ArduinoSeriesResponse.prototype['thing_id'] = undefined; + /** * Timestamp in RFC3339 * @member {Array.} times diff --git a/src/model/ArduinoSeriesSampledResponse.js b/src/model/ArduinoSeriesSampledResponse.js index f7c0f59..1d06a18 100644 --- a/src/model/ArduinoSeriesSampledResponse.js +++ b/src/model/ArduinoSeriesSampledResponse.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoSeriesSampledResponse model module. * @module model/ArduinoSeriesSampledResponse - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoSeriesSampledResponse { /** @@ -47,6 +47,7 @@ class ArduinoSeriesSampledResponse { obj['count_values'] = countValues; obj['from_date'] = fromDate; obj['interval'] = interval; + obj['message'] = ''; obj['query'] = query; obj['resp_version'] = respVersion; obj['status'] = status; @@ -78,6 +79,15 @@ class ArduinoSeriesSampledResponse { if (data.hasOwnProperty('message')) { obj['message'] = ApiClient.convertToType(data['message'], 'String'); } + if (data.hasOwnProperty('property_id')) { + obj['property_id'] = ApiClient.convertToType(data['property_id'], 'String'); + } + if (data.hasOwnProperty('property_name')) { + obj['property_name'] = ApiClient.convertToType(data['property_name'], 'String'); + } + if (data.hasOwnProperty('property_type')) { + obj['property_type'] = ApiClient.convertToType(data['property_type'], 'String'); + } if (data.hasOwnProperty('query')) { obj['query'] = ApiClient.convertToType(data['query'], 'String'); } @@ -90,6 +100,9 @@ class ArduinoSeriesSampledResponse { if (data.hasOwnProperty('status')) { obj['status'] = ApiClient.convertToType(data['status'], 'String'); } + if (data.hasOwnProperty('thing_id')) { + obj['thing_id'] = ApiClient.convertToType(data['thing_id'], 'String'); + } if (data.hasOwnProperty('times')) { obj['times'] = ApiClient.convertToType(data['times'], ['Date']); } @@ -111,7 +124,7 @@ class ArduinoSeriesSampledResponse { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoSeriesSampledResponse.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } @@ -120,6 +133,18 @@ class ArduinoSeriesSampledResponse { throw new Error("Expected the field `message` to be a primitive type in the JSON string but got " + data['message']); } // ensure the json data is a string + if (data['property_id'] && !(typeof data['property_id'] === 'string' || data['property_id'] instanceof String)) { + throw new Error("Expected the field `property_id` to be a primitive type in the JSON string but got " + data['property_id']); + } + // ensure the json data is a string + if (data['property_name'] && !(typeof data['property_name'] === 'string' || data['property_name'] instanceof String)) { + throw new Error("Expected the field `property_name` to be a primitive type in the JSON string but got " + data['property_name']); + } + // ensure the json data is a string + if (data['property_type'] && !(typeof data['property_type'] === 'string' || data['property_type'] instanceof String)) { + throw new Error("Expected the field `property_type` to be a primitive type in the JSON string but got " + data['property_type']); + } + // ensure the json data is a string if (data['query'] && !(typeof data['query'] === 'string' || data['query'] instanceof String)) { throw new Error("Expected the field `query` to be a primitive type in the JSON string but got " + data['query']); } @@ -127,6 +152,10 @@ class ArduinoSeriesSampledResponse { if (data['status'] && !(typeof data['status'] === 'string' || data['status'] instanceof String)) { throw new Error("Expected the field `status` to be a primitive type in the JSON string but got " + data['status']); } + // ensure the json data is a string + if (data['thing_id'] && !(typeof data['thing_id'] === 'string' || data['thing_id'] instanceof String)) { + throw new Error("Expected the field `thing_id` to be a primitive type in the JSON string but got " + data['thing_id']); + } // ensure the json data is an array if (!Array.isArray(data['times'])) { throw new Error("Expected the field `times` to be an array in the JSON data but got " + data['times']); @@ -169,6 +198,24 @@ ArduinoSeriesSampledResponse.prototype['interval'] = undefined; */ ArduinoSeriesSampledResponse.prototype['message'] = ''; +/** + * Property id + * @member {String} property_id + */ +ArduinoSeriesSampledResponse.prototype['property_id'] = undefined; + +/** + * Property name + * @member {String} property_name + */ +ArduinoSeriesSampledResponse.prototype['property_name'] = undefined; + +/** + * Property type + * @member {String} property_type + */ +ArduinoSeriesSampledResponse.prototype['property_type'] = undefined; + /** * Query of for the data * @member {String} query @@ -193,6 +240,12 @@ ArduinoSeriesSampledResponse.prototype['series_limit'] = undefined; */ ArduinoSeriesSampledResponse.prototype['status'] = undefined; +/** + * Thing id + * @member {String} thing_id + */ +ArduinoSeriesSampledResponse.prototype['thing_id'] = undefined; + /** * Timestamp in RFC3339 * @member {Array.} times diff --git a/src/model/ArduinoTags.js b/src/model/ArduinoTags.js index 184e395..d3661b1 100644 --- a/src/model/ArduinoTags.js +++ b/src/model/ArduinoTags.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import Tag from './Tag'; /** * The ArduinoTags model module. * @module model/ArduinoTags - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoTags { /** @@ -66,7 +66,7 @@ class ArduinoTags { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoTags.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoTemplate.js b/src/model/ArduinoTemplate.js index db7e505..0501c36 100644 --- a/src/model/ArduinoTemplate.js +++ b/src/model/ArduinoTemplate.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoThingresult from './ArduinoThingresult'; /** * The ArduinoTemplate model module. * @module model/ArduinoTemplate - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoTemplate { /** @@ -72,7 +72,7 @@ class ArduinoTemplate { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoTemplate.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoTemplateproperty.js b/src/model/ArduinoTemplateproperty.js index e7b0d8c..abadf4c 100644 --- a/src/model/ArduinoTemplateproperty.js +++ b/src/model/ArduinoTemplateproperty.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoTemplateproperty model module. * @module model/ArduinoTemplateproperty - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoTemplateproperty { /** @@ -89,7 +89,7 @@ class ArduinoTemplateproperty { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoTemplateproperty.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoTemplatevariable.js b/src/model/ArduinoTemplatevariable.js index 431b9dd..8642ce6 100644 --- a/src/model/ArduinoTemplatevariable.js +++ b/src/model/ArduinoTemplatevariable.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoTimezone from './ArduinoTimezone'; /** * The ArduinoTemplatevariable model module. * @module model/ArduinoTemplatevariable - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoTemplatevariable { /** @@ -89,7 +89,7 @@ class ArduinoTemplatevariable { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoTemplatevariable.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoThing.js b/src/model/ArduinoThing.js index 227849a..2345aaa 100644 --- a/src/model/ArduinoThing.js +++ b/src/model/ArduinoThing.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoProperty from './ArduinoProperty'; /** * The ArduinoThing model module. * @module model/ArduinoThing - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoThing { /** @@ -131,7 +131,7 @@ class ArduinoThing { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoThing.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoThingresult.js b/src/model/ArduinoThingresult.js index 109a2fa..99456da 100644 --- a/src/model/ArduinoThingresult.js +++ b/src/model/ArduinoThingresult.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoThingresult model module. * @module model/ArduinoThingresult - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoThingresult { /** @@ -73,7 +73,7 @@ class ArduinoThingresult { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoThingresult.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoThingtemplate.js b/src/model/ArduinoThingtemplate.js index 7d53e58..5cef9bd 100644 --- a/src/model/ArduinoThingtemplate.js +++ b/src/model/ArduinoThingtemplate.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -19,7 +19,7 @@ import Tag from './Tag'; /** * The ArduinoThingtemplate model module. * @module model/ArduinoThingtemplate - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoThingtemplate { /** @@ -94,7 +94,7 @@ class ArduinoThingtemplate { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoThingtemplate.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoTimeseriesmedia.js b/src/model/ArduinoTimeseriesmedia.js index 92f6ea9..a272257 100644 --- a/src/model/ArduinoTimeseriesmedia.js +++ b/src/model/ArduinoTimeseriesmedia.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import TimeseriesDataPoint from './TimeseriesDataPoint'; /** * The ArduinoTimeseriesmedia model module. * @module model/ArduinoTimeseriesmedia - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoTimeseriesmedia { /** @@ -66,7 +66,7 @@ class ArduinoTimeseriesmedia { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoTimeseriesmedia.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoTimezone.js b/src/model/ArduinoTimezone.js index b728e8c..cd22fa8 100644 --- a/src/model/ArduinoTimezone.js +++ b/src/model/ArduinoTimezone.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoTimezone model module. * @module model/ArduinoTimezone - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoTimezone { /** @@ -75,7 +75,7 @@ class ArduinoTimezone { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoTimezone.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoVariableslinks.js b/src/model/ArduinoVariableslinks.js index 4698ddd..577ce69 100644 --- a/src/model/ArduinoVariableslinks.js +++ b/src/model/ArduinoVariableslinks.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ArduinoVariableslinks model module. * @module model/ArduinoVariableslinks - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoVariableslinks { /** @@ -65,7 +65,7 @@ class ArduinoVariableslinks { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoVariableslinks.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoWidgetv2.js b/src/model/ArduinoWidgetv2.js index 48449ca..15bd68b 100644 --- a/src/model/ArduinoWidgetv2.js +++ b/src/model/ArduinoWidgetv2.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoLinkedvariable from './ArduinoLinkedvariable'; /** * The ArduinoWidgetv2 model module. * @module model/ArduinoWidgetv2 - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoWidgetv2 { /** @@ -123,7 +123,7 @@ class ArduinoWidgetv2 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoWidgetv2.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ArduinoWidgetv2template.js b/src/model/ArduinoWidgetv2template.js index 61a2d5c..bada856 100644 --- a/src/model/ArduinoWidgetv2template.js +++ b/src/model/ArduinoWidgetv2template.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import ArduinoTemplatevariable from './ArduinoTemplatevariable'; /** * The ArduinoWidgetv2template model module. * @module model/ArduinoWidgetv2template - * @version 2.0.5 + * @version 3.0.0 */ class ArduinoWidgetv2template { /** @@ -109,7 +109,7 @@ class ArduinoWidgetv2template { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ArduinoWidgetv2template.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/BatchLastValueRequestsMediaV1.js b/src/model/BatchLastValueRequestsMediaV1.js index ccef104..790c068 100644 --- a/src/model/BatchLastValueRequestsMediaV1.js +++ b/src/model/BatchLastValueRequestsMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import BatchQueryRawLastValueRequestMediaV1 from './BatchQueryRawLastValueReques /** * The BatchLastValueRequestsMediaV1 model module. * @module model/BatchLastValueRequestsMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchLastValueRequestsMediaV1 { /** @@ -65,7 +65,7 @@ class BatchLastValueRequestsMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchLastValueRequestsMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/BatchQueryRawLastValueRequestMediaV1.js b/src/model/BatchQueryRawLastValueRequestMediaV1.js index e678abf..38b7950 100644 --- a/src/model/BatchQueryRawLastValueRequestMediaV1.js +++ b/src/model/BatchQueryRawLastValueRequestMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The BatchQueryRawLastValueRequestMediaV1 model module. * @module model/BatchQueryRawLastValueRequestMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQueryRawLastValueRequestMediaV1 { /** @@ -69,7 +69,7 @@ class BatchQueryRawLastValueRequestMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQueryRawLastValueRequestMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/BatchQueryRawRequestMediaV1.js b/src/model/BatchQueryRawRequestMediaV1.js index 2ed253d..2139734 100644 --- a/src/model/BatchQueryRawRequestMediaV1.js +++ b/src/model/BatchQueryRawRequestMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,13 +16,13 @@ import ApiClient from '../ApiClient'; /** * The BatchQueryRawRequestMediaV1 model module. * @module model/BatchQueryRawRequestMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQueryRawRequestMediaV1 { /** * Constructs a new BatchQueryRawRequestMediaV1. * @alias module:model/BatchQueryRawRequestMediaV1 - * @param q {String} Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5) + * @param q {String} Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5 or thing.95717675-4786-4ffc-afcc-799777755391) */ constructor(q) { @@ -36,6 +36,7 @@ class BatchQueryRawRequestMediaV1 { */ static initialize(obj, q) { obj['q'] = q; + obj['sort'] = 'DESC'; } /** @@ -76,7 +77,7 @@ class BatchQueryRawRequestMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQueryRawRequestMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } @@ -104,13 +105,13 @@ BatchQueryRawRequestMediaV1.RequiredProperties = ["q"]; BatchQueryRawRequestMediaV1.prototype['from'] = undefined; /** - * Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5) + * Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5 or thing.95717675-4786-4ffc-afcc-799777755391) * @member {String} q */ BatchQueryRawRequestMediaV1.prototype['q'] = undefined; /** - * Max of values + * Maximum number of values returned, if any (default/limit: 1000, 10000 in case of thing query) * @member {Number} series_limit */ BatchQueryRawRequestMediaV1.prototype['series_limit'] = undefined; diff --git a/src/model/BatchQueryRawRequestsMediaV1.js b/src/model/BatchQueryRawRequestsMediaV1.js index f0bede8..c0ff287 100644 --- a/src/model/BatchQueryRawRequestsMediaV1.js +++ b/src/model/BatchQueryRawRequestsMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import BatchQueryRawRequestMediaV1 from './BatchQueryRawRequestMediaV1'; /** * The BatchQueryRawRequestsMediaV1 model module. * @module model/BatchQueryRawRequestsMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQueryRawRequestsMediaV1 { /** @@ -70,7 +70,7 @@ class BatchQueryRawRequestsMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQueryRawRequestsMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/BatchQueryRawResponseSeriesMediaV1.js b/src/model/BatchQueryRawResponseSeriesMediaV1.js index cde2908..ad6bdcc 100644 --- a/src/model/BatchQueryRawResponseSeriesMediaV1.js +++ b/src/model/BatchQueryRawResponseSeriesMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The BatchQueryRawResponseSeriesMediaV1 model module. * @module model/BatchQueryRawResponseSeriesMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQueryRawResponseSeriesMediaV1 { /** @@ -64,7 +64,7 @@ class BatchQueryRawResponseSeriesMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQueryRawResponseSeriesMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/BatchQueryRequestMediaV1.js b/src/model/BatchQueryRequestMediaV1.js index a08c457..7affd5c 100644 --- a/src/model/BatchQueryRequestMediaV1.js +++ b/src/model/BatchQueryRequestMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,14 +16,14 @@ import ApiClient from '../ApiClient'; /** * The BatchQueryRequestMediaV1 model module. * @module model/BatchQueryRequestMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQueryRequestMediaV1 { /** * Constructs a new BatchQueryRequestMediaV1. * @alias module:model/BatchQueryRequestMediaV1 * @param from {Date} From timestamp - * @param q {String} Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5) + * @param q {String} Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5 or thing.95717675-4786-4ffc-afcc-799777755391) * @param to {Date} To timestamp */ constructor(from, q, to) { @@ -83,7 +83,7 @@ class BatchQueryRequestMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQueryRequestMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } @@ -123,13 +123,13 @@ BatchQueryRequestMediaV1.prototype['from'] = undefined; BatchQueryRequestMediaV1.prototype['interval'] = undefined; /** - * Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5) + * Data selection query (e.g. property.2a99729d-2556-4220-a139-023348a1e6b5 or thing.95717675-4786-4ffc-afcc-799777755391) * @member {String} q */ BatchQueryRequestMediaV1.prototype['q'] = undefined; /** - * Maximum number of values returned after data aggregation, if any (default: 300, limit: 1000) + * Maximum number of values returned after data aggregation, if any (default: 300, limit: 1000 - 10000 in case of thing query) * @member {Number} series_limit */ BatchQueryRequestMediaV1.prototype['series_limit'] = undefined; diff --git a/src/model/BatchQueryRequestsMediaV1.js b/src/model/BatchQueryRequestsMediaV1.js index 56d99c9..afe7ae6 100644 --- a/src/model/BatchQueryRequestsMediaV1.js +++ b/src/model/BatchQueryRequestsMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import BatchQueryRequestMediaV1 from './BatchQueryRequestMediaV1'; /** * The BatchQueryRequestsMediaV1 model module. * @module model/BatchQueryRequestsMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQueryRequestsMediaV1 { /** @@ -70,7 +70,7 @@ class BatchQueryRequestsMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQueryRequestsMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/BatchQuerySampledRequestMediaV1.js b/src/model/BatchQuerySampledRequestMediaV1.js index a6c6256..680d302 100644 --- a/src/model/BatchQuerySampledRequestMediaV1.js +++ b/src/model/BatchQuerySampledRequestMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The BatchQuerySampledRequestMediaV1 model module. * @module model/BatchQuerySampledRequestMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQuerySampledRequestMediaV1 { /** @@ -35,6 +35,7 @@ class BatchQuerySampledRequestMediaV1 { * Only for internal use. */ static initialize(obj, q) { + obj['interval'] = 300; obj['q'] = q; } @@ -76,7 +77,7 @@ class BatchQuerySampledRequestMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQuerySampledRequestMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/BatchQuerySampledRequestsMediaV1.js b/src/model/BatchQuerySampledRequestsMediaV1.js index 7e3dd2b..2d9de7f 100644 --- a/src/model/BatchQuerySampledRequestsMediaV1.js +++ b/src/model/BatchQuerySampledRequestsMediaV1.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import BatchQuerySampledRequestMediaV1 from './BatchQuerySampledRequestMediaV1'; /** * The BatchQuerySampledRequestsMediaV1 model module. * @module model/BatchQuerySampledRequestsMediaV1 - * @version 2.0.5 + * @version 3.0.0 */ class BatchQuerySampledRequestsMediaV1 { /** @@ -70,7 +70,7 @@ class BatchQuerySampledRequestsMediaV1 { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of BatchQuerySampledRequestsMediaV1.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/CheckDevicesV2PassPayload.js b/src/model/CheckDevicesV2PassPayload.js index 5e4e86b..e4ec170 100644 --- a/src/model/CheckDevicesV2PassPayload.js +++ b/src/model/CheckDevicesV2PassPayload.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The CheckDevicesV2PassPayload model module. * @module model/CheckDevicesV2PassPayload - * @version 2.0.5 + * @version 3.0.0 */ class CheckDevicesV2PassPayload { /** @@ -64,7 +64,7 @@ class CheckDevicesV2PassPayload { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of CheckDevicesV2PassPayload.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Clone.js b/src/model/Clone.js index 13e2ca1..6d478f9 100644 --- a/src/model/Clone.js +++ b/src/model/Clone.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import Override from './Override'; /** * The Clone model module. * @module model/Clone - * @version 2.0.5 + * @version 3.0.0 */ class Clone { /** diff --git a/src/model/CreateDevicesV2CertsPayload.js b/src/model/CreateDevicesV2CertsPayload.js index 88fd951..71c7a73 100644 --- a/src/model/CreateDevicesV2CertsPayload.js +++ b/src/model/CreateDevicesV2CertsPayload.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The CreateDevicesV2CertsPayload model module. * @module model/CreateDevicesV2CertsPayload - * @version 2.0.5 + * @version 3.0.0 */ class CreateDevicesV2CertsPayload { /** @@ -72,7 +72,7 @@ class CreateDevicesV2CertsPayload { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of CreateDevicesV2CertsPayload.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/CreateDevicesV2Payload.js b/src/model/CreateDevicesV2Payload.js index 764dcbe..95d5daa 100644 --- a/src/model/CreateDevicesV2Payload.js +++ b/src/model/CreateDevicesV2Payload.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The CreateDevicesV2Payload model module. * @module model/CreateDevicesV2Payload - * @version 2.0.5 + * @version 3.0.0 */ class CreateDevicesV2Payload { /** @@ -83,7 +83,7 @@ class CreateDevicesV2Payload { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of CreateDevicesV2Payload.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } @@ -258,30 +258,12 @@ CreateDevicesV2Payload['TypeEnum'] = { */ "mkrgsm1400": "mkrgsm1400", - /** - * value: "mkrwan1310" - * @const - */ - "mkrwan1310": "mkrwan1310", - - /** - * value: "mkrwan1300" - * @const - */ - "mkrwan1300": "mkrwan1300", - /** * value: "mkrnb1500" * @const */ "mkrnb1500": "mkrnb1500", - /** - * value: "lora-device" - * @const - */ - "lora-device": "lora-device", - /** * value: "login_and_secretkey_wifi" * @const diff --git a/src/model/CreateLoraDevicesV1Payload.js b/src/model/CreateLoraDevicesV1Payload.js index afd7123..c01d1f7 100644 --- a/src/model/CreateLoraDevicesV1Payload.js +++ b/src/model/CreateLoraDevicesV1Payload.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The CreateLoraDevicesV1Payload model module. * @module model/CreateLoraDevicesV1Payload - * @version 2.0.5 + * @version 3.0.0 */ class CreateLoraDevicesV1Payload { /** @@ -98,7 +98,7 @@ class CreateLoraDevicesV1Payload { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of CreateLoraDevicesV1Payload.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Dashboardshare.js b/src/model/Dashboardshare.js index 0bcb8b7..c97f55b 100644 --- a/src/model/Dashboardshare.js +++ b/src/model/Dashboardshare.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Dashboardshare model module. * @module model/Dashboardshare - * @version 2.0.5 + * @version 3.0.0 */ class Dashboardshare { /** diff --git a/src/model/Dashboardv2.js b/src/model/Dashboardv2.js index e68fd96..f49156b 100644 --- a/src/model/Dashboardv2.js +++ b/src/model/Dashboardv2.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import Widget from './Widget'; /** * The Dashboardv2 model module. * @module model/Dashboardv2 - * @version 2.0.5 + * @version 3.0.0 */ class Dashboardv2 { /** diff --git a/src/model/Devicev2.js b/src/model/Devicev2.js index 82782c4..83896c3 100644 --- a/src/model/Devicev2.js +++ b/src/model/Devicev2.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Devicev2 model module. * @module model/Devicev2 - * @version 2.0.5 + * @version 3.0.0 */ class Devicev2 { /** @@ -250,30 +250,12 @@ Devicev2['TypeEnum'] = { */ "mkrgsm1400": "mkrgsm1400", - /** - * value: "mkrwan1310" - * @const - */ - "mkrwan1310": "mkrwan1310", - - /** - * value: "mkrwan1300" - * @const - */ - "mkrwan1300": "mkrwan1300", - /** * value: "mkrnb1500" * @const */ "mkrnb1500": "mkrnb1500", - /** - * value: "lora-device" - * @const - */ - "lora-device": "lora-device", - /** * value: "login_and_secretkey_wifi" * @const diff --git a/src/model/Devicev2Cert.js b/src/model/Devicev2Cert.js index 946639c..c06b68d 100644 --- a/src/model/Devicev2Cert.js +++ b/src/model/Devicev2Cert.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Devicev2Cert model module. * @module model/Devicev2Cert - * @version 2.0.5 + * @version 3.0.0 */ class Devicev2Cert { /** diff --git a/src/model/Devicev2Otabinaryurl.js b/src/model/Devicev2Otabinaryurl.js index c3de535..dae198b 100644 --- a/src/model/Devicev2Otabinaryurl.js +++ b/src/model/Devicev2Otabinaryurl.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Devicev2Otabinaryurl model module. * @module model/Devicev2Otabinaryurl - * @version 2.0.5 + * @version 3.0.0 */ class Devicev2Otabinaryurl { /** @@ -35,7 +35,9 @@ class Devicev2Otabinaryurl { * Only for internal use. */ static initialize(obj, binaryKey) { + obj['async'] = true; obj['binary_key'] = binaryKey; + obj['expire_in_mins'] = 10; } /** @@ -70,7 +72,7 @@ class Devicev2Otabinaryurl { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of Devicev2Otabinaryurl.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Devicev2Otaurlpyalod.js b/src/model/Devicev2Otaurlpyalod.js index 58d7256..e87f7da 100644 --- a/src/model/Devicev2Otaurlpyalod.js +++ b/src/model/Devicev2Otaurlpyalod.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Devicev2Otaurlpyalod model module. * @module model/Devicev2Otaurlpyalod - * @version 2.0.5 + * @version 3.0.0 */ class Devicev2Otaurlpyalod { /** diff --git a/src/model/Devicev2Pass.js b/src/model/Devicev2Pass.js index f057478..2f790d7 100644 --- a/src/model/Devicev2Pass.js +++ b/src/model/Devicev2Pass.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Devicev2Pass model module. * @module model/Devicev2Pass - * @version 2.0.5 + * @version 3.0.0 */ class Devicev2Pass { /** diff --git a/src/model/Error.js b/src/model/Error.js index 5fe3f21..5d6a6fe 100644 --- a/src/model/Error.js +++ b/src/model/Error.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Error model module. * @module model/Error - * @version 2.0.5 + * @version 3.0.0 */ class Error { /** diff --git a/src/model/HistoricDataRequest.js b/src/model/HistoricDataRequest.js index 8c40b5d..785d692 100644 --- a/src/model/HistoricDataRequest.js +++ b/src/model/HistoricDataRequest.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The HistoricDataRequest model module. * @module model/HistoricDataRequest - * @version 2.0.5 + * @version 3.0.0 */ class HistoricDataRequest { /** @@ -74,7 +74,7 @@ class HistoricDataRequest { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of HistoricDataRequest.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Override.js b/src/model/Override.js index 5af3e8d..d93a035 100644 --- a/src/model/Override.js +++ b/src/model/Override.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Override model module. * @module model/Override - * @version 2.0.5 + * @version 3.0.0 */ class Override { /** @@ -69,7 +69,7 @@ class Override { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of Override.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/PropertiesValue.js b/src/model/PropertiesValue.js index c888e3f..f5f94dd 100644 --- a/src/model/PropertiesValue.js +++ b/src/model/PropertiesValue.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The PropertiesValue model module. * @module model/PropertiesValue - * @version 2.0.5 + * @version 3.0.0 */ class PropertiesValue { /** @@ -74,7 +74,7 @@ class PropertiesValue { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of PropertiesValue.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/PropertiesValues.js b/src/model/PropertiesValues.js index d801303..df998ea 100644 --- a/src/model/PropertiesValues.js +++ b/src/model/PropertiesValues.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import PropertiesValue from './PropertiesValue'; /** * The PropertiesValues model module. * @module model/PropertiesValues - * @version 2.0.5 + * @version 3.0.0 */ class PropertiesValues { /** @@ -36,6 +36,7 @@ class PropertiesValues { * Only for internal use. */ static initialize(obj, properties) { + obj['input'] = false; obj['properties'] = properties; } @@ -68,7 +69,7 @@ class PropertiesValues { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of PropertiesValues.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Property.js b/src/model/Property.js index 4bc06a1..bd5308d 100644 --- a/src/model/Property.js +++ b/src/model/Property.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Property model module. * @module model/Property - * @version 2.0.5 + * @version 3.0.0 */ class Property { /** @@ -41,6 +41,7 @@ class Property { static initialize(obj, name, permission, type, updateStrategy) { obj['name'] = name; obj['permission'] = permission; + obj['persist'] = true; obj['type'] = type; obj['update_strategy'] = updateStrategy; } @@ -98,7 +99,7 @@ class Property { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of Property.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/PropertyValue.js b/src/model/PropertyValue.js index 4469670..0061b74 100644 --- a/src/model/PropertyValue.js +++ b/src/model/PropertyValue.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The PropertyValue model module. * @module model/PropertyValue - * @version 2.0.5 + * @version 3.0.0 */ class PropertyValue { /** @@ -68,7 +68,7 @@ class PropertyValue { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of PropertyValue.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Sharerequest.js b/src/model/Sharerequest.js index d0c2fe0..0618a83 100644 --- a/src/model/Sharerequest.js +++ b/src/model/Sharerequest.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Sharerequest model module. * @module model/Sharerequest - * @version 2.0.5 + * @version 3.0.0 */ class Sharerequest { /** diff --git a/src/model/Tag.js b/src/model/Tag.js index 6b37652..6448386 100644 --- a/src/model/Tag.js +++ b/src/model/Tag.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Tag model module. * @module model/Tag - * @version 2.0.5 + * @version 3.0.0 */ class Tag { /** @@ -69,7 +69,7 @@ class Tag { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of Tag.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Template.js b/src/model/Template.js index a5349de..4bb9369 100644 --- a/src/model/Template.js +++ b/src/model/Template.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Template model module. * @module model/Template - * @version 2.0.5 + * @version 3.0.0 */ class Template { /** @@ -74,7 +74,7 @@ class Template { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of Template.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ThingClone.js b/src/model/ThingClone.js index 30f9cc3..67e0095 100644 --- a/src/model/ThingClone.js +++ b/src/model/ThingClone.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ThingClone model module. * @module model/ThingClone - * @version 2.0.5 + * @version 3.0.0 */ class ThingClone { /** @@ -68,7 +68,7 @@ class ThingClone { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of ThingClone.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/ThingCreate.js b/src/model/ThingCreate.js index b7ceee2..0a1e605 100644 --- a/src/model/ThingCreate.js +++ b/src/model/ThingCreate.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -18,7 +18,7 @@ import Tag from './Tag'; /** * The ThingCreate model module. * @module model/ThingCreate - * @version 2.0.5 + * @version 3.0.0 */ class ThingCreate { /** @@ -37,6 +37,7 @@ class ThingCreate { * Only for internal use. */ static initialize(obj) { + obj['timezone'] = 'America/New_York'; } /** diff --git a/src/model/ThingSketch.js b/src/model/ThingSketch.js index fcf6926..cb63743 100644 --- a/src/model/ThingSketch.js +++ b/src/model/ThingSketch.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The ThingSketch model module. * @module model/ThingSketch - * @version 2.0.5 + * @version 3.0.0 */ class ThingSketch { /** diff --git a/src/model/ThingUpdate.js b/src/model/ThingUpdate.js index dc4089e..2a29488 100644 --- a/src/model/ThingUpdate.js +++ b/src/model/ThingUpdate.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -17,7 +17,7 @@ import Property from './Property'; /** * The ThingUpdate model module. * @module model/ThingUpdate - * @version 2.0.5 + * @version 3.0.0 */ class ThingUpdate { /** diff --git a/src/model/TimeseriesDataPoint.js b/src/model/TimeseriesDataPoint.js index 2c3f650..bb52ea2 100644 --- a/src/model/TimeseriesDataPoint.js +++ b/src/model/TimeseriesDataPoint.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The TimeseriesDataPoint model module. * @module model/TimeseriesDataPoint - * @version 2.0.5 + * @version 3.0.0 */ class TimeseriesDataPoint { /** @@ -69,7 +69,7 @@ class TimeseriesDataPoint { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of TimeseriesDataPoint.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/UpdateSketch.js b/src/model/UpdateSketch.js index 7fda687..c3b2246 100644 --- a/src/model/UpdateSketch.js +++ b/src/model/UpdateSketch.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The UpdateSketch model module. * @module model/UpdateSketch - * @version 2.0.5 + * @version 3.0.0 */ class UpdateSketch { /** diff --git a/src/model/Widget.js b/src/model/Widget.js index 963198c..52bcd55 100644 --- a/src/model/Widget.js +++ b/src/model/Widget.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Widget model module. * @module model/Widget - * @version 2.0.5 + * @version 3.0.0 */ class Widget { /** @@ -113,7 +113,7 @@ class Widget { static validateJSON(data) { // check to make sure all required properties are present in the JSON string for (const property of Widget.RequiredProperties) { - if (!data[property]) { + if (!data.hasOwnProperty(property)) { throw new Error("The required field `" + property + "` is not found in the JSON data: " + JSON.stringify(data)); } } diff --git a/src/model/Widgetlink.js b/src/model/Widgetlink.js index 65ca9f7..e73f224 100644 --- a/src/model/Widgetlink.js +++ b/src/model/Widgetlink.js @@ -1,6 +1,6 @@ /** * Arduino IoT Cloud API - * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) * * The version of the OpenAPI document: 2.0 * @@ -16,7 +16,7 @@ import ApiClient from '../ApiClient'; /** * The Widgetlink model module. * @module model/Widgetlink - * @version 2.0.5 + * @version 3.0.0 */ class Widgetlink { /** diff --git a/test/api/DashboardsV2Api.spec.js b/test/api/DashboardsV2Api.spec.js new file mode 100644 index 0000000..245314d --- /dev/null +++ b/test/api/DashboardsV2Api.spec.js @@ -0,0 +1,173 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.DashboardsV2Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('DashboardsV2Api', function() { + describe('dashboardsV2Clone', function() { + it('should call dashboardsV2Clone successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Clone + //instance.dashboardsV2Clone(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2Create', function() { + it('should call dashboardsV2Create successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Create + //instance.dashboardsV2Create(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2Delete', function() { + it('should call dashboardsV2Delete successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Delete + //instance.dashboardsV2Delete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2DeleteShare', function() { + it('should call dashboardsV2DeleteShare successfully', function(done) { + //uncomment below and update the code to test dashboardsV2DeleteShare + //instance.dashboardsV2DeleteShare(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2Link', function() { + it('should call dashboardsV2Link successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Link + //instance.dashboardsV2Link(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2List', function() { + it('should call dashboardsV2List successfully', function(done) { + //uncomment below and update the code to test dashboardsV2List + //instance.dashboardsV2List(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2ListShares', function() { + it('should call dashboardsV2ListShares successfully', function(done) { + //uncomment below and update the code to test dashboardsV2ListShares + //instance.dashboardsV2ListShares(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2RequestAccess', function() { + it('should call dashboardsV2RequestAccess successfully', function(done) { + //uncomment below and update the code to test dashboardsV2RequestAccess + //instance.dashboardsV2RequestAccess(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2Share', function() { + it('should call dashboardsV2Share successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Share + //instance.dashboardsV2Share(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2Show', function() { + it('should call dashboardsV2Show successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Show + //instance.dashboardsV2Show(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2Template', function() { + it('should call dashboardsV2Template successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Template + //instance.dashboardsV2Template(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('dashboardsV2Update', function() { + it('should call dashboardsV2Update successfully', function(done) { + //uncomment below and update the code to test dashboardsV2Update + //instance.dashboardsV2Update(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/DevicesV2Api.spec.js b/test/api/DevicesV2Api.spec.js new file mode 100644 index 0000000..1492980 --- /dev/null +++ b/test/api/DevicesV2Api.spec.js @@ -0,0 +1,153 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.DevicesV2Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('DevicesV2Api', function() { + describe('devicesV2Create', function() { + it('should call devicesV2Create successfully', function(done) { + //uncomment below and update the code to test devicesV2Create + //instance.devicesV2Create(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2Delete', function() { + it('should call devicesV2Delete successfully', function(done) { + //uncomment below and update the code to test devicesV2Delete + //instance.devicesV2Delete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2GetEvents', function() { + it('should call devicesV2GetEvents successfully', function(done) { + //uncomment below and update the code to test devicesV2GetEvents + //instance.devicesV2GetEvents(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2GetProperties', function() { + it('should call devicesV2GetProperties successfully', function(done) { + //uncomment below and update the code to test devicesV2GetProperties + //instance.devicesV2GetProperties(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2GetStatusEvents', function() { + it('should call devicesV2GetStatusEvents successfully', function(done) { + //uncomment below and update the code to test devicesV2GetStatusEvents + //instance.devicesV2GetStatusEvents(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2List', function() { + it('should call devicesV2List successfully', function(done) { + //uncomment below and update the code to test devicesV2List + //instance.devicesV2List(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2Show', function() { + it('should call devicesV2Show successfully', function(done) { + //uncomment below and update the code to test devicesV2Show + //instance.devicesV2Show(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2Timeseries', function() { + it('should call devicesV2Timeseries successfully', function(done) { + //uncomment below and update the code to test devicesV2Timeseries + //instance.devicesV2Timeseries(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2Update', function() { + it('should call devicesV2Update successfully', function(done) { + //uncomment below and update the code to test devicesV2Update + //instance.devicesV2Update(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2UpdateProperties', function() { + it('should call devicesV2UpdateProperties successfully', function(done) { + //uncomment below and update the code to test devicesV2UpdateProperties + //instance.devicesV2UpdateProperties(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/DevicesV2CertsApi.spec.js b/test/api/DevicesV2CertsApi.spec.js new file mode 100644 index 0000000..0cd8886 --- /dev/null +++ b/test/api/DevicesV2CertsApi.spec.js @@ -0,0 +1,103 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.DevicesV2CertsApi(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('DevicesV2CertsApi', function() { + describe('devicesV2CertsCreate', function() { + it('should call devicesV2CertsCreate successfully', function(done) { + //uncomment below and update the code to test devicesV2CertsCreate + //instance.devicesV2CertsCreate(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2CertsDelete', function() { + it('should call devicesV2CertsDelete successfully', function(done) { + //uncomment below and update the code to test devicesV2CertsDelete + //instance.devicesV2CertsDelete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2CertsList', function() { + it('should call devicesV2CertsList successfully', function(done) { + //uncomment below and update the code to test devicesV2CertsList + //instance.devicesV2CertsList(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2CertsShow', function() { + it('should call devicesV2CertsShow successfully', function(done) { + //uncomment below and update the code to test devicesV2CertsShow + //instance.devicesV2CertsShow(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2CertsUpdate', function() { + it('should call devicesV2CertsUpdate successfully', function(done) { + //uncomment below and update the code to test devicesV2CertsUpdate + //instance.devicesV2CertsUpdate(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/DevicesV2OtaApi.spec.js b/test/api/DevicesV2OtaApi.spec.js new file mode 100644 index 0000000..fdf5426 --- /dev/null +++ b/test/api/DevicesV2OtaApi.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.DevicesV2OtaApi(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('DevicesV2OtaApi', function() { + describe('devicesV2OtaSend', function() { + it('should call devicesV2OtaSend successfully', function(done) { + //uncomment below and update the code to test devicesV2OtaSend + //instance.devicesV2OtaSend(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2OtaUpload', function() { + it('should call devicesV2OtaUpload successfully', function(done) { + //uncomment below and update the code to test devicesV2OtaUpload + //instance.devicesV2OtaUpload(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2OtaUrl', function() { + it('should call devicesV2OtaUrl successfully', function(done) { + //uncomment below and update the code to test devicesV2OtaUrl + //instance.devicesV2OtaUrl(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/DevicesV2PassApi.spec.js b/test/api/DevicesV2PassApi.spec.js new file mode 100644 index 0000000..c0beeaf --- /dev/null +++ b/test/api/DevicesV2PassApi.spec.js @@ -0,0 +1,93 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.DevicesV2PassApi(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('DevicesV2PassApi', function() { + describe('devicesV2PassCheck', function() { + it('should call devicesV2PassCheck successfully', function(done) { + //uncomment below and update the code to test devicesV2PassCheck + //instance.devicesV2PassCheck(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2PassDelete', function() { + it('should call devicesV2PassDelete successfully', function(done) { + //uncomment below and update the code to test devicesV2PassDelete + //instance.devicesV2PassDelete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2PassGet', function() { + it('should call devicesV2PassGet successfully', function(done) { + //uncomment below and update the code to test devicesV2PassGet + //instance.devicesV2PassGet(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2PassSet', function() { + it('should call devicesV2PassSet successfully', function(done) { + //uncomment below and update the code to test devicesV2PassSet + //instance.devicesV2PassSet(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/DevicesV2TagsApi.spec.js b/test/api/DevicesV2TagsApi.spec.js new file mode 100644 index 0000000..347b48e --- /dev/null +++ b/test/api/DevicesV2TagsApi.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.DevicesV2TagsApi(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('DevicesV2TagsApi', function() { + describe('devicesV2TagsDelete', function() { + it('should call devicesV2TagsDelete successfully', function(done) { + //uncomment below and update the code to test devicesV2TagsDelete + //instance.devicesV2TagsDelete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2TagsList', function() { + it('should call devicesV2TagsList successfully', function(done) { + //uncomment below and update the code to test devicesV2TagsList + //instance.devicesV2TagsList(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('devicesV2TagsUpsert', function() { + it('should call devicesV2TagsUpsert successfully', function(done) { + //uncomment below and update the code to test devicesV2TagsUpsert + //instance.devicesV2TagsUpsert(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/LoraDevicesV1Api.spec.js b/test/api/LoraDevicesV1Api.spec.js new file mode 100644 index 0000000..fea6268 --- /dev/null +++ b/test/api/LoraDevicesV1Api.spec.js @@ -0,0 +1,63 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.LoraDevicesV1Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('LoraDevicesV1Api', function() { + describe('loraDevicesV1Create', function() { + it('should call loraDevicesV1Create successfully', function(done) { + //uncomment below and update the code to test loraDevicesV1Create + //instance.loraDevicesV1Create(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/LoraFreqPlanV1Api.spec.js b/test/api/LoraFreqPlanV1Api.spec.js new file mode 100644 index 0000000..9672373 --- /dev/null +++ b/test/api/LoraFreqPlanV1Api.spec.js @@ -0,0 +1,63 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.LoraFreqPlanV1Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('LoraFreqPlanV1Api', function() { + describe('loraFreqPlanV1List', function() { + it('should call loraFreqPlanV1List successfully', function(done) { + //uncomment below and update the code to test loraFreqPlanV1List + //instance.loraFreqPlanV1List(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/NetworkCredentialsV1Api.spec.js b/test/api/NetworkCredentialsV1Api.spec.js new file mode 100644 index 0000000..ee0658b --- /dev/null +++ b/test/api/NetworkCredentialsV1Api.spec.js @@ -0,0 +1,73 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.NetworkCredentialsV1Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('NetworkCredentialsV1Api', function() { + describe('networkCredentialsV1Show', function() { + it('should call networkCredentialsV1Show successfully', function(done) { + //uncomment below and update the code to test networkCredentialsV1Show + //instance.networkCredentialsV1Show(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('networkCredentialsV1ShowByDevice', function() { + it('should call networkCredentialsV1ShowByDevice successfully', function(done) { + //uncomment below and update the code to test networkCredentialsV1ShowByDevice + //instance.networkCredentialsV1ShowByDevice(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/PropertiesV2Api.spec.js b/test/api/PropertiesV2Api.spec.js new file mode 100644 index 0000000..b8233e5 --- /dev/null +++ b/test/api/PropertiesV2Api.spec.js @@ -0,0 +1,123 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.PropertiesV2Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('PropertiesV2Api', function() { + describe('propertiesV2Create', function() { + it('should call propertiesV2Create successfully', function(done) { + //uncomment below and update the code to test propertiesV2Create + //instance.propertiesV2Create(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('propertiesV2Delete', function() { + it('should call propertiesV2Delete successfully', function(done) { + //uncomment below and update the code to test propertiesV2Delete + //instance.propertiesV2Delete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('propertiesV2List', function() { + it('should call propertiesV2List successfully', function(done) { + //uncomment below and update the code to test propertiesV2List + //instance.propertiesV2List(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('propertiesV2Publish', function() { + it('should call propertiesV2Publish successfully', function(done) { + //uncomment below and update the code to test propertiesV2Publish + //instance.propertiesV2Publish(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('propertiesV2Show', function() { + it('should call propertiesV2Show successfully', function(done) { + //uncomment below and update the code to test propertiesV2Show + //instance.propertiesV2Show(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('propertiesV2Timeseries', function() { + it('should call propertiesV2Timeseries successfully', function(done) { + //uncomment below and update the code to test propertiesV2Timeseries + //instance.propertiesV2Timeseries(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('propertiesV2Update', function() { + it('should call propertiesV2Update successfully', function(done) { + //uncomment below and update the code to test propertiesV2Update + //instance.propertiesV2Update(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/PropertyTypesV1Api.spec.js b/test/api/PropertyTypesV1Api.spec.js new file mode 100644 index 0000000..2c09992 --- /dev/null +++ b/test/api/PropertyTypesV1Api.spec.js @@ -0,0 +1,63 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.PropertyTypesV1Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('PropertyTypesV1Api', function() { + describe('propertyTypesV1ListTypes', function() { + it('should call propertyTypesV1ListTypes successfully', function(done) { + //uncomment below and update the code to test propertyTypesV1ListTypes + //instance.propertyTypesV1ListTypes(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/SeriesV2Api.spec.js b/test/api/SeriesV2Api.spec.js new file mode 100644 index 0000000..668bd45 --- /dev/null +++ b/test/api/SeriesV2Api.spec.js @@ -0,0 +1,103 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.SeriesV2Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('SeriesV2Api', function() { + describe('seriesV2BatchQuery', function() { + it('should call seriesV2BatchQuery successfully', function(done) { + //uncomment below and update the code to test seriesV2BatchQuery + //instance.seriesV2BatchQuery(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('seriesV2BatchQueryRaw', function() { + it('should call seriesV2BatchQueryRaw successfully', function(done) { + //uncomment below and update the code to test seriesV2BatchQueryRaw + //instance.seriesV2BatchQueryRaw(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('seriesV2BatchQueryRawLastValue', function() { + it('should call seriesV2BatchQueryRawLastValue successfully', function(done) { + //uncomment below and update the code to test seriesV2BatchQueryRawLastValue + //instance.seriesV2BatchQueryRawLastValue(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('seriesV2BatchQuerySampling', function() { + it('should call seriesV2BatchQuerySampling successfully', function(done) { + //uncomment below and update the code to test seriesV2BatchQuerySampling + //instance.seriesV2BatchQuerySampling(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('seriesV2HistoricData', function() { + it('should call seriesV2HistoricData successfully', function(done) { + //uncomment below and update the code to test seriesV2HistoricData + //instance.seriesV2HistoricData(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/TemplatesApi.spec.js b/test/api/TemplatesApi.spec.js new file mode 100644 index 0000000..501ffa6 --- /dev/null +++ b/test/api/TemplatesApi.spec.js @@ -0,0 +1,63 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.TemplatesApi(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('TemplatesApi', function() { + describe('templatesApply', function() { + it('should call templatesApply successfully', function(done) { + //uncomment below and update the code to test templatesApply + //instance.templatesApply(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/ThingsV2Api.spec.js b/test/api/ThingsV2Api.spec.js new file mode 100644 index 0000000..aaf9bdf --- /dev/null +++ b/test/api/ThingsV2Api.spec.js @@ -0,0 +1,153 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ThingsV2Api(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ThingsV2Api', function() { + describe('thingsV2Clone', function() { + it('should call thingsV2Clone successfully', function(done) { + //uncomment below and update the code to test thingsV2Clone + //instance.thingsV2Clone(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2Create', function() { + it('should call thingsV2Create successfully', function(done) { + //uncomment below and update the code to test thingsV2Create + //instance.thingsV2Create(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2CreateSketch', function() { + it('should call thingsV2CreateSketch successfully', function(done) { + //uncomment below and update the code to test thingsV2CreateSketch + //instance.thingsV2CreateSketch(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2Delete', function() { + it('should call thingsV2Delete successfully', function(done) { + //uncomment below and update the code to test thingsV2Delete + //instance.thingsV2Delete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2DeleteSketch', function() { + it('should call thingsV2DeleteSketch successfully', function(done) { + //uncomment below and update the code to test thingsV2DeleteSketch + //instance.thingsV2DeleteSketch(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2List', function() { + it('should call thingsV2List successfully', function(done) { + //uncomment below and update the code to test thingsV2List + //instance.thingsV2List(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2Show', function() { + it('should call thingsV2Show successfully', function(done) { + //uncomment below and update the code to test thingsV2Show + //instance.thingsV2Show(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2Template', function() { + it('should call thingsV2Template successfully', function(done) { + //uncomment below and update the code to test thingsV2Template + //instance.thingsV2Template(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2Update', function() { + it('should call thingsV2Update successfully', function(done) { + //uncomment below and update the code to test thingsV2Update + //instance.thingsV2Update(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2UpdateSketch', function() { + it('should call thingsV2UpdateSketch successfully', function(done) { + //uncomment below and update the code to test thingsV2UpdateSketch + //instance.thingsV2UpdateSketch(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/api/ThingsV2TagsApi.spec.js b/test/api/ThingsV2TagsApi.spec.js new file mode 100644 index 0000000..50ce9eb --- /dev/null +++ b/test/api/ThingsV2TagsApi.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ThingsV2TagsApi(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ThingsV2TagsApi', function() { + describe('thingsV2TagsDelete', function() { + it('should call thingsV2TagsDelete successfully', function(done) { + //uncomment below and update the code to test thingsV2TagsDelete + //instance.thingsV2TagsDelete(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2TagsList', function() { + it('should call thingsV2TagsList successfully', function(done) { + //uncomment below and update the code to test thingsV2TagsList + //instance.thingsV2TagsList(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + describe('thingsV2TagsUpsert', function() { + it('should call thingsV2TagsUpsert successfully', function(done) { + //uncomment below and update the code to test thingsV2TagsUpsert + //instance.thingsV2TagsUpsert(function(error) { + // if (error) throw error; + //expect().to.be(); + //}); + done(); + }); + }); + }); + +})); diff --git a/test/model/ArduinoCompressedv2.spec.js b/test/model/ArduinoCompressedv2.spec.js new file mode 100644 index 0000000..a25998e --- /dev/null +++ b/test/model/ArduinoCompressedv2.spec.js @@ -0,0 +1,101 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoCompressedv2(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoCompressedv2', function() { + it('should create an instance of ArduinoCompressedv2', function() { + // uncomment below and update the code to test ArduinoCompressedv2 + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoCompressedv2); + }); + + it('should have the property authorityKeyIdentifier (base name: "authority_key_identifier")', function() { + // uncomment below and update the code to test the property authorityKeyIdentifier + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be(); + }); + + it('should have the property notAfter (base name: "not_after")', function() { + // uncomment below and update the code to test the property notAfter + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be(); + }); + + it('should have the property notBefore (base name: "not_before")', function() { + // uncomment below and update the code to test the property notBefore + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be(); + }); + + it('should have the property serial (base name: "serial")', function() { + // uncomment below and update the code to test the property serial + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be(); + }); + + it('should have the property signature (base name: "signature")', function() { + // uncomment below and update the code to test the property signature + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be(); + }); + + it('should have the property signatureAsn1X (base name: "signature_asn1_x")', function() { + // uncomment below and update the code to test the property signatureAsn1X + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be(); + }); + + it('should have the property signatureAsn1Y (base name: "signature_asn1_y")', function() { + // uncomment below and update the code to test the property signatureAsn1Y + //var instance = new ArduinoIotClient.ArduinoCompressedv2(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoCredentialsv1.spec.js b/test/model/ArduinoCredentialsv1.spec.js new file mode 100644 index 0000000..d6d7970 --- /dev/null +++ b/test/model/ArduinoCredentialsv1.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoCredentialsv1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoCredentialsv1', function() { + it('should create an instance of ArduinoCredentialsv1', function() { + // uncomment below and update the code to test ArduinoCredentialsv1 + //var instance = new ArduinoIotClient.ArduinoCredentialsv1(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoCredentialsv1); + }); + + it('should have the property friendlyName (base name: "friendly_name")', function() { + // uncomment below and update the code to test the property friendlyName + //var instance = new ArduinoIotClient.ArduinoCredentialsv1(); + //expect(instance).to.be(); + }); + + it('should have the property required (base name: "required")', function() { + // uncomment below and update the code to test the property required + //var instance = new ArduinoIotClient.ArduinoCredentialsv1(); + //expect(instance).to.be(); + }); + + it('should have the property secretName (base name: "secret_name")', function() { + // uncomment below and update the code to test the property secretName + //var instance = new ArduinoIotClient.ArduinoCredentialsv1(); + //expect(instance).to.be(); + }); + + it('should have the property sensitive (base name: "sensitive")', function() { + // uncomment below and update the code to test the property sensitive + //var instance = new ArduinoIotClient.ArduinoCredentialsv1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDashboardowner.spec.js b/test/model/ArduinoDashboardowner.spec.js new file mode 100644 index 0000000..61a4bfd --- /dev/null +++ b/test/model/ArduinoDashboardowner.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDashboardowner(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDashboardowner', function() { + it('should create an instance of ArduinoDashboardowner', function() { + // uncomment below and update the code to test ArduinoDashboardowner + //var instance = new ArduinoIotClient.ArduinoDashboardowner(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDashboardowner); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.ArduinoDashboardowner(); + //expect(instance).to.be(); + }); + + it('should have the property username (base name: "username")', function() { + // uncomment below and update the code to test the property username + //var instance = new ArduinoIotClient.ArduinoDashboardowner(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDashboardshare.spec.js b/test/model/ArduinoDashboardshare.spec.js new file mode 100644 index 0000000..b314b4f --- /dev/null +++ b/test/model/ArduinoDashboardshare.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDashboardshare(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDashboardshare', function() { + it('should create an instance of ArduinoDashboardshare', function() { + // uncomment below and update the code to test ArduinoDashboardshare + //var instance = new ArduinoIotClient.ArduinoDashboardshare(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDashboardshare); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.ArduinoDashboardshare(); + //expect(instance).to.be(); + }); + + it('should have the property username (base name: "username")', function() { + // uncomment below and update the code to test the property username + //var instance = new ArduinoIotClient.ArduinoDashboardshare(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDashboardv2.spec.js b/test/model/ArduinoDashboardv2.spec.js new file mode 100644 index 0000000..c099161 --- /dev/null +++ b/test/model/ArduinoDashboardv2.spec.js @@ -0,0 +1,113 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDashboardv2(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDashboardv2', function() { + it('should create an instance of ArduinoDashboardv2', function() { + // uncomment below and update the code to test ArduinoDashboardv2 + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDashboardv2); + }); + + it('should have the property coverImage (base name: "cover_image")', function() { + // uncomment below and update the code to test the property coverImage + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property createdBy (base name: "created_by")', function() { + // uncomment below and update the code to test the property createdBy + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property organizationId (base name: "organization_id")', function() { + // uncomment below and update the code to test the property organizationId + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property sharedBy (base name: "shared_by")', function() { + // uncomment below and update the code to test the property sharedBy + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property sharedWith (base name: "shared_with")', function() { + // uncomment below and update the code to test the property sharedWith + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property updatedAt (base name: "updated_at")', function() { + // uncomment below and update the code to test the property updatedAt + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property widgets (base name: "widgets")', function() { + // uncomment below and update the code to test the property widgets + //var instance = new ArduinoIotClient.ArduinoDashboardv2(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDashboardv2template.spec.js b/test/model/ArduinoDashboardv2template.spec.js new file mode 100644 index 0000000..0f7c497 --- /dev/null +++ b/test/model/ArduinoDashboardv2template.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDashboardv2template(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDashboardv2template', function() { + it('should create an instance of ArduinoDashboardv2template', function() { + // uncomment below and update the code to test ArduinoDashboardv2template + //var instance = new ArduinoIotClient.ArduinoDashboardv2template(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDashboardv2template); + }); + + it('should have the property coverImage (base name: "cover_image")', function() { + // uncomment below and update the code to test the property coverImage + //var instance = new ArduinoIotClient.ArduinoDashboardv2template(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDashboardv2template(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoDashboardv2template(); + //expect(instance).to.be(); + }); + + it('should have the property widgets (base name: "widgets")', function() { + // uncomment below and update the code to test the property widgets + //var instance = new ArduinoIotClient.ArduinoDashboardv2template(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2.spec.js b/test/model/ArduinoDevicev2.spec.js new file mode 100644 index 0000000..0f41282 --- /dev/null +++ b/test/model/ArduinoDevicev2.spec.js @@ -0,0 +1,203 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2', function() { + it('should create an instance of ArduinoDevicev2', function() { + // uncomment below and update the code to test ArduinoDevicev2 + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2); + }); + + it('should have the property connectionType (base name: "connection_type")', function() { + // uncomment below and update the code to test the property connectionType + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property createdAt (base name: "created_at")', function() { + // uncomment below and update the code to test the property createdAt + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property deviceStatus (base name: "device_status")', function() { + // uncomment below and update the code to test the property deviceStatus + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property events (base name: "events")', function() { + // uncomment below and update the code to test the property events + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property fqbn (base name: "fqbn")', function() { + // uncomment below and update the code to test the property fqbn + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property href (base name: "href")', function() { + // uncomment below and update the code to test the property href + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property label (base name: "label")', function() { + // uncomment below and update the code to test the property label + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property lastActivityAt (base name: "last_activity_at")', function() { + // uncomment below and update the code to test the property lastActivityAt + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property latestWifiFwVersion (base name: "latest_wifi_fw_version")', function() { + // uncomment below and update the code to test the property latestWifiFwVersion + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property metadata (base name: "metadata")', function() { + // uncomment below and update the code to test the property metadata + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property noSketch (base name: "no_sketch")', function() { + // uncomment below and update the code to test the property noSketch + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property organizationId (base name: "organization_id")', function() { + // uncomment below and update the code to test the property organizationId + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property otaAvailable (base name: "ota_available")', function() { + // uncomment below and update the code to test the property otaAvailable + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property otaCompatible (base name: "ota_compatible")', function() { + // uncomment below and update the code to test the property otaCompatible + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property requiredWifiFwVersion (base name: "required_wifi_fw_version")', function() { + // uncomment below and update the code to test the property requiredWifiFwVersion + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property serial (base name: "serial")', function() { + // uncomment below and update the code to test the property serial + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property tags (base name: "tags")', function() { + // uncomment below and update the code to test the property tags + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property thing (base name: "thing")', function() { + // uncomment below and update the code to test the property thing + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property webhooks (base name: "webhooks")', function() { + // uncomment below and update the code to test the property webhooks + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + it('should have the property wifiFwVersion (base name: "wifi_fw_version")', function() { + // uncomment below and update the code to test the property wifiFwVersion + //var instance = new ArduinoIotClient.ArduinoDevicev2(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2Cert.spec.js b/test/model/ArduinoDevicev2Cert.spec.js new file mode 100644 index 0000000..da2c13a --- /dev/null +++ b/test/model/ArduinoDevicev2Cert.spec.js @@ -0,0 +1,107 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2Cert', function() { + it('should create an instance of ArduinoDevicev2Cert', function() { + // uncomment below and update the code to test ArduinoDevicev2Cert + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2Cert); + }); + + it('should have the property ca (base name: "ca")', function() { + // uncomment below and update the code to test the property ca + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property compressed (base name: "compressed")', function() { + // uncomment below and update the code to test the property compressed + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property der (base name: "der")', function() { + // uncomment below and update the code to test the property der + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property deviceId (base name: "device_id")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property enabled (base name: "enabled")', function() { + // uncomment below and update the code to test the property enabled + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property href (base name: "href")', function() { + // uncomment below and update the code to test the property href + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property pem (base name: "pem")', function() { + // uncomment below and update the code to test the property pem + //var instance = new ArduinoIotClient.ArduinoDevicev2Cert(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2EventProperties.spec.js b/test/model/ArduinoDevicev2EventProperties.spec.js new file mode 100644 index 0000000..52a4312 --- /dev/null +++ b/test/model/ArduinoDevicev2EventProperties.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2EventProperties(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2EventProperties', function() { + it('should create an instance of ArduinoDevicev2EventProperties', function() { + // uncomment below and update the code to test ArduinoDevicev2EventProperties + //var instance = new ArduinoIotClient.ArduinoDevicev2EventProperties(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2EventProperties); + }); + + it('should have the property events (base name: "events")', function() { + // uncomment below and update the code to test the property events + //var instance = new ArduinoIotClient.ArduinoDevicev2EventProperties(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDevicev2EventProperties(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2Otaupload.spec.js b/test/model/ArduinoDevicev2Otaupload.spec.js new file mode 100644 index 0000000..647431c --- /dev/null +++ b/test/model/ArduinoDevicev2Otaupload.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2Otaupload(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2Otaupload', function() { + it('should create an instance of ArduinoDevicev2Otaupload', function() { + // uncomment below and update the code to test ArduinoDevicev2Otaupload + //var instance = new ArduinoIotClient.ArduinoDevicev2Otaupload(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2Otaupload); + }); + + it('should have the property fileSha (base name: "file_sha")', function() { + // uncomment below and update the code to test the property fileSha + //var instance = new ArduinoIotClient.ArduinoDevicev2Otaupload(); + //expect(instance).to.be(); + }); + + it('should have the property otaId (base name: "ota_id")', function() { + // uncomment below and update the code to test the property otaId + //var instance = new ArduinoIotClient.ArduinoDevicev2Otaupload(); + //expect(instance).to.be(); + }); + + it('should have the property otaVersion (base name: "ota_version")', function() { + // uncomment below and update the code to test the property otaVersion + //var instance = new ArduinoIotClient.ArduinoDevicev2Otaupload(); + //expect(instance).to.be(); + }); + + it('should have the property status (base name: "status")', function() { + // uncomment below and update the code to test the property status + //var instance = new ArduinoIotClient.ArduinoDevicev2Otaupload(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2Pass.spec.js b/test/model/ArduinoDevicev2Pass.spec.js new file mode 100644 index 0000000..c586e87 --- /dev/null +++ b/test/model/ArduinoDevicev2Pass.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2Pass(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2Pass', function() { + it('should create an instance of ArduinoDevicev2Pass', function() { + // uncomment below and update the code to test ArduinoDevicev2Pass + //var instance = new ArduinoIotClient.ArduinoDevicev2Pass(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2Pass); + }); + + it('should have the property set (base name: "set")', function() { + // uncomment below and update the code to test the property set + //var instance = new ArduinoIotClient.ArduinoDevicev2Pass(); + //expect(instance).to.be(); + }); + + it('should have the property suggestedPassword (base name: "suggested_password")', function() { + // uncomment below and update the code to test the property suggestedPassword + //var instance = new ArduinoIotClient.ArduinoDevicev2Pass(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2SimpleProperties.spec.js b/test/model/ArduinoDevicev2SimpleProperties.spec.js new file mode 100644 index 0000000..93d6275 --- /dev/null +++ b/test/model/ArduinoDevicev2SimpleProperties.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2SimpleProperties(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2SimpleProperties', function() { + it('should create an instance of ArduinoDevicev2SimpleProperties', function() { + // uncomment below and update the code to test ArduinoDevicev2SimpleProperties + //var instance = new ArduinoIotClient.ArduinoDevicev2SimpleProperties(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2SimpleProperties); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoDevicev2SimpleProperties(); + //expect(instance).to.be(); + }); + + it('should have the property updatedAt (base name: "updated_at")', function() { + // uncomment below and update the code to test the property updatedAt + //var instance = new ArduinoIotClient.ArduinoDevicev2SimpleProperties(); + //expect(instance).to.be(); + }); + + it('should have the property value (base name: "value")', function() { + // uncomment below and update the code to test the property value + //var instance = new ArduinoIotClient.ArduinoDevicev2SimpleProperties(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2StatusEvent.spec.js b/test/model/ArduinoDevicev2StatusEvent.spec.js new file mode 100644 index 0000000..e01b4fc --- /dev/null +++ b/test/model/ArduinoDevicev2StatusEvent.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2StatusEvent(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2StatusEvent', function() { + it('should create an instance of ArduinoDevicev2StatusEvent', function() { + // uncomment below and update the code to test ArduinoDevicev2StatusEvent + //var instance = new ArduinoIotClient.ArduinoDevicev2StatusEvent(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2StatusEvent); + }); + + it('should have the property updatedAt (base name: "updated_at")', function() { + // uncomment below and update the code to test the property updatedAt + //var instance = new ArduinoIotClient.ArduinoDevicev2StatusEvent(); + //expect(instance).to.be(); + }); + + it('should have the property value (base name: "value")', function() { + // uncomment below and update the code to test the property value + //var instance = new ArduinoIotClient.ArduinoDevicev2StatusEvent(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2StatusEvents.spec.js b/test/model/ArduinoDevicev2StatusEvents.spec.js new file mode 100644 index 0000000..ab990eb --- /dev/null +++ b/test/model/ArduinoDevicev2StatusEvents.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2StatusEvents(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2StatusEvents', function() { + it('should create an instance of ArduinoDevicev2StatusEvents', function() { + // uncomment below and update the code to test ArduinoDevicev2StatusEvents + //var instance = new ArduinoIotClient.ArduinoDevicev2StatusEvents(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2StatusEvents); + }); + + it('should have the property events (base name: "events")', function() { + // uncomment below and update the code to test the property events + //var instance = new ArduinoIotClient.ArduinoDevicev2StatusEvents(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDevicev2StatusEvents(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2Webhook.spec.js b/test/model/ArduinoDevicev2Webhook.spec.js new file mode 100644 index 0000000..95c54a9 --- /dev/null +++ b/test/model/ArduinoDevicev2Webhook.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2Webhook(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2Webhook', function() { + it('should create an instance of ArduinoDevicev2Webhook', function() { + // uncomment below and update the code to test ArduinoDevicev2Webhook + //var instance = new ArduinoIotClient.ArduinoDevicev2Webhook(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2Webhook); + }); + + it('should have the property active (base name: "active")', function() { + // uncomment below and update the code to test the property active + //var instance = new ArduinoIotClient.ArduinoDevicev2Webhook(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDevicev2Webhook(); + //expect(instance).to.be(); + }); + + it('should have the property uri (base name: "uri")', function() { + // uncomment below and update the code to test the property uri + //var instance = new ArduinoIotClient.ArduinoDevicev2Webhook(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2properties.spec.js b/test/model/ArduinoDevicev2properties.spec.js new file mode 100644 index 0000000..10113b0 --- /dev/null +++ b/test/model/ArduinoDevicev2properties.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2properties(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2properties', function() { + it('should create an instance of ArduinoDevicev2properties', function() { + // uncomment below and update the code to test ArduinoDevicev2properties + //var instance = new ArduinoIotClient.ArduinoDevicev2properties(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2properties); + }); + + it('should have the property dataRetentionDays (base name: "data_retention_days")', function() { + // uncomment below and update the code to test the property dataRetentionDays + //var instance = new ArduinoIotClient.ArduinoDevicev2properties(); + //expect(instance).to.be(); + }); + + it('should have the property deviceId (base name: "deviceId")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.ArduinoDevicev2properties(); + //expect(instance).to.be(); + }); + + it('should have the property properties (base name: "properties")', function() { + // uncomment below and update the code to test the property properties + //var instance = new ArduinoIotClient.ArduinoDevicev2properties(); + //expect(instance).to.be(); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.ArduinoDevicev2properties(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2propertyvalue.spec.js b/test/model/ArduinoDevicev2propertyvalue.spec.js new file mode 100644 index 0000000..f939f48 --- /dev/null +++ b/test/model/ArduinoDevicev2propertyvalue.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2propertyvalue(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2propertyvalue', function() { + it('should create an instance of ArduinoDevicev2propertyvalue', function() { + // uncomment below and update the code to test ArduinoDevicev2propertyvalue + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalue(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2propertyvalue); + }); + + it('should have the property createdAt (base name: "created_at")', function() { + // uncomment below and update the code to test the property createdAt + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalue(); + //expect(instance).to.be(); + }); + + it('should have the property value (base name: "value")', function() { + // uncomment below and update the code to test the property value + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalue(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2propertyvalueValue.spec.js b/test/model/ArduinoDevicev2propertyvalueValue.spec.js new file mode 100644 index 0000000..be515f9 --- /dev/null +++ b/test/model/ArduinoDevicev2propertyvalueValue.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValue(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2propertyvalueValue', function() { + it('should create an instance of ArduinoDevicev2propertyvalueValue', function() { + // uncomment below and update the code to test ArduinoDevicev2propertyvalueValue + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValue(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2propertyvalueValue); + }); + + it('should have the property payload (base name: "payload")', function() { + // uncomment below and update the code to test the property payload + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValue(); + //expect(instance).to.be(); + }); + + it('should have the property seqno (base name: "seqno")', function() { + // uncomment below and update the code to test the property seqno + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValue(); + //expect(instance).to.be(); + }); + + it('should have the property statistics (base name: "statistics")', function() { + // uncomment below and update the code to test the property statistics + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValue(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2propertyvalueValueStatistics.spec.js b/test/model/ArduinoDevicev2propertyvalueValueStatistics.spec.js new file mode 100644 index 0000000..81df14f --- /dev/null +++ b/test/model/ArduinoDevicev2propertyvalueValueStatistics.spec.js @@ -0,0 +1,119 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2propertyvalueValueStatistics', function() { + it('should create an instance of ArduinoDevicev2propertyvalueValueStatistics', function() { + // uncomment below and update the code to test ArduinoDevicev2propertyvalueValueStatistics + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics); + }); + + it('should have the property adr (base name: "adr")', function() { + // uncomment below and update the code to test the property adr + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property channel (base name: "channel")', function() { + // uncomment below and update the code to test the property channel + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property duplicate (base name: "duplicate")', function() { + // uncomment below and update the code to test the property duplicate + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property freq (base name: "freq")', function() { + // uncomment below and update the code to test the property freq + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property modBW (base name: "modBW")', function() { + // uncomment below and update the code to test the property modBW + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property rssi (base name: "rssi")', function() { + // uncomment below and update the code to test the property rssi + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property seqno (base name: "seqno")', function() { + // uncomment below and update the code to test the property seqno + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property sf (base name: "sf")', function() { + // uncomment below and update the code to test the property sf + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property snr (base name: "snr")', function() { + // uncomment below and update the code to test the property snr + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + it('should have the property time (base name: "time")', function() { + // uncomment below and update the code to test the property time + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalueValueStatistics(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2propertyvalues.spec.js b/test/model/ArduinoDevicev2propertyvalues.spec.js new file mode 100644 index 0000000..91942bc --- /dev/null +++ b/test/model/ArduinoDevicev2propertyvalues.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2propertyvalues(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2propertyvalues', function() { + it('should create an instance of ArduinoDevicev2propertyvalues', function() { + // uncomment below and update the code to test ArduinoDevicev2propertyvalues + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalues(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2propertyvalues); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalues(); + //expect(instance).to.be(); + }); + + it('should have the property lastEvaluatedKey (base name: "last_evaluated_key")', function() { + // uncomment below and update the code to test the property lastEvaluatedKey + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalues(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalues(); + //expect(instance).to.be(); + }); + + it('should have the property values (base name: "values")', function() { + // uncomment below and update the code to test the property values + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvalues(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.spec.js b/test/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.spec.js new file mode 100644 index 0000000..6757198 --- /dev/null +++ b/test/model/ArduinoDevicev2propertyvaluesLastEvaluatedKey.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2propertyvaluesLastEvaluatedKey(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2propertyvaluesLastEvaluatedKey', function() { + it('should create an instance of ArduinoDevicev2propertyvaluesLastEvaluatedKey', function() { + // uncomment below and update the code to test ArduinoDevicev2propertyvaluesLastEvaluatedKey + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvaluesLastEvaluatedKey(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2propertyvaluesLastEvaluatedKey); + }); + + it('should have the property createdAt (base name: "created_at")', function() { + // uncomment below and update the code to test the property createdAt + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvaluesLastEvaluatedKey(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvaluesLastEvaluatedKey(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoDevicev2propertyvaluesLastEvaluatedKey(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoDevicev2templatedevice.spec.js b/test/model/ArduinoDevicev2templatedevice.spec.js new file mode 100644 index 0000000..ac30973 --- /dev/null +++ b/test/model/ArduinoDevicev2templatedevice.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoDevicev2templatedevice(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoDevicev2templatedevice', function() { + it('should create an instance of ArduinoDevicev2templatedevice', function() { + // uncomment below and update the code to test ArduinoDevicev2templatedevice + //var instance = new ArduinoIotClient.ArduinoDevicev2templatedevice(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoDevicev2templatedevice); + }); + + it('should have the property fqbn (base name: "fqbn")', function() { + // uncomment below and update the code to test the property fqbn + //var instance = new ArduinoIotClient.ArduinoDevicev2templatedevice(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoDevicev2templatedevice(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoLinkedvariable.spec.js b/test/model/ArduinoLinkedvariable.spec.js new file mode 100644 index 0000000..d557457 --- /dev/null +++ b/test/model/ArduinoLinkedvariable.spec.js @@ -0,0 +1,119 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoLinkedvariable(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoLinkedvariable', function() { + it('should create an instance of ArduinoLinkedvariable', function() { + // uncomment below and update the code to test ArduinoLinkedvariable + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoLinkedvariable); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property lastValue (base name: "last_value")', function() { + // uncomment below and update the code to test the property lastValue + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property lastValueUpdatedAt (base name: "last_value_updated_at")', function() { + // uncomment below and update the code to test the property lastValueUpdatedAt + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property permission (base name: "permission")', function() { + // uncomment below and update the code to test the property permission + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property thingName (base name: "thing_name")', function() { + // uncomment below and update the code to test the property thingName + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property thingTimezone (base name: "thing_timezone")', function() { + // uncomment below and update the code to test the property thingTimezone + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + it('should have the property variableName (base name: "variable_name")', function() { + // uncomment below and update the code to test the property variableName + //var instance = new ArduinoIotClient.ArduinoLinkedvariable(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoLoradevicev1.spec.js b/test/model/ArduinoLoradevicev1.spec.js new file mode 100644 index 0000000..a93f916 --- /dev/null +++ b/test/model/ArduinoLoradevicev1.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoLoradevicev1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoLoradevicev1', function() { + it('should create an instance of ArduinoLoradevicev1', function() { + // uncomment below and update the code to test ArduinoLoradevicev1 + //var instance = new ArduinoIotClient.ArduinoLoradevicev1(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoLoradevicev1); + }); + + it('should have the property appEui (base name: "app_eui")', function() { + // uncomment below and update the code to test the property appEui + //var instance = new ArduinoIotClient.ArduinoLoradevicev1(); + //expect(instance).to.be(); + }); + + it('should have the property appKey (base name: "app_key")', function() { + // uncomment below and update the code to test the property appKey + //var instance = new ArduinoIotClient.ArduinoLoradevicev1(); + //expect(instance).to.be(); + }); + + it('should have the property deviceId (base name: "device_id")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.ArduinoLoradevicev1(); + //expect(instance).to.be(); + }); + + it('should have the property eui (base name: "eui")', function() { + // uncomment below and update the code to test the property eui + //var instance = new ArduinoIotClient.ArduinoLoradevicev1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoLorafreqplansv1.spec.js b/test/model/ArduinoLorafreqplansv1.spec.js new file mode 100644 index 0000000..25c1da9 --- /dev/null +++ b/test/model/ArduinoLorafreqplansv1.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoLorafreqplansv1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoLorafreqplansv1', function() { + it('should create an instance of ArduinoLorafreqplansv1', function() { + // uncomment below and update the code to test ArduinoLorafreqplansv1 + //var instance = new ArduinoIotClient.ArduinoLorafreqplansv1(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoLorafreqplansv1); + }); + + it('should have the property frequencyPlans (base name: "frequency_plans")', function() { + // uncomment below and update the code to test the property frequencyPlans + //var instance = new ArduinoIotClient.ArduinoLorafreqplansv1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoLorafreqplanv1.spec.js b/test/model/ArduinoLorafreqplanv1.spec.js new file mode 100644 index 0000000..e922ddd --- /dev/null +++ b/test/model/ArduinoLorafreqplanv1.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoLorafreqplanv1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoLorafreqplanv1', function() { + it('should create an instance of ArduinoLorafreqplanv1', function() { + // uncomment below and update the code to test ArduinoLorafreqplanv1 + //var instance = new ArduinoIotClient.ArduinoLorafreqplanv1(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoLorafreqplanv1); + }); + + it('should have the property advanced (base name: "advanced")', function() { + // uncomment below and update the code to test the property advanced + //var instance = new ArduinoIotClient.ArduinoLorafreqplanv1(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoLorafreqplanv1(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoLorafreqplanv1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoProperty.spec.js b/test/model/ArduinoProperty.spec.js new file mode 100644 index 0000000..6d868d9 --- /dev/null +++ b/test/model/ArduinoProperty.spec.js @@ -0,0 +1,185 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoProperty(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoProperty', function() { + it('should create an instance of ArduinoProperty', function() { + // uncomment below and update the code to test ArduinoProperty + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoProperty); + }); + + it('should have the property createdAt (base name: "created_at")', function() { + // uncomment below and update the code to test the property createdAt + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property deletedAt (base name: "deleted_at")', function() { + // uncomment below and update the code to test the property deletedAt + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property href (base name: "href")', function() { + // uncomment below and update the code to test the property href + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property lastValue (base name: "last_value")', function() { + // uncomment below and update the code to test the property lastValue + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property linkedToTrigger (base name: "linked_to_trigger")', function() { + // uncomment below and update the code to test the property linkedToTrigger + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property maxValue (base name: "max_value")', function() { + // uncomment below and update the code to test the property maxValue + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property minValue (base name: "min_value")', function() { + // uncomment below and update the code to test the property minValue + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property permission (base name: "permission")', function() { + // uncomment below and update the code to test the property permission + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property persist (base name: "persist")', function() { + // uncomment below and update the code to test the property persist + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property syncId (base name: "sync_id")', function() { + // uncomment below and update the code to test the property syncId + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property tag (base name: "tag")', function() { + // uncomment below and update the code to test the property tag + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property thingName (base name: "thing_name")', function() { + // uncomment below and update the code to test the property thingName + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property updateParameter (base name: "update_parameter")', function() { + // uncomment below and update the code to test the property updateParameter + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property updateStrategy (base name: "update_strategy")', function() { + // uncomment below and update the code to test the property updateStrategy + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property updatedAt (base name: "updated_at")', function() { + // uncomment below and update the code to test the property updatedAt + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property valueUpdatedAt (base name: "value_updated_at")', function() { + // uncomment below and update the code to test the property valueUpdatedAt + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + it('should have the property variableName (base name: "variable_name")', function() { + // uncomment below and update the code to test the property variableName + //var instance = new ArduinoIotClient.ArduinoProperty(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoPropertytype.spec.js b/test/model/ArduinoPropertytype.spec.js new file mode 100644 index 0000000..4467435 --- /dev/null +++ b/test/model/ArduinoPropertytype.spec.js @@ -0,0 +1,119 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoPropertytype(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoPropertytype', function() { + it('should create an instance of ArduinoPropertytype', function() { + // uncomment below and update the code to test ArduinoPropertytype + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoPropertytype); + }); + + it('should have the property assistants (base name: "assistants")', function() { + // uncomment below and update the code to test the property assistants + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property declaration (base name: "declaration")', function() { + // uncomment below and update the code to test the property declaration + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property deprecated (base name: "deprecated")', function() { + // uncomment below and update the code to test the property deprecated + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property example (base name: "example")', function() { + // uncomment below and update the code to test the property example + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property rw (base name: "rw")', function() { + // uncomment below and update the code to test the property rw + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property supersededBy (base name: "supersededBy")', function() { + // uncomment below and update the code to test the property supersededBy + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property tags (base name: "tags")', function() { + // uncomment below and update the code to test the property tags + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + it('should have the property units (base name: "units")', function() { + // uncomment below and update the code to test the property units + //var instance = new ArduinoIotClient.ArduinoPropertytype(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesBatch.spec.js b/test/model/ArduinoSeriesBatch.spec.js new file mode 100644 index 0000000..cb2c762 --- /dev/null +++ b/test/model/ArduinoSeriesBatch.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesBatch(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesBatch', function() { + it('should create an instance of ArduinoSeriesBatch', function() { + // uncomment below and update the code to test ArduinoSeriesBatch + //var instance = new ArduinoIotClient.ArduinoSeriesBatch(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesBatch); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.ArduinoSeriesBatch(); + //expect(instance).to.be(); + }); + + it('should have the property responses (base name: "responses")', function() { + // uncomment below and update the code to test the property responses + //var instance = new ArduinoIotClient.ArduinoSeriesBatch(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesBatchSampled.spec.js b/test/model/ArduinoSeriesBatchSampled.spec.js new file mode 100644 index 0000000..5777cf3 --- /dev/null +++ b/test/model/ArduinoSeriesBatchSampled.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesBatchSampled(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesBatchSampled', function() { + it('should create an instance of ArduinoSeriesBatchSampled', function() { + // uncomment below and update the code to test ArduinoSeriesBatchSampled + //var instance = new ArduinoIotClient.ArduinoSeriesBatchSampled(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesBatchSampled); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.ArduinoSeriesBatchSampled(); + //expect(instance).to.be(); + }); + + it('should have the property responses (base name: "responses")', function() { + // uncomment below and update the code to test the property responses + //var instance = new ArduinoIotClient.ArduinoSeriesBatchSampled(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesRawBatch.spec.js b/test/model/ArduinoSeriesRawBatch.spec.js new file mode 100644 index 0000000..f88c29f --- /dev/null +++ b/test/model/ArduinoSeriesRawBatch.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesRawBatch(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesRawBatch', function() { + it('should create an instance of ArduinoSeriesRawBatch', function() { + // uncomment below and update the code to test ArduinoSeriesRawBatch + //var instance = new ArduinoIotClient.ArduinoSeriesRawBatch(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesRawBatch); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.ArduinoSeriesRawBatch(); + //expect(instance).to.be(); + }); + + it('should have the property responses (base name: "responses")', function() { + // uncomment below and update the code to test the property responses + //var instance = new ArduinoIotClient.ArduinoSeriesRawBatch(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesRawBatchLastvalue.spec.js b/test/model/ArduinoSeriesRawBatchLastvalue.spec.js new file mode 100644 index 0000000..fd78621 --- /dev/null +++ b/test/model/ArduinoSeriesRawBatchLastvalue.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesRawBatchLastvalue(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesRawBatchLastvalue', function() { + it('should create an instance of ArduinoSeriesRawBatchLastvalue', function() { + // uncomment below and update the code to test ArduinoSeriesRawBatchLastvalue + //var instance = new ArduinoIotClient.ArduinoSeriesRawBatchLastvalue(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesRawBatchLastvalue); + }); + + it('should have the property responses (base name: "responses")', function() { + // uncomment below and update the code to test the property responses + //var instance = new ArduinoIotClient.ArduinoSeriesRawBatchLastvalue(); + //expect(instance).to.be(); + }); + + it('should have the property status (base name: "status")', function() { + // uncomment below and update the code to test the property status + //var instance = new ArduinoIotClient.ArduinoSeriesRawBatchLastvalue(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesRawLastValueResponse.spec.js b/test/model/ArduinoSeriesRawLastValueResponse.spec.js new file mode 100644 index 0000000..78fe96b --- /dev/null +++ b/test/model/ArduinoSeriesRawLastValueResponse.spec.js @@ -0,0 +1,89 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesRawLastValueResponse(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesRawLastValueResponse', function() { + it('should create an instance of ArduinoSeriesRawLastValueResponse', function() { + // uncomment below and update the code to test ArduinoSeriesRawLastValueResponse + //var instance = new ArduinoIotClient.ArduinoSeriesRawLastValueResponse(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesRawLastValueResponse); + }); + + it('should have the property countValues (base name: "count_values")', function() { + // uncomment below and update the code to test the property countValues + //var instance = new ArduinoIotClient.ArduinoSeriesRawLastValueResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyId (base name: "property_id")', function() { + // uncomment below and update the code to test the property propertyId + //var instance = new ArduinoIotClient.ArduinoSeriesRawLastValueResponse(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.ArduinoSeriesRawLastValueResponse(); + //expect(instance).to.be(); + }); + + it('should have the property times (base name: "times")', function() { + // uncomment below and update the code to test the property times + //var instance = new ArduinoIotClient.ArduinoSeriesRawLastValueResponse(); + //expect(instance).to.be(); + }); + + it('should have the property values (base name: "values")', function() { + // uncomment below and update the code to test the property values + //var instance = new ArduinoIotClient.ArduinoSeriesRawLastValueResponse(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesRawResponse.spec.js b/test/model/ArduinoSeriesRawResponse.spec.js new file mode 100644 index 0000000..8d4f683 --- /dev/null +++ b/test/model/ArduinoSeriesRawResponse.spec.js @@ -0,0 +1,155 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesRawResponse', function() { + it('should create an instance of ArduinoSeriesRawResponse', function() { + // uncomment below and update the code to test ArduinoSeriesRawResponse + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesRawResponse); + }); + + it('should have the property countValues (base name: "count_values")', function() { + // uncomment below and update the code to test the property countValues + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property fromDate (base name: "from_date")', function() { + // uncomment below and update the code to test the property fromDate + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property message (base name: "message")', function() { + // uncomment below and update the code to test the property message + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyId (base name: "property_id")', function() { + // uncomment below and update the code to test the property propertyId + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyName (base name: "property_name")', function() { + // uncomment below and update the code to test the property propertyName + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyType (base name: "property_type")', function() { + // uncomment below and update the code to test the property propertyType + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property query (base name: "query")', function() { + // uncomment below and update the code to test the property query + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property series (base name: "series")', function() { + // uncomment below and update the code to test the property series + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property seriesLimit (base name: "series_limit")', function() { + // uncomment below and update the code to test the property seriesLimit + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property sort (base name: "sort")', function() { + // uncomment below and update the code to test the property sort + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property status (base name: "status")', function() { + // uncomment below and update the code to test the property status + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property times (base name: "times")', function() { + // uncomment below and update the code to test the property times + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property toDate (base name: "to_date")', function() { + // uncomment below and update the code to test the property toDate + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + it('should have the property values (base name: "values")', function() { + // uncomment below and update the code to test the property values + //var instance = new ArduinoIotClient.ArduinoSeriesRawResponse(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesResponse.spec.js b/test/model/ArduinoSeriesResponse.spec.js new file mode 100644 index 0000000..b93dda7 --- /dev/null +++ b/test/model/ArduinoSeriesResponse.spec.js @@ -0,0 +1,155 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesResponse(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesResponse', function() { + it('should create an instance of ArduinoSeriesResponse', function() { + // uncomment below and update the code to test ArduinoSeriesResponse + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesResponse); + }); + + it('should have the property aggregation (base name: "aggregation")', function() { + // uncomment below and update the code to test the property aggregation + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property countValues (base name: "count_values")', function() { + // uncomment below and update the code to test the property countValues + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property fromDate (base name: "from_date")', function() { + // uncomment below and update the code to test the property fromDate + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property interval (base name: "interval")', function() { + // uncomment below and update the code to test the property interval + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property message (base name: "message")', function() { + // uncomment below and update the code to test the property message + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyId (base name: "property_id")', function() { + // uncomment below and update the code to test the property propertyId + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyName (base name: "property_name")', function() { + // uncomment below and update the code to test the property propertyName + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyType (base name: "property_type")', function() { + // uncomment below and update the code to test the property propertyType + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property query (base name: "query")', function() { + // uncomment below and update the code to test the property query + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property seriesLimit (base name: "series_limit")', function() { + // uncomment below and update the code to test the property seriesLimit + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property status (base name: "status")', function() { + // uncomment below and update the code to test the property status + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property times (base name: "times")', function() { + // uncomment below and update the code to test the property times + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property toDate (base name: "to_date")', function() { + // uncomment below and update the code to test the property toDate + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + it('should have the property values (base name: "values")', function() { + // uncomment below and update the code to test the property values + //var instance = new ArduinoIotClient.ArduinoSeriesResponse(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoSeriesSampledResponse.spec.js b/test/model/ArduinoSeriesSampledResponse.spec.js new file mode 100644 index 0000000..d555d48 --- /dev/null +++ b/test/model/ArduinoSeriesSampledResponse.spec.js @@ -0,0 +1,149 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoSeriesSampledResponse', function() { + it('should create an instance of ArduinoSeriesSampledResponse', function() { + // uncomment below and update the code to test ArduinoSeriesSampledResponse + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoSeriesSampledResponse); + }); + + it('should have the property countValues (base name: "count_values")', function() { + // uncomment below and update the code to test the property countValues + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property fromDate (base name: "from_date")', function() { + // uncomment below and update the code to test the property fromDate + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property interval (base name: "interval")', function() { + // uncomment below and update the code to test the property interval + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property message (base name: "message")', function() { + // uncomment below and update the code to test the property message + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyId (base name: "property_id")', function() { + // uncomment below and update the code to test the property propertyId + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyName (base name: "property_name")', function() { + // uncomment below and update the code to test the property propertyName + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property propertyType (base name: "property_type")', function() { + // uncomment below and update the code to test the property propertyType + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property query (base name: "query")', function() { + // uncomment below and update the code to test the property query + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property seriesLimit (base name: "series_limit")', function() { + // uncomment below and update the code to test the property seriesLimit + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property status (base name: "status")', function() { + // uncomment below and update the code to test the property status + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property times (base name: "times")', function() { + // uncomment below and update the code to test the property times + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property toDate (base name: "to_date")', function() { + // uncomment below and update the code to test the property toDate + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + it('should have the property values (base name: "values")', function() { + // uncomment below and update the code to test the property values + //var instance = new ArduinoIotClient.ArduinoSeriesSampledResponse(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoTags.spec.js b/test/model/ArduinoTags.spec.js new file mode 100644 index 0000000..bbd1b95 --- /dev/null +++ b/test/model/ArduinoTags.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoTags(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoTags', function() { + it('should create an instance of ArduinoTags', function() { + // uncomment below and update the code to test ArduinoTags + //var instance = new ArduinoIotClient.ArduinoTags(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoTags); + }); + + it('should have the property tags (base name: "tags")', function() { + // uncomment below and update the code to test the property tags + //var instance = new ArduinoIotClient.ArduinoTags(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoTemplate.spec.js b/test/model/ArduinoTemplate.spec.js new file mode 100644 index 0000000..f1eb245 --- /dev/null +++ b/test/model/ArduinoTemplate.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoTemplate(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoTemplate', function() { + it('should create an instance of ArduinoTemplate', function() { + // uncomment below and update the code to test ArduinoTemplate + //var instance = new ArduinoIotClient.ArduinoTemplate(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoTemplate); + }); + + it('should have the property dashboards (base name: "dashboards")', function() { + // uncomment below and update the code to test the property dashboards + //var instance = new ArduinoIotClient.ArduinoTemplate(); + //expect(instance).to.be(); + }); + + it('should have the property things (base name: "things")', function() { + // uncomment below and update the code to test the property things + //var instance = new ArduinoIotClient.ArduinoTemplate(); + //expect(instance).to.be(); + }); + + it('should have the property triggers (base name: "triggers")', function() { + // uncomment below and update the code to test the property triggers + //var instance = new ArduinoIotClient.ArduinoTemplate(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoTemplateproperty.spec.js b/test/model/ArduinoTemplateproperty.spec.js new file mode 100644 index 0000000..56f8888 --- /dev/null +++ b/test/model/ArduinoTemplateproperty.spec.js @@ -0,0 +1,101 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoTemplateproperty(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoTemplateproperty', function() { + it('should create an instance of ArduinoTemplateproperty', function() { + // uncomment below and update the code to test ArduinoTemplateproperty + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoTemplateproperty); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be(); + }); + + it('should have the property permission (base name: "permission")', function() { + // uncomment below and update the code to test the property permission + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be(); + }); + + it('should have the property updateParameter (base name: "update_parameter")', function() { + // uncomment below and update the code to test the property updateParameter + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be(); + }); + + it('should have the property updateStrategy (base name: "update_strategy")', function() { + // uncomment below and update the code to test the property updateStrategy + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be(); + }); + + it('should have the property variableName (base name: "variable_name")', function() { + // uncomment below and update the code to test the property variableName + //var instance = new ArduinoIotClient.ArduinoTemplateproperty(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoTemplatevariable.spec.js b/test/model/ArduinoTemplatevariable.spec.js new file mode 100644 index 0000000..df476cb --- /dev/null +++ b/test/model/ArduinoTemplatevariable.spec.js @@ -0,0 +1,95 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoTemplatevariable(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoTemplatevariable', function() { + it('should create an instance of ArduinoTemplatevariable', function() { + // uncomment below and update the code to test ArduinoTemplatevariable + //var instance = new ArduinoIotClient.ArduinoTemplatevariable(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoTemplatevariable); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoTemplatevariable(); + //expect(instance).to.be(); + }); + + it('should have the property permission (base name: "permission")', function() { + // uncomment below and update the code to test the property permission + //var instance = new ArduinoIotClient.ArduinoTemplatevariable(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.ArduinoTemplatevariable(); + //expect(instance).to.be(); + }); + + it('should have the property thingTimezone (base name: "thing_timezone")', function() { + // uncomment below and update the code to test the property thingTimezone + //var instance = new ArduinoIotClient.ArduinoTemplatevariable(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoTemplatevariable(); + //expect(instance).to.be(); + }); + + it('should have the property variableId (base name: "variable_id")', function() { + // uncomment below and update the code to test the property variableId + //var instance = new ArduinoIotClient.ArduinoTemplatevariable(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoThing.spec.js b/test/model/ArduinoThing.spec.js new file mode 100644 index 0000000..9e2179f --- /dev/null +++ b/test/model/ArduinoThing.spec.js @@ -0,0 +1,179 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoThing(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoThing', function() { + it('should create an instance of ArduinoThing', function() { + // uncomment below and update the code to test ArduinoThing + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoThing); + }); + + it('should have the property assistant (base name: "assistant")', function() { + // uncomment below and update the code to test the property assistant + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property createdAt (base name: "created_at")', function() { + // uncomment below and update the code to test the property createdAt + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property deletedAt (base name: "deleted_at")', function() { + // uncomment below and update the code to test the property deletedAt + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property deviceFqbn (base name: "device_fqbn")', function() { + // uncomment below and update the code to test the property deviceFqbn + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property deviceId (base name: "device_id")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property deviceName (base name: "device_name")', function() { + // uncomment below and update the code to test the property deviceName + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property deviceType (base name: "device_type")', function() { + // uncomment below and update the code to test the property deviceType + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property href (base name: "href")', function() { + // uncomment below and update the code to test the property href + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property organizationId (base name: "organization_id")', function() { + // uncomment below and update the code to test the property organizationId + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property properties (base name: "properties")', function() { + // uncomment below and update the code to test the property properties + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property propertiesCount (base name: "properties_count")', function() { + // uncomment below and update the code to test the property propertiesCount + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property sketchId (base name: "sketch_id")', function() { + // uncomment below and update the code to test the property sketchId + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property tags (base name: "tags")', function() { + // uncomment below and update the code to test the property tags + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property timezone (base name: "timezone")', function() { + // uncomment below and update the code to test the property timezone + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property updatedAt (base name: "updated_at")', function() { + // uncomment below and update the code to test the property updatedAt + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property webhookActive (base name: "webhook_active")', function() { + // uncomment below and update the code to test the property webhookActive + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + it('should have the property webhookUri (base name: "webhook_uri")', function() { + // uncomment below and update the code to test the property webhookUri + //var instance = new ArduinoIotClient.ArduinoThing(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoThingresult.spec.js b/test/model/ArduinoThingresult.spec.js new file mode 100644 index 0000000..23b95fc --- /dev/null +++ b/test/model/ArduinoThingresult.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoThingresult(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoThingresult', function() { + it('should create an instance of ArduinoThingresult', function() { + // uncomment below and update the code to test ArduinoThingresult + //var instance = new ArduinoIotClient.ArduinoThingresult(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoThingresult); + }); + + it('should have the property deviceId (base name: "device_id")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.ArduinoThingresult(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoThingresult(); + //expect(instance).to.be(); + }); + + it('should have the property sketchId (base name: "sketch_id")', function() { + // uncomment below and update the code to test the property sketchId + //var instance = new ArduinoIotClient.ArduinoThingresult(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoThingtemplate.spec.js b/test/model/ArduinoThingtemplate.spec.js new file mode 100644 index 0000000..c8d8e51 --- /dev/null +++ b/test/model/ArduinoThingtemplate.spec.js @@ -0,0 +1,113 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoThingtemplate(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoThingtemplate', function() { + it('should create an instance of ArduinoThingtemplate', function() { + // uncomment below and update the code to test ArduinoThingtemplate + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoThingtemplate); + }); + + it('should have the property deviceMetadata (base name: "device_metadata")', function() { + // uncomment below and update the code to test the property deviceMetadata + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property organizationId (base name: "organization_id")', function() { + // uncomment below and update the code to test the property organizationId + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property sketchTemplate (base name: "sketch_template")', function() { + // uncomment below and update the code to test the property sketchTemplate + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property tags (base name: "tags")', function() { + // uncomment below and update the code to test the property tags + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property timezone (base name: "timezone")', function() { + // uncomment below and update the code to test the property timezone + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property variables (base name: "variables")', function() { + // uncomment below and update the code to test the property variables + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + it('should have the property webhookUri (base name: "webhook_uri")', function() { + // uncomment below and update the code to test the property webhookUri + //var instance = new ArduinoIotClient.ArduinoThingtemplate(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoTimeseriesmedia.spec.js b/test/model/ArduinoTimeseriesmedia.spec.js new file mode 100644 index 0000000..70c5dad --- /dev/null +++ b/test/model/ArduinoTimeseriesmedia.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoTimeseriesmedia(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoTimeseriesmedia', function() { + it('should create an instance of ArduinoTimeseriesmedia', function() { + // uncomment below and update the code to test ArduinoTimeseriesmedia + //var instance = new ArduinoIotClient.ArduinoTimeseriesmedia(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoTimeseriesmedia); + }); + + it('should have the property data (base name: "data")', function() { + // uncomment below and update the code to test the property data + //var instance = new ArduinoIotClient.ArduinoTimeseriesmedia(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoTimezone.spec.js b/test/model/ArduinoTimezone.spec.js new file mode 100644 index 0000000..41862dd --- /dev/null +++ b/test/model/ArduinoTimezone.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoTimezone(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoTimezone', function() { + it('should create an instance of ArduinoTimezone', function() { + // uncomment below and update the code to test ArduinoTimezone + //var instance = new ArduinoIotClient.ArduinoTimezone(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoTimezone); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoTimezone(); + //expect(instance).to.be(); + }); + + it('should have the property offset (base name: "offset")', function() { + // uncomment below and update the code to test the property offset + //var instance = new ArduinoIotClient.ArduinoTimezone(); + //expect(instance).to.be(); + }); + + it('should have the property until (base name: "until")', function() { + // uncomment below and update the code to test the property until + //var instance = new ArduinoIotClient.ArduinoTimezone(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoVariableslinks.spec.js b/test/model/ArduinoVariableslinks.spec.js new file mode 100644 index 0000000..c482e8e --- /dev/null +++ b/test/model/ArduinoVariableslinks.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoVariableslinks(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoVariableslinks', function() { + it('should create an instance of ArduinoVariableslinks', function() { + // uncomment below and update the code to test ArduinoVariableslinks + //var instance = new ArduinoIotClient.ArduinoVariableslinks(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoVariableslinks); + }); + + it('should have the property variables (base name: "variables")', function() { + // uncomment below and update the code to test the property variables + //var instance = new ArduinoIotClient.ArduinoVariableslinks(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoWidgetv2.spec.js b/test/model/ArduinoWidgetv2.spec.js new file mode 100644 index 0000000..dfc1c7c --- /dev/null +++ b/test/model/ArduinoWidgetv2.spec.js @@ -0,0 +1,155 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoWidgetv2(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoWidgetv2', function() { + it('should create an instance of ArduinoWidgetv2', function() { + // uncomment below and update the code to test ArduinoWidgetv2 + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoWidgetv2); + }); + + it('should have the property hasPermissionIncompatibility (base name: "has_permission_incompatibility")', function() { + // uncomment below and update the code to test the property hasPermissionIncompatibility + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property hasTypeIncompatibility (base name: "has_type_incompatibility")', function() { + // uncomment below and update the code to test the property hasTypeIncompatibility + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property hasUnlinkedVariable (base name: "has_unlinked_variable")', function() { + // uncomment below and update the code to test the property hasUnlinkedVariable + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property height (base name: "height")', function() { + // uncomment below and update the code to test the property height + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property heightMobile (base name: "height_mobile")', function() { + // uncomment below and update the code to test the property heightMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property options (base name: "options")', function() { + // uncomment below and update the code to test the property options + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property variables (base name: "variables")', function() { + // uncomment below and update the code to test the property variables + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property width (base name: "width")', function() { + // uncomment below and update the code to test the property width + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property widthMobile (base name: "width_mobile")', function() { + // uncomment below and update the code to test the property widthMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property x (base name: "x")', function() { + // uncomment below and update the code to test the property x + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property xMobile (base name: "x_mobile")', function() { + // uncomment below and update the code to test the property xMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property y (base name: "y")', function() { + // uncomment below and update the code to test the property y + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + it('should have the property yMobile (base name: "y_mobile")', function() { + // uncomment below and update the code to test the property yMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ArduinoWidgetv2template.spec.js b/test/model/ArduinoWidgetv2template.spec.js new file mode 100644 index 0000000..4e94c0e --- /dev/null +++ b/test/model/ArduinoWidgetv2template.spec.js @@ -0,0 +1,131 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ArduinoWidgetv2template(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ArduinoWidgetv2template', function() { + it('should create an instance of ArduinoWidgetv2template', function() { + // uncomment below and update the code to test ArduinoWidgetv2template + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be.a(ArduinoIotClient.ArduinoWidgetv2template); + }); + + it('should have the property height (base name: "height")', function() { + // uncomment below and update the code to test the property height + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property heightMobile (base name: "height_mobile")', function() { + // uncomment below and update the code to test the property heightMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property options (base name: "options")', function() { + // uncomment below and update the code to test the property options + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property variables (base name: "variables")', function() { + // uncomment below and update the code to test the property variables + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property width (base name: "width")', function() { + // uncomment below and update the code to test the property width + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property widthMobile (base name: "width_mobile")', function() { + // uncomment below and update the code to test the property widthMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property x (base name: "x")', function() { + // uncomment below and update the code to test the property x + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property xMobile (base name: "x_mobile")', function() { + // uncomment below and update the code to test the property xMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property y (base name: "y")', function() { + // uncomment below and update the code to test the property y + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + it('should have the property yMobile (base name: "y_mobile")', function() { + // uncomment below and update the code to test the property yMobile + //var instance = new ArduinoIotClient.ArduinoWidgetv2template(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchLastValueRequestsMediaV1.spec.js b/test/model/BatchLastValueRequestsMediaV1.spec.js new file mode 100644 index 0000000..675078b --- /dev/null +++ b/test/model/BatchLastValueRequestsMediaV1.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchLastValueRequestsMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchLastValueRequestsMediaV1', function() { + it('should create an instance of BatchLastValueRequestsMediaV1', function() { + // uncomment below and update the code to test BatchLastValueRequestsMediaV1 + //var instance = new ArduinoIotClient.BatchLastValueRequestsMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchLastValueRequestsMediaV1); + }); + + it('should have the property requests (base name: "requests")', function() { + // uncomment below and update the code to test the property requests + //var instance = new ArduinoIotClient.BatchLastValueRequestsMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQueryRawLastValueRequestMediaV1.spec.js b/test/model/BatchQueryRawLastValueRequestMediaV1.spec.js new file mode 100644 index 0000000..2548bd7 --- /dev/null +++ b/test/model/BatchQueryRawLastValueRequestMediaV1.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQueryRawLastValueRequestMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQueryRawLastValueRequestMediaV1', function() { + it('should create an instance of BatchQueryRawLastValueRequestMediaV1', function() { + // uncomment below and update the code to test BatchQueryRawLastValueRequestMediaV1 + //var instance = new ArduinoIotClient.BatchQueryRawLastValueRequestMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQueryRawLastValueRequestMediaV1); + }); + + it('should have the property propertyId (base name: "property_id")', function() { + // uncomment below and update the code to test the property propertyId + //var instance = new ArduinoIotClient.BatchQueryRawLastValueRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property thingId (base name: "thing_id")', function() { + // uncomment below and update the code to test the property thingId + //var instance = new ArduinoIotClient.BatchQueryRawLastValueRequestMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQueryRawRequestMediaV1.spec.js b/test/model/BatchQueryRawRequestMediaV1.spec.js new file mode 100644 index 0000000..2d111b5 --- /dev/null +++ b/test/model/BatchQueryRawRequestMediaV1.spec.js @@ -0,0 +1,89 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQueryRawRequestMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQueryRawRequestMediaV1', function() { + it('should create an instance of BatchQueryRawRequestMediaV1', function() { + // uncomment below and update the code to test BatchQueryRawRequestMediaV1 + //var instance = new ArduinoIotClient.BatchQueryRawRequestMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQueryRawRequestMediaV1); + }); + + it('should have the property from (base name: "from")', function() { + // uncomment below and update the code to test the property from + //var instance = new ArduinoIotClient.BatchQueryRawRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property q (base name: "q")', function() { + // uncomment below and update the code to test the property q + //var instance = new ArduinoIotClient.BatchQueryRawRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property seriesLimit (base name: "series_limit")', function() { + // uncomment below and update the code to test the property seriesLimit + //var instance = new ArduinoIotClient.BatchQueryRawRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property sort (base name: "sort")', function() { + // uncomment below and update the code to test the property sort + //var instance = new ArduinoIotClient.BatchQueryRawRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property to (base name: "to")', function() { + // uncomment below and update the code to test the property to + //var instance = new ArduinoIotClient.BatchQueryRawRequestMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQueryRawRequestsMediaV1.spec.js b/test/model/BatchQueryRawRequestsMediaV1.spec.js new file mode 100644 index 0000000..b928b54 --- /dev/null +++ b/test/model/BatchQueryRawRequestsMediaV1.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQueryRawRequestsMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQueryRawRequestsMediaV1', function() { + it('should create an instance of BatchQueryRawRequestsMediaV1', function() { + // uncomment below and update the code to test BatchQueryRawRequestsMediaV1 + //var instance = new ArduinoIotClient.BatchQueryRawRequestsMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQueryRawRequestsMediaV1); + }); + + it('should have the property requests (base name: "requests")', function() { + // uncomment below and update the code to test the property requests + //var instance = new ArduinoIotClient.BatchQueryRawRequestsMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.BatchQueryRawRequestsMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQueryRawResponseSeriesMediaV1.spec.js b/test/model/BatchQueryRawResponseSeriesMediaV1.spec.js new file mode 100644 index 0000000..8b0f27e --- /dev/null +++ b/test/model/BatchQueryRawResponseSeriesMediaV1.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQueryRawResponseSeriesMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQueryRawResponseSeriesMediaV1', function() { + it('should create an instance of BatchQueryRawResponseSeriesMediaV1', function() { + // uncomment below and update the code to test BatchQueryRawResponseSeriesMediaV1 + //var instance = new ArduinoIotClient.BatchQueryRawResponseSeriesMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQueryRawResponseSeriesMediaV1); + }); + + it('should have the property metric (base name: "metric")', function() { + // uncomment below and update the code to test the property metric + //var instance = new ArduinoIotClient.BatchQueryRawResponseSeriesMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQueryRequestMediaV1.spec.js b/test/model/BatchQueryRequestMediaV1.spec.js new file mode 100644 index 0000000..57c3eaa --- /dev/null +++ b/test/model/BatchQueryRequestMediaV1.spec.js @@ -0,0 +1,95 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQueryRequestMediaV1', function() { + it('should create an instance of BatchQueryRequestMediaV1', function() { + // uncomment below and update the code to test BatchQueryRequestMediaV1 + //var instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQueryRequestMediaV1); + }); + + it('should have the property aggregation (base name: "aggregation")', function() { + // uncomment below and update the code to test the property aggregation + //var instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property from (base name: "from")', function() { + // uncomment below and update the code to test the property from + //var instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property interval (base name: "interval")', function() { + // uncomment below and update the code to test the property interval + //var instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property q (base name: "q")', function() { + // uncomment below and update the code to test the property q + //var instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property seriesLimit (base name: "series_limit")', function() { + // uncomment below and update the code to test the property seriesLimit + //var instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property to (base name: "to")', function() { + // uncomment below and update the code to test the property to + //var instance = new ArduinoIotClient.BatchQueryRequestMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQueryRequestsMediaV1.spec.js b/test/model/BatchQueryRequestsMediaV1.spec.js new file mode 100644 index 0000000..0dba2e8 --- /dev/null +++ b/test/model/BatchQueryRequestsMediaV1.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQueryRequestsMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQueryRequestsMediaV1', function() { + it('should create an instance of BatchQueryRequestsMediaV1', function() { + // uncomment below and update the code to test BatchQueryRequestsMediaV1 + //var instance = new ArduinoIotClient.BatchQueryRequestsMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQueryRequestsMediaV1); + }); + + it('should have the property requests (base name: "requests")', function() { + // uncomment below and update the code to test the property requests + //var instance = new ArduinoIotClient.BatchQueryRequestsMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.BatchQueryRequestsMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQuerySampledRequestMediaV1.spec.js b/test/model/BatchQuerySampledRequestMediaV1.spec.js new file mode 100644 index 0000000..fbc13c0 --- /dev/null +++ b/test/model/BatchQuerySampledRequestMediaV1.spec.js @@ -0,0 +1,89 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQuerySampledRequestMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQuerySampledRequestMediaV1', function() { + it('should create an instance of BatchQuerySampledRequestMediaV1', function() { + // uncomment below and update the code to test BatchQuerySampledRequestMediaV1 + //var instance = new ArduinoIotClient.BatchQuerySampledRequestMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQuerySampledRequestMediaV1); + }); + + it('should have the property from (base name: "from")', function() { + // uncomment below and update the code to test the property from + //var instance = new ArduinoIotClient.BatchQuerySampledRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property interval (base name: "interval")', function() { + // uncomment below and update the code to test the property interval + //var instance = new ArduinoIotClient.BatchQuerySampledRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property q (base name: "q")', function() { + // uncomment below and update the code to test the property q + //var instance = new ArduinoIotClient.BatchQuerySampledRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property seriesLimit (base name: "series_limit")', function() { + // uncomment below and update the code to test the property seriesLimit + //var instance = new ArduinoIotClient.BatchQuerySampledRequestMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property to (base name: "to")', function() { + // uncomment below and update the code to test the property to + //var instance = new ArduinoIotClient.BatchQuerySampledRequestMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/BatchQuerySampledRequestsMediaV1.spec.js b/test/model/BatchQuerySampledRequestsMediaV1.spec.js new file mode 100644 index 0000000..7df99cd --- /dev/null +++ b/test/model/BatchQuerySampledRequestsMediaV1.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.BatchQuerySampledRequestsMediaV1(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('BatchQuerySampledRequestsMediaV1', function() { + it('should create an instance of BatchQuerySampledRequestsMediaV1', function() { + // uncomment below and update the code to test BatchQuerySampledRequestsMediaV1 + //var instance = new ArduinoIotClient.BatchQuerySampledRequestsMediaV1(); + //expect(instance).to.be.a(ArduinoIotClient.BatchQuerySampledRequestsMediaV1); + }); + + it('should have the property requests (base name: "requests")', function() { + // uncomment below and update the code to test the property requests + //var instance = new ArduinoIotClient.BatchQuerySampledRequestsMediaV1(); + //expect(instance).to.be(); + }); + + it('should have the property respVersion (base name: "resp_version")', function() { + // uncomment below and update the code to test the property respVersion + //var instance = new ArduinoIotClient.BatchQuerySampledRequestsMediaV1(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/CheckDevicesV2PassPayload.spec.js b/test/model/CheckDevicesV2PassPayload.spec.js new file mode 100644 index 0000000..becfe62 --- /dev/null +++ b/test/model/CheckDevicesV2PassPayload.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.CheckDevicesV2PassPayload(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('CheckDevicesV2PassPayload', function() { + it('should create an instance of CheckDevicesV2PassPayload', function() { + // uncomment below and update the code to test CheckDevicesV2PassPayload + //var instance = new ArduinoIotClient.CheckDevicesV2PassPayload(); + //expect(instance).to.be.a(ArduinoIotClient.CheckDevicesV2PassPayload); + }); + + it('should have the property password (base name: "password")', function() { + // uncomment below and update the code to test the property password + //var instance = new ArduinoIotClient.CheckDevicesV2PassPayload(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Clone.spec.js b/test/model/Clone.spec.js new file mode 100644 index 0000000..aaf519c --- /dev/null +++ b/test/model/Clone.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Clone(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Clone', function() { + it('should create an instance of Clone', function() { + // uncomment below and update the code to test Clone + //var instance = new ArduinoIotClient.Clone(); + //expect(instance).to.be.a(ArduinoIotClient.Clone); + }); + + it('should have the property overrides (base name: "overrides")', function() { + // uncomment below and update the code to test the property overrides + //var instance = new ArduinoIotClient.Clone(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/CreateDevicesV2CertsPayload.spec.js b/test/model/CreateDevicesV2CertsPayload.spec.js new file mode 100644 index 0000000..fe52198 --- /dev/null +++ b/test/model/CreateDevicesV2CertsPayload.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.CreateDevicesV2CertsPayload(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('CreateDevicesV2CertsPayload', function() { + it('should create an instance of CreateDevicesV2CertsPayload', function() { + // uncomment below and update the code to test CreateDevicesV2CertsPayload + //var instance = new ArduinoIotClient.CreateDevicesV2CertsPayload(); + //expect(instance).to.be.a(ArduinoIotClient.CreateDevicesV2CertsPayload); + }); + + it('should have the property ca (base name: "ca")', function() { + // uncomment below and update the code to test the property ca + //var instance = new ArduinoIotClient.CreateDevicesV2CertsPayload(); + //expect(instance).to.be(); + }); + + it('should have the property csr (base name: "csr")', function() { + // uncomment below and update the code to test the property csr + //var instance = new ArduinoIotClient.CreateDevicesV2CertsPayload(); + //expect(instance).to.be(); + }); + + it('should have the property enabled (base name: "enabled")', function() { + // uncomment below and update the code to test the property enabled + //var instance = new ArduinoIotClient.CreateDevicesV2CertsPayload(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/CreateDevicesV2Payload.spec.js b/test/model/CreateDevicesV2Payload.spec.js new file mode 100644 index 0000000..89309f9 --- /dev/null +++ b/test/model/CreateDevicesV2Payload.spec.js @@ -0,0 +1,101 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.CreateDevicesV2Payload(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('CreateDevicesV2Payload', function() { + it('should create an instance of CreateDevicesV2Payload', function() { + // uncomment below and update the code to test CreateDevicesV2Payload + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be.a(ArduinoIotClient.CreateDevicesV2Payload); + }); + + it('should have the property connectionType (base name: "connection_type")', function() { + // uncomment below and update the code to test the property connectionType + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be(); + }); + + it('should have the property fqbn (base name: "fqbn")', function() { + // uncomment below and update the code to test the property fqbn + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be(); + }); + + it('should have the property serial (base name: "serial")', function() { + // uncomment below and update the code to test the property serial + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be(); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be(); + }); + + it('should have the property wifiFwVersion (base name: "wifi_fw_version")', function() { + // uncomment below and update the code to test the property wifiFwVersion + //var instance = new ArduinoIotClient.CreateDevicesV2Payload(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/CreateLoraDevicesV1Payload.spec.js b/test/model/CreateLoraDevicesV1Payload.spec.js new file mode 100644 index 0000000..ef913cc --- /dev/null +++ b/test/model/CreateLoraDevicesV1Payload.spec.js @@ -0,0 +1,113 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('CreateLoraDevicesV1Payload', function() { + it('should create an instance of CreateLoraDevicesV1Payload', function() { + // uncomment below and update the code to test CreateLoraDevicesV1Payload + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be.a(ArduinoIotClient.CreateLoraDevicesV1Payload); + }); + + it('should have the property app (base name: "app")', function() { + // uncomment below and update the code to test the property app + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property appEui (base name: "app_eui")', function() { + // uncomment below and update the code to test the property appEui + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property appKey (base name: "app_key")', function() { + // uncomment below and update the code to test the property appKey + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property eui (base name: "eui")', function() { + // uncomment below and update the code to test the property eui + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property frequencyPlan (base name: "frequency_plan")', function() { + // uncomment below and update the code to test the property frequencyPlan + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property serial (base name: "serial")', function() { + // uncomment below and update the code to test the property serial + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.CreateLoraDevicesV1Payload(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Dashboardshare.spec.js b/test/model/Dashboardshare.spec.js new file mode 100644 index 0000000..eb4da18 --- /dev/null +++ b/test/model/Dashboardshare.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Dashboardshare(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Dashboardshare', function() { + it('should create an instance of Dashboardshare', function() { + // uncomment below and update the code to test Dashboardshare + //var instance = new ArduinoIotClient.Dashboardshare(); + //expect(instance).to.be.a(ArduinoIotClient.Dashboardshare); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.Dashboardshare(); + //expect(instance).to.be(); + }); + + it('should have the property username (base name: "username")', function() { + // uncomment below and update the code to test the property username + //var instance = new ArduinoIotClient.Dashboardshare(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Dashboardv2.spec.js b/test/model/Dashboardv2.spec.js new file mode 100644 index 0000000..3f69a45 --- /dev/null +++ b/test/model/Dashboardv2.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Dashboardv2(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Dashboardv2', function() { + it('should create an instance of Dashboardv2', function() { + // uncomment below and update the code to test Dashboardv2 + //var instance = new ArduinoIotClient.Dashboardv2(); + //expect(instance).to.be.a(ArduinoIotClient.Dashboardv2); + }); + + it('should have the property coverImage (base name: "cover_image")', function() { + // uncomment below and update the code to test the property coverImage + //var instance = new ArduinoIotClient.Dashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.Dashboardv2(); + //expect(instance).to.be(); + }); + + it('should have the property widgets (base name: "widgets")', function() { + // uncomment below and update the code to test the property widgets + //var instance = new ArduinoIotClient.Dashboardv2(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Devicev2.spec.js b/test/model/Devicev2.spec.js new file mode 100644 index 0000000..31c2c4e --- /dev/null +++ b/test/model/Devicev2.spec.js @@ -0,0 +1,101 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Devicev2(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Devicev2', function() { + it('should create an instance of Devicev2', function() { + // uncomment below and update the code to test Devicev2 + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be.a(ArduinoIotClient.Devicev2); + }); + + it('should have the property connectionType (base name: "connection_type")', function() { + // uncomment below and update the code to test the property connectionType + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be(); + }); + + it('should have the property fqbn (base name: "fqbn")', function() { + // uncomment below and update the code to test the property fqbn + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be(); + }); + + it('should have the property serial (base name: "serial")', function() { + // uncomment below and update the code to test the property serial + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be(); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be(); + }); + + it('should have the property wifiFwVersion (base name: "wifi_fw_version")', function() { + // uncomment below and update the code to test the property wifiFwVersion + //var instance = new ArduinoIotClient.Devicev2(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Devicev2Cert.spec.js b/test/model/Devicev2Cert.spec.js new file mode 100644 index 0000000..f10e9ff --- /dev/null +++ b/test/model/Devicev2Cert.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Devicev2Cert(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Devicev2Cert', function() { + it('should create an instance of Devicev2Cert', function() { + // uncomment below and update the code to test Devicev2Cert + //var instance = new ArduinoIotClient.Devicev2Cert(); + //expect(instance).to.be.a(ArduinoIotClient.Devicev2Cert); + }); + + it('should have the property ca (base name: "ca")', function() { + // uncomment below and update the code to test the property ca + //var instance = new ArduinoIotClient.Devicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property csr (base name: "csr")', function() { + // uncomment below and update the code to test the property csr + //var instance = new ArduinoIotClient.Devicev2Cert(); + //expect(instance).to.be(); + }); + + it('should have the property enabled (base name: "enabled")', function() { + // uncomment below and update the code to test the property enabled + //var instance = new ArduinoIotClient.Devicev2Cert(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Devicev2Otabinaryurl.spec.js b/test/model/Devicev2Otabinaryurl.spec.js new file mode 100644 index 0000000..5f84692 --- /dev/null +++ b/test/model/Devicev2Otabinaryurl.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Devicev2Otabinaryurl(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Devicev2Otabinaryurl', function() { + it('should create an instance of Devicev2Otabinaryurl', function() { + // uncomment below and update the code to test Devicev2Otabinaryurl + //var instance = new ArduinoIotClient.Devicev2Otabinaryurl(); + //expect(instance).to.be.a(ArduinoIotClient.Devicev2Otabinaryurl); + }); + + it('should have the property async (base name: "async")', function() { + // uncomment below and update the code to test the property async + //var instance = new ArduinoIotClient.Devicev2Otabinaryurl(); + //expect(instance).to.be(); + }); + + it('should have the property binaryKey (base name: "binary_key")', function() { + // uncomment below and update the code to test the property binaryKey + //var instance = new ArduinoIotClient.Devicev2Otabinaryurl(); + //expect(instance).to.be(); + }); + + it('should have the property expireInMins (base name: "expire_in_mins")', function() { + // uncomment below and update the code to test the property expireInMins + //var instance = new ArduinoIotClient.Devicev2Otabinaryurl(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Devicev2Otaurlpyalod.spec.js b/test/model/Devicev2Otaurlpyalod.spec.js new file mode 100644 index 0000000..d34304d --- /dev/null +++ b/test/model/Devicev2Otaurlpyalod.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Devicev2Otaurlpyalod(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Devicev2Otaurlpyalod', function() { + it('should create an instance of Devicev2Otaurlpyalod', function() { + // uncomment below and update the code to test Devicev2Otaurlpyalod + //var instance = new ArduinoIotClient.Devicev2Otaurlpyalod(); + //expect(instance).to.be.a(ArduinoIotClient.Devicev2Otaurlpyalod); + }); + + it('should have the property binaryKey (base name: "binary_key")', function() { + // uncomment below and update the code to test the property binaryKey + //var instance = new ArduinoIotClient.Devicev2Otaurlpyalod(); + //expect(instance).to.be(); + }); + + it('should have the property sha256 (base name: "sha256")', function() { + // uncomment below and update the code to test the property sha256 + //var instance = new ArduinoIotClient.Devicev2Otaurlpyalod(); + //expect(instance).to.be(); + }); + + it('should have the property userId (base name: "user_id")', function() { + // uncomment below and update the code to test the property userId + //var instance = new ArduinoIotClient.Devicev2Otaurlpyalod(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Devicev2Pass.spec.js b/test/model/Devicev2Pass.spec.js new file mode 100644 index 0000000..76794d1 --- /dev/null +++ b/test/model/Devicev2Pass.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Devicev2Pass(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Devicev2Pass', function() { + it('should create an instance of Devicev2Pass', function() { + // uncomment below and update the code to test Devicev2Pass + //var instance = new ArduinoIotClient.Devicev2Pass(); + //expect(instance).to.be.a(ArduinoIotClient.Devicev2Pass); + }); + + it('should have the property password (base name: "password")', function() { + // uncomment below and update the code to test the property password + //var instance = new ArduinoIotClient.Devicev2Pass(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Error.spec.js b/test/model/Error.spec.js new file mode 100644 index 0000000..c17e31b --- /dev/null +++ b/test/model/Error.spec.js @@ -0,0 +1,89 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Error(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Error', function() { + it('should create an instance of Error', function() { + // uncomment below and update the code to test Error + //var instance = new ArduinoIotClient.Error(); + //expect(instance).to.be.a(ArduinoIotClient.Error); + }); + + it('should have the property code (base name: "code")', function() { + // uncomment below and update the code to test the property code + //var instance = new ArduinoIotClient.Error(); + //expect(instance).to.be(); + }); + + it('should have the property detail (base name: "detail")', function() { + // uncomment below and update the code to test the property detail + //var instance = new ArduinoIotClient.Error(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.Error(); + //expect(instance).to.be(); + }); + + it('should have the property meta (base name: "meta")', function() { + // uncomment below and update the code to test the property meta + //var instance = new ArduinoIotClient.Error(); + //expect(instance).to.be(); + }); + + it('should have the property status (base name: "status")', function() { + // uncomment below and update the code to test the property status + //var instance = new ArduinoIotClient.Error(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/HistoricDataRequest.spec.js b/test/model/HistoricDataRequest.spec.js new file mode 100644 index 0000000..2451c92 --- /dev/null +++ b/test/model/HistoricDataRequest.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.HistoricDataRequest(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('HistoricDataRequest', function() { + it('should create an instance of HistoricDataRequest', function() { + // uncomment below and update the code to test HistoricDataRequest + //var instance = new ArduinoIotClient.HistoricDataRequest(); + //expect(instance).to.be.a(ArduinoIotClient.HistoricDataRequest); + }); + + it('should have the property from (base name: "from")', function() { + // uncomment below and update the code to test the property from + //var instance = new ArduinoIotClient.HistoricDataRequest(); + //expect(instance).to.be(); + }); + + it('should have the property properties (base name: "properties")', function() { + // uncomment below and update the code to test the property properties + //var instance = new ArduinoIotClient.HistoricDataRequest(); + //expect(instance).to.be(); + }); + + it('should have the property to (base name: "to")', function() { + // uncomment below and update the code to test the property to + //var instance = new ArduinoIotClient.HistoricDataRequest(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Override.spec.js b/test/model/Override.spec.js new file mode 100644 index 0000000..4fdd832 --- /dev/null +++ b/test/model/Override.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Override(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Override', function() { + it('should create an instance of Override', function() { + // uncomment below and update the code to test Override + //var instance = new ArduinoIotClient.Override(); + //expect(instance).to.be.a(ArduinoIotClient.Override); + }); + + it('should have the property newThingId (base name: "new_thing_id")', function() { + // uncomment below and update the code to test the property newThingId + //var instance = new ArduinoIotClient.Override(); + //expect(instance).to.be(); + }); + + it('should have the property oldThingId (base name: "old_thing_id")', function() { + // uncomment below and update the code to test the property oldThingId + //var instance = new ArduinoIotClient.Override(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/PropertiesValue.spec.js b/test/model/PropertiesValue.spec.js new file mode 100644 index 0000000..9edbcc5 --- /dev/null +++ b/test/model/PropertiesValue.spec.js @@ -0,0 +1,77 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.PropertiesValue(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('PropertiesValue', function() { + it('should create an instance of PropertiesValue', function() { + // uncomment below and update the code to test PropertiesValue + //var instance = new ArduinoIotClient.PropertiesValue(); + //expect(instance).to.be.a(ArduinoIotClient.PropertiesValue); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.PropertiesValue(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.PropertiesValue(); + //expect(instance).to.be(); + }); + + it('should have the property value (base name: "value")', function() { + // uncomment below and update the code to test the property value + //var instance = new ArduinoIotClient.PropertiesValue(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/PropertiesValues.spec.js b/test/model/PropertiesValues.spec.js new file mode 100644 index 0000000..2d3220f --- /dev/null +++ b/test/model/PropertiesValues.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.PropertiesValues(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('PropertiesValues', function() { + it('should create an instance of PropertiesValues', function() { + // uncomment below and update the code to test PropertiesValues + //var instance = new ArduinoIotClient.PropertiesValues(); + //expect(instance).to.be.a(ArduinoIotClient.PropertiesValues); + }); + + it('should have the property input (base name: "input")', function() { + // uncomment below and update the code to test the property input + //var instance = new ArduinoIotClient.PropertiesValues(); + //expect(instance).to.be(); + }); + + it('should have the property properties (base name: "properties")', function() { + // uncomment below and update the code to test the property properties + //var instance = new ArduinoIotClient.PropertiesValues(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Property.spec.js b/test/model/Property.spec.js new file mode 100644 index 0000000..e56f28b --- /dev/null +++ b/test/model/Property.spec.js @@ -0,0 +1,119 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Property(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Property', function() { + it('should create an instance of Property', function() { + // uncomment below and update the code to test Property + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be.a(ArduinoIotClient.Property); + }); + + it('should have the property maxValue (base name: "max_value")', function() { + // uncomment below and update the code to test the property maxValue + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property minValue (base name: "min_value")', function() { + // uncomment below and update the code to test the property minValue + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property permission (base name: "permission")', function() { + // uncomment below and update the code to test the property permission + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property persist (base name: "persist")', function() { + // uncomment below and update the code to test the property persist + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property tag (base name: "tag")', function() { + // uncomment below and update the code to test the property tag + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property updateParameter (base name: "update_parameter")', function() { + // uncomment below and update the code to test the property updateParameter + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property updateStrategy (base name: "update_strategy")', function() { + // uncomment below and update the code to test the property updateStrategy + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + it('should have the property variableName (base name: "variable_name")', function() { + // uncomment below and update the code to test the property variableName + //var instance = new ArduinoIotClient.Property(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/PropertyValue.spec.js b/test/model/PropertyValue.spec.js new file mode 100644 index 0000000..abbd20d --- /dev/null +++ b/test/model/PropertyValue.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.PropertyValue(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('PropertyValue', function() { + it('should create an instance of PropertyValue', function() { + // uncomment below and update the code to test PropertyValue + //var instance = new ArduinoIotClient.PropertyValue(); + //expect(instance).to.be.a(ArduinoIotClient.PropertyValue); + }); + + it('should have the property deviceId (base name: "device_id")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.PropertyValue(); + //expect(instance).to.be(); + }); + + it('should have the property value (base name: "value")', function() { + // uncomment below and update the code to test the property value + //var instance = new ArduinoIotClient.PropertyValue(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Sharerequest.spec.js b/test/model/Sharerequest.spec.js new file mode 100644 index 0000000..d81af64 --- /dev/null +++ b/test/model/Sharerequest.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Sharerequest(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Sharerequest', function() { + it('should create an instance of Sharerequest', function() { + // uncomment below and update the code to test Sharerequest + //var instance = new ArduinoIotClient.Sharerequest(); + //expect(instance).to.be.a(ArduinoIotClient.Sharerequest); + }); + + it('should have the property message (base name: "message")', function() { + // uncomment below and update the code to test the property message + //var instance = new ArduinoIotClient.Sharerequest(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Tag.spec.js b/test/model/Tag.spec.js new file mode 100644 index 0000000..5fad870 --- /dev/null +++ b/test/model/Tag.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Tag(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Tag', function() { + it('should create an instance of Tag', function() { + // uncomment below and update the code to test Tag + //var instance = new ArduinoIotClient.Tag(); + //expect(instance).to.be.a(ArduinoIotClient.Tag); + }); + + it('should have the property key (base name: "key")', function() { + // uncomment below and update the code to test the property key + //var instance = new ArduinoIotClient.Tag(); + //expect(instance).to.be(); + }); + + it('should have the property value (base name: "value")', function() { + // uncomment below and update the code to test the property value + //var instance = new ArduinoIotClient.Tag(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Template.spec.js b/test/model/Template.spec.js new file mode 100644 index 0000000..a6de865 --- /dev/null +++ b/test/model/Template.spec.js @@ -0,0 +1,83 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Template(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Template', function() { + it('should create an instance of Template', function() { + // uncomment below and update the code to test Template + //var instance = new ArduinoIotClient.Template(); + //expect(instance).to.be.a(ArduinoIotClient.Template); + }); + + it('should have the property customTemplateId (base name: "custom_template_id")', function() { + // uncomment below and update the code to test the property customTemplateId + //var instance = new ArduinoIotClient.Template(); + //expect(instance).to.be(); + }); + + it('should have the property prefixName (base name: "prefix_name")', function() { + // uncomment below and update the code to test the property prefixName + //var instance = new ArduinoIotClient.Template(); + //expect(instance).to.be(); + }); + + it('should have the property templateName (base name: "template_name")', function() { + // uncomment below and update the code to test the property templateName + //var instance = new ArduinoIotClient.Template(); + //expect(instance).to.be(); + }); + + it('should have the property thingsOptions (base name: "things_options")', function() { + // uncomment below and update the code to test the property thingsOptions + //var instance = new ArduinoIotClient.Template(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ThingClone.spec.js b/test/model/ThingClone.spec.js new file mode 100644 index 0000000..d206715 --- /dev/null +++ b/test/model/ThingClone.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ThingClone(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ThingClone', function() { + it('should create an instance of ThingClone', function() { + // uncomment below and update the code to test ThingClone + //var instance = new ArduinoIotClient.ThingClone(); + //expect(instance).to.be.a(ArduinoIotClient.ThingClone); + }); + + it('should have the property includeTags (base name: "include_tags")', function() { + // uncomment below and update the code to test the property includeTags + //var instance = new ArduinoIotClient.ThingClone(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ThingClone(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ThingCreate.spec.js b/test/model/ThingCreate.spec.js new file mode 100644 index 0000000..743c68f --- /dev/null +++ b/test/model/ThingCreate.spec.js @@ -0,0 +1,113 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ThingCreate(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ThingCreate', function() { + it('should create an instance of ThingCreate', function() { + // uncomment below and update the code to test ThingCreate + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be.a(ArduinoIotClient.ThingCreate); + }); + + it('should have the property assistant (base name: "assistant")', function() { + // uncomment below and update the code to test the property assistant + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property deviceId (base name: "device_id")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property properties (base name: "properties")', function() { + // uncomment below and update the code to test the property properties + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property tags (base name: "tags")', function() { + // uncomment below and update the code to test the property tags + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property timezone (base name: "timezone")', function() { + // uncomment below and update the code to test the property timezone + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property webhookActive (base name: "webhook_active")', function() { + // uncomment below and update the code to test the property webhookActive + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + it('should have the property webhookUri (base name: "webhook_uri")', function() { + // uncomment below and update the code to test the property webhookUri + //var instance = new ArduinoIotClient.ThingCreate(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ThingSketch.spec.js b/test/model/ThingSketch.spec.js new file mode 100644 index 0000000..9b42276 --- /dev/null +++ b/test/model/ThingSketch.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ThingSketch(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ThingSketch', function() { + it('should create an instance of ThingSketch', function() { + // uncomment below and update the code to test ThingSketch + //var instance = new ArduinoIotClient.ThingSketch(); + //expect(instance).to.be.a(ArduinoIotClient.ThingSketch); + }); + + it('should have the property sketchVersion (base name: "sketch_version")', function() { + // uncomment below and update the code to test the property sketchVersion + //var instance = new ArduinoIotClient.ThingSketch(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/ThingUpdate.spec.js b/test/model/ThingUpdate.spec.js new file mode 100644 index 0000000..78d5e1b --- /dev/null +++ b/test/model/ThingUpdate.spec.js @@ -0,0 +1,107 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.ThingUpdate(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('ThingUpdate', function() { + it('should create an instance of ThingUpdate', function() { + // uncomment below and update the code to test ThingUpdate + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be.a(ArduinoIotClient.ThingUpdate); + }); + + it('should have the property assistant (base name: "assistant")', function() { + // uncomment below and update the code to test the property assistant + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + it('should have the property deviceId (base name: "device_id")', function() { + // uncomment below and update the code to test the property deviceId + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + it('should have the property properties (base name: "properties")', function() { + // uncomment below and update the code to test the property properties + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + it('should have the property timezone (base name: "timezone")', function() { + // uncomment below and update the code to test the property timezone + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + it('should have the property webhookActive (base name: "webhook_active")', function() { + // uncomment below and update the code to test the property webhookActive + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + it('should have the property webhookUri (base name: "webhook_uri")', function() { + // uncomment below and update the code to test the property webhookUri + //var instance = new ArduinoIotClient.ThingUpdate(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/TimeseriesDataPoint.spec.js b/test/model/TimeseriesDataPoint.spec.js new file mode 100644 index 0000000..27b5280 --- /dev/null +++ b/test/model/TimeseriesDataPoint.spec.js @@ -0,0 +1,71 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.TimeseriesDataPoint(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('TimeseriesDataPoint', function() { + it('should create an instance of TimeseriesDataPoint', function() { + // uncomment below and update the code to test TimeseriesDataPoint + //var instance = new ArduinoIotClient.TimeseriesDataPoint(); + //expect(instance).to.be.a(ArduinoIotClient.TimeseriesDataPoint); + }); + + it('should have the property time (base name: "time")', function() { + // uncomment below and update the code to test the property time + //var instance = new ArduinoIotClient.TimeseriesDataPoint(); + //expect(instance).to.be(); + }); + + it('should have the property value (base name: "value")', function() { + // uncomment below and update the code to test the property value + //var instance = new ArduinoIotClient.TimeseriesDataPoint(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/UpdateSketch.spec.js b/test/model/UpdateSketch.spec.js new file mode 100644 index 0000000..2498a9a --- /dev/null +++ b/test/model/UpdateSketch.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.UpdateSketch(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('UpdateSketch', function() { + it('should create an instance of UpdateSketch', function() { + // uncomment below and update the code to test UpdateSketch + //var instance = new ArduinoIotClient.UpdateSketch(); + //expect(instance).to.be.a(ArduinoIotClient.UpdateSketch); + }); + + it('should have the property sketchVersion (base name: "sketch_version")', function() { + // uncomment below and update the code to test the property sketchVersion + //var instance = new ArduinoIotClient.UpdateSketch(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Widget.spec.js b/test/model/Widget.spec.js new file mode 100644 index 0000000..32929e0 --- /dev/null +++ b/test/model/Widget.spec.js @@ -0,0 +1,137 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Widget(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Widget', function() { + it('should create an instance of Widget', function() { + // uncomment below and update the code to test Widget + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be.a(ArduinoIotClient.Widget); + }); + + it('should have the property height (base name: "height")', function() { + // uncomment below and update the code to test the property height + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property heightMobile (base name: "height_mobile")', function() { + // uncomment below and update the code to test the property heightMobile + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property id (base name: "id")', function() { + // uncomment below and update the code to test the property id + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property name (base name: "name")', function() { + // uncomment below and update the code to test the property name + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property options (base name: "options")', function() { + // uncomment below and update the code to test the property options + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property type (base name: "type")', function() { + // uncomment below and update the code to test the property type + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property variables (base name: "variables")', function() { + // uncomment below and update the code to test the property variables + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property width (base name: "width")', function() { + // uncomment below and update the code to test the property width + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property widthMobile (base name: "width_mobile")', function() { + // uncomment below and update the code to test the property widthMobile + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property x (base name: "x")', function() { + // uncomment below and update the code to test the property x + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property xMobile (base name: "x_mobile")', function() { + // uncomment below and update the code to test the property xMobile + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property y (base name: "y")', function() { + // uncomment below and update the code to test the property y + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + it('should have the property yMobile (base name: "y_mobile")', function() { + // uncomment below and update the code to test the property yMobile + //var instance = new ArduinoIotClient.Widget(); + //expect(instance).to.be(); + }); + + }); + +})); diff --git a/test/model/Widgetlink.spec.js b/test/model/Widgetlink.spec.js new file mode 100644 index 0000000..d969db4 --- /dev/null +++ b/test/model/Widgetlink.spec.js @@ -0,0 +1,65 @@ +/** + * Arduino IoT Cloud API + * Provides a set of endpoints to manage Arduino IoT Cloud **Devices**, **Things**, **Properties** and **Timeseries**. This API can be called just with any HTTP Client, or using one of these clients: * [Javascript NPM package](https://www.npmjs.com/package/@arduino/arduino-iot-client) * [Python PYPI Package](https://pypi.org/project/arduino-iot-client/) * [Golang Module](https://github.com/arduino/iot-client-go) + * + * The version of the OpenAPI document: 2.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', process.cwd()+'/src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require(process.cwd()+'/src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.ArduinoIotClient); + } +}(this, function(expect, ArduinoIotClient) { + 'use strict'; + + var instance; + + beforeEach(function() { + instance = new ArduinoIotClient.Widgetlink(); + }); + + var getProperty = function(object, getter, property) { + // Use getter method if present; otherwise, get the property directly. + if (typeof object[getter] === 'function') + return object[getter](); + else + return object[property]; + } + + var setProperty = function(object, setter, property, value) { + // Use setter method if present; otherwise, set the property directly. + if (typeof object[setter] === 'function') + object[setter](value); + else + object[property] = value; + } + + describe('Widgetlink', function() { + it('should create an instance of Widgetlink', function() { + // uncomment below and update the code to test Widgetlink + //var instance = new ArduinoIotClient.Widgetlink(); + //expect(instance).to.be.a(ArduinoIotClient.Widgetlink); + }); + + it('should have the property variables (base name: "variables")', function() { + // uncomment below and update the code to test the property variables + //var instance = new ArduinoIotClient.Widgetlink(); + //expect(instance).to.be(); + }); + + }); + +})); From 76c02f9dd5060e177e7912abd38887f7150c3c00 Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Fri, 25 Oct 2024 14:29:49 +0200 Subject: [PATCH 2/3] Added tests --- smoke_test/smoke_test.js | 43 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/smoke_test/smoke_test.js b/smoke_test/smoke_test.js index 8434be3..98a8b14 100644 --- a/smoke_test/smoke_test.js +++ b/smoke_test/smoke_test.js @@ -42,4 +42,45 @@ describe('Devices List', function(){ done(error) }); }); -}); \ No newline at end of file +}); + +describe('Thing List', function(){ + it('thing list return 200 OK', function(done) { + getToken().then(function(token) { + var client = IotApi.ApiClient.instance; + // Configure OAuth2 access token for authorization: oauth2 + var oauth2 = client.authentications['oauth2']; + oauth2.accessToken = token; + + var api = new IotApi.ThingsV2Api(client) + api.thingsV2List().then(function() { + done(); + }, function(error) { + done(error); + }); + }, function(error) { + done(error) + }); + }); + }); + + describe('Dashboard List', function(){ + it('dashboard list return 200 OK', function(done) { + getToken().then(function(token) { + var client = IotApi.ApiClient.instance; + // Configure OAuth2 access token for authorization: oauth2 + var oauth2 = client.authentications['oauth2']; + oauth2.accessToken = token; + + var api = new IotApi.DashboardsV2Api(client) + api.dashboardsV2List().then(function() { + done(); + }, function(error) { + done(error); + }); + }, function(error) { + done(error) + }); + }); + }); + \ No newline at end of file From d786eb894a58dc3ffaa967c7db14b1da09b57cc1 Mon Sep 17 00:00:00 2001 From: Marco Colombo Date: Fri, 25 Oct 2024 14:34:06 +0200 Subject: [PATCH 3/3] Upgraded action --- .github/workflows/test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 783f036..9c14cf0 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -23,9 +23,9 @@ jobs: uses: actions/checkout@master - name: Smoke test - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: - node-version: '12' + node-version: '20' - run: npm install - run: npm run build - run: cd smoke_test