openapi: 3.0.0 info: title: Edge Impulse DSP API version: 1.0.0 servers: - url: https://studio.edgeimpulse.com/v1 security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] tags: - name: DSP paths: /api/{projectId}/dsp/{dspId}: get: summary: Get config description: Retrieve the configuration parameters for the DSP block. Use the impulse functions to retrieve all DSP blocks. operationId: getDspConfig tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DSPConfigResponse' post: summary: Set config description: Set configuration parameters for the DSP block. Only values set in the body will be overwritten. operationId: setDspConfig tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DSPConfigRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenericApiResponse' /api/{projectId}/dsp/{dspId}/clear: post: summary: Clear DSP block description: Clear generated features for a DSP block (used in tests). operationId: clearDspBlock tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenericApiResponse' /api/{projectId}/dsp/{dspId}/metadata: get: summary: Get metadata description: Retrieve the metadata from a generated DSP block. operationId: getDspMetadata tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/ExcludeIncludedSamplesParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DSPMetadataResponse' /api/{projectId}/dsp/{dspId}/raw-data/{sampleId}: get: summary: Get raw sample description: Get raw sample data, but with only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out. If you pass dspId = 0 this will return a raw graph without any processing. operationId: getDspRawSample tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/SampleIdParameter' - $ref: '#/components/parameters/LimitPayloadValues' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetSampleResponse' /api/{projectId}/dsp/{dspId}/raw-data/{sampleId}/slice: get: summary: Get raw sample (slice) description: Get slice of raw sample data, but with only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out. operationId: getDspSampleSlice tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/SampleIdParameter' - $ref: '#/components/parameters/SliceStartParameter' - $ref: '#/components/parameters/OptionalSliceEndDefaultToWindowLengthParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetSampleResponse' /api/{projectId}/dsp/{dspId}/raw-data/{sampleId}/slice/run: post: summary: Get processed sample (slice) description: Get slice of sample data, and run it through the DSP block. This only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out. operationId: runDspSampleSlice tags: - DSP x-middleware: - CustomResponse parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/SampleIdParameter' - $ref: '#/components/parameters/SliceStartParameter' - $ref: '#/components/parameters/OptionalSliceEndDefaultToWindowLengthParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DspRunRequestWithoutFeatures' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspRunResponseWithSample' /api/{projectId}/dsp/{dspId}/raw-data/{sampleId}/slice/run/readonly: get: summary: Get processed sample (slice) description: Get slice of sample data, and run it through the DSP block. This only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out. operationId: runDspSampleSliceReadOnly tags: - DSP x-middleware: - AllowsReadOnly - CustomResponse parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/SampleIdParameter' - $ref: '#/components/parameters/SliceStartParameter' - $ref: '#/components/parameters/OptionalSliceEndDefaultToWindowLengthParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspRunResponseWithSample' /api/{projectId}/dsp/{dspId}/features/labels: get: summary: Feature labels description: Retrieve the names of the features the DSP block generates operationId: getDspFeatureLabels tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspFeatureLabelsResponse' /api/{projectId}/dsp/{dspId}/features/get-graph/{category}: get: summary: Sample of trained features description: Get a sample of trained features, this extracts a number of samples and their labels. Used to visualize the current training set. operationId: dspSampleTrainedFeatures tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/FeatureAx1Parameter' - $ref: '#/components/parameters/FeatureAx2Parameter' - $ref: '#/components/parameters/FeatureAx3Parameter' - $ref: '#/components/parameters/RawDataCategoryParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspTrainedFeaturesResponse' /api/{projectId}/dsp/{dspId}/features/get-graph/classification/{sampleId}: get: summary: Features for sample description: Runs the DSP block against a sample. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and run the DSP function for every window that is extracted. operationId: dspGetFeaturesForSample tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/SampleIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspSampleFeaturesResponse' /api/{projectId}/dsp/{dspId}/features/importance: get: summary: Feature importance description: Retrieve the feature importance for a DSP block (only available for blocks where dimensionalityReduction is not enabled) operationId: getDspFeatureImportance tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspFeatureImportanceResponse' /api/{projectId}/dsp-data/{dspId}/x/{category}: get: summary: Download DSP data description: Download output from a DSP block over all data in the training set, already sliced in windows. In Numpy binary format. operationId: downloadDspData tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/RawDataCategoryParameter' - $ref: '#/components/parameters/DSPDataRawParameter' responses: '200': description: Numpy binary file content: application/octet-stream: schema: type: string format: binary /api/{projectId}/dsp-data/{dspId}/y/{category}: get: summary: Download DSP labels description: Download labels for a DSP block over all data in the training set, already sliced in windows. operationId: downloadDspLabels tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/RawDataCategoryParameter' responses: '200': description: Numpy binary file content: application/octet-stream: schema: type: string format: binary /api/{projectId}/dsp/{dspId}/get-autotuner-results: get: summary: Get results from DSP autotuner description: Get a set of parameters, found as a result of running the DSP autotuner. operationId: getAutotunerResults tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspAutotunerResults' /api/{projectId}/dsp-data/{dspId}/artifact/{key}: get: summary: Download a DSP artifact description: Download an artifact from a DSP block for debugging. This is an internal API. x-internal-api: true operationId: downloadDspArtifact tags: - DSP x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' - $ref: '#/components/parameters/DspArtifactKeyParameter' responses: '200': description: Artifact binary file content: application/octet-stream: schema: type: string format: binary /api/{projectId}/dsp/{dspId}/profile: post: summary: Profile custom DSP block description: Returns performance characteristics for a custom DSP block (needs `hasTfliteImplementation`). Updates are streamed over the websocket API (or can be retrieved through the /stdout endpoint). Use getProfileTfliteJobResult to get the results when the job is completed. tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' operationId: startProfileCustomDspBlock requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DspRunRequestWithoutFeaturesReadOnly' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/dsp/{dspId}/performance: get: summary: Get DSP block performance for all latency devices description: Get estimated performance (latency and RAM) for the DSP block, for all supported project latency devices. operationId: getPerformanceAllVariants tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspPerformanceAllVariantsResponse' /api/{projectId}/dsp/{dspId}/run: post: summary: Get processed sample (from features array) description: Takes in a features array and runs it through the DSP block. This data should have the same frequency as set in the input block in your impulse. operationId: runDspOnFeaturesArray tags: - DSP parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DspIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DspRunRequestWithFeatures' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DspRunResponse' components: parameters: SliceStartParameter: name: sliceStart in: query required: true description: Begin index of the slice schema: type: integer DSPDataRawParameter: name: raw in: query required: false description: Whether to download raw data or processed data. Processed data is the default. schema: type: boolean ProjectIdParameter: name: projectId in: path required: true description: Project ID schema: type: integer SampleIdParameter: name: sampleId in: path required: true description: Sample ID schema: type: integer OptionalSliceEndDefaultToWindowLengthParameter: name: sliceEnd in: query required: false description: End index of the slice. If not given, the sample will be sliced to the same length as the impulse input block window length. schema: type: integer FeatureAx2Parameter: name: featureAx2 in: query required: true description: Feature axis 2 schema: type: integer LimitPayloadValues: name: limitPayloadValues in: query required: false description: Limit the number of payload values in the response schema: type: integer ExcludeIncludedSamplesParameter: name: excludeIncludedSamples in: query required: false description: Whether to exclude 'includedSamples' in the response (as these can slow down requests significantly). schema: type: boolean DspIdParameter: name: dspId in: path required: true description: DSP Block ID, use the impulse functions to retrieve the ID schema: type: integer RawDataCategoryParameter: name: category in: path required: true description: Which of the three acquisition categories to download data from schema: type: string enum: - training - testing - anomaly FeatureAx1Parameter: name: featureAx1 in: query required: true description: Feature axis 1 schema: type: integer DspArtifactKeyParameter: name: key in: path required: true description: DSP artifact file key schema: type: string FeatureAx3Parameter: name: featureAx3 in: query required: true description: Feature axis 3 schema: type: integer schemas: StartJobResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - id properties: id: type: integer description: Job identifier. Status updates will include this identifier. example: 12873488112 DSPConfigRequest: type: object required: - config properties: config: type: object additionalProperties: type: string DspRunRequestWithFeatures: type: object required: - features - params - drawGraphs - requestPerformance properties: features: type: array description: Array of features. If you have multiple axes the data should be interleaved (e.g. [ax0_val0, ax1_val0, ax2_val0, ax0_val1, ax1_val1, ax2_val1]). items: type: integer params: type: object description: DSP parameters with values example: scale-axes: '10' additionalProperties: type: string nullable: true drawGraphs: type: boolean description: Whether to generate graphs (will take longer) requestPerformance: type: boolean description: Whether to request performance info (will take longer unless cached) DspFeatureImportanceResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - hasFeatureImportance - labels properties: hasFeatureImportance: type: boolean labels: type: object additionalProperties: type: object required: - features properties: features: type: array items: type: object required: - axis - importance properties: axis: type: string importance: type: number DspRunRequestWithoutFeatures: type: object required: - params - store properties: params: type: object description: DSP parameters with values example: scale-axes: '10' additionalProperties: type: string nullable: true store: type: boolean description: Whether to store the DSP parameters as the new default parameters. DSPConfig: type: object required: - dsp properties: dsp: $ref: '#/components/schemas/DSPInfo' config: type: array items: $ref: '#/components/schemas/DSPGroup' configError: type: string GetSampleResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - $ref: '#/components/schemas/RawSampleData' DSPMetadata: type: object required: - created - dspConfig - labels - featureCount - windowCount - includedSamples - windowSizeMs - windowIncreaseMs - padZeros - frequency - outputConfig properties: created: type: string format: date-time description: Date when the features were created dspConfig: type: object additionalProperties: type: string labels: type: array description: Labels in the dataset when generator ran items: type: string featureLabels: type: array description: Names of the generated features. Only set if axes have explicit labels. items: type: string windowCount: type: integer featureCount: type: integer description: Number of features for this DSP block includedSamples: type: array description: The included samples in this DSP block. Note that these are sorted in the same way as the `npy` files are laid out. So with the `windowCount` parameter you can exactly search back to see which file contributed to which windows there. items: type: object required: - id - windowCount properties: id: type: integer windowCount: type: integer windowSizeMs: type: integer description: Length of the sliding window when generating features. windowIncreaseMs: type: integer description: Increase of the sliding window when generating features. padZeros: type: boolean description: Whether data was zero-padded when generating features. frequency: type: number description: Frequency of the original data in Hz. outputConfig: type: object description: Information about the output of the DSP block required: - type - shape properties: type: type: string description: Output type of the DSP block enum: - image - spectrogram - flat shape: type: object description: The shape of the block output required: - width properties: width: description: Available on all types. Denotes the width of an 'image' or 'spectrogram', or the number of features in a 'flat' block. type: integer height: description: Only available for type 'image' and 'spectrogram' type: integer channels: description: Only available for type 'image' type: integer frames: description: Number of frames, only available for type 'image' type: integer fftUsed: type: array items: type: integer resamplingAlgorithmVersion: type: number description: The version number of the resampling algorithm used (for resampled time series data only) DspPerformanceAllVariantsResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object properties: performance: type: array description: List of performance estimates for each supported MCU. items: type: object required: - mcu - latency - ram properties: mcu: type: string latency: type: integer description: Latency estimate, in ms ram: type: integer description: RAM estimate, in bytes Sensor: type: object required: - name - units properties: name: type: string description: Name of the axis example: accX units: type: string description: Type of data on this axis. Needs to comply to SenML units (see https://www.iana.org/assignments/senml/senml.xhtml). DspRunResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - features - graphs properties: features: type: array description: Array of processed features. Laid out according to the names in 'labels' items: type: number graphs: type: array description: Graphs to plot to give an insight in how the DSP process ran items: $ref: '#/components/schemas/DspRunGraph' labels: type: array description: Labels of the feature axes items: type: string state_string: type: string description: String representation of the DSP state returned performance: $ref: '#/components/schemas/DspPerformance' DspRunResponseWithSample: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - features - graphs - sample - canProfilePerformance properties: features: type: array description: Array of processed features. Laid out according to the names in 'labels' items: type: number graphs: type: array description: Graphs to plot to give an insight in how the DSP process ran items: $ref: '#/components/schemas/DspRunGraph' labels: type: array description: Labels of the feature axes items: type: string state_string: type: string description: String representation of the DSP state returned labelAtEndOfWindow: description: Label for the window (only present for time-series data) type: string sample: $ref: '#/components/schemas/RawSampleData' performance: $ref: '#/components/schemas/DspPerformance' canProfilePerformance: type: boolean BoundingBox: type: object description: This has the _absolute values_ for x/y/w/h (so 0..x (where x is the w/h of the image)) required: - label - x - y - width - height properties: label: type: string x: type: integer y: type: integer width: type: integer height: type: integer RawSampleData: type: object required: - sample - payload - totalPayloadLength properties: sample: $ref: '#/components/schemas/Sample' payload: $ref: '#/components/schemas/RawSamplePayload' totalPayloadLength: type: integer description: Total number of payload values DSPGroup: type: object required: - group - items properties: group: type: string example: Scaling items: type: array items: $ref: '#/components/schemas/DSPGroupItem' DspTrainedFeaturesResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - totalSampleCount - data - skipFirstFeatures properties: totalSampleCount: type: integer description: Total number of windows in the data set data: type: array items: type: object required: - X - y - yLabel properties: X: type: object description: Data by feature index for this window example: '`{ 0: 9.81, 11: 0.32, 22: 0.79 }`' additionalProperties: type: number y: type: integer description: Training label index yLabel: type: string description: Training label string sample: type: object required: - id - name - startMs - endMs properties: id: type: number name: type: string startMs: type: number endMs: type: number skipFirstFeatures: type: integer description: When showing the processed features, skip the first X features. This is used in dimensionality reduction where artificial features are introduced in the response (on the first few positions). DspPerformance: type: object required: - latency - ram properties: latency: type: integer ram: type: integer customDspString: type: string description: If the project latencyDevice has custom DSP hardware, this value contains a device specific latency metric (eg. cycles) DspFeatureLabelsResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - labels properties: labels: type: array example: '`[ "accX RMS", "accX Peak 1 Freq" ]`' items: type: string DSPMetadataResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - $ref: '#/components/schemas/DSPMetadata' DspRunGraph: type: object required: - name - type properties: name: type: string description: Name of the graph example: Frequency domain image: type: string description: Base64 encoded image, only present if type is 'image' imageMimeType: type: string description: Mime type of the Base64 encoded image, only present if type is 'image' X: type: object description: Values on the x-axis per plot. Key is the name of the raw feature. Present if type is 'logarithmic' or 'linear'. example: accX: - 3 - 5 - 7 accY: - 2 - 1 - 5 additionalProperties: type: array items: type: number y: type: array description: Values of the y-axis. Present if type is 'logarithmic' or 'linear'. example: - 0 - 0.5 - 1 items: type: number suggestedXMin: type: number description: Suggested minimum value of x-axis suggestedXMax: type: number description: Suggested maxium value of x-axis suggestedYMin: type: number description: Suggested minimum value of y-axis suggestedYMax: type: number description: Suggested maximum value of y-axis type: type: string description: Type of graph (either `logarithmic`, `linear` or `image`) lineWidth: type: number description: Width of the graph line (if type is `logarithmic` or `linear`). Default 3. smoothing: type: boolean description: Whether to apply smoothing to the graph. axisLabels: type: object description: Labels for the graph x and y axes. required: - X - y properties: X: type: string y: type: string highlights: type: object description: Indices of points to highlight, per axis. additionalProperties: type: array items: type: number DSPInfo: type: object required: - id - name - windowLength - type - classes - features - expectedWindowCount - inputAxes - canCalculateFeatureImportance - calculateFeatureImportance properties: id: type: integer example: 1 name: type: string example: Spectral features windowLength: type: integer example: 3000 type: type: string example: spectral-analysis classes: type: array items: type: string features: type: object required: - generated properties: generated: type: boolean description: Whether this block has generated features count: type: integer description: Number of generated features labels: type: array description: Names of the features items: type: string classes: type: array description: Classes that the features were generated on items: type: string expectedWindowCount: type: integer description: Expected number of windows that would be generated inputAxes: type: array description: Axes that this block depends on. items: type: string performance: $ref: '#/components/schemas/DspPerformance' canCalculateFeatureImportance: type: boolean calculateFeatureImportance: type: boolean hasAutoTune: description: Whether this type of DSP block supports autotuning. type: boolean minimumVersionForAutotune: description: For DSP blocks that support autotuning, this value specifies the minimum block implementation version for which autotuning is supported. type: number hasAutotunerResults: description: Whether autotune results exist for this DSP block. type: boolean usesState: description: Whether this DSP block uses state. type: boolean DspRunRequestWithoutFeaturesReadOnly: type: object required: - params properties: params: type: object description: DSP parameters with values example: scale-axes: '10' additionalProperties: type: string nullable: true DSPGroupItem: type: object required: - name - type - param - defaultValue - readonly - shouldShow - required properties: name: type: string example: Scale axes value: type: string defaultValue: type: string type: type: string example: text help: type: string example: Divide axes by this number param: type: string example: scale-axes selectOptions: type: array items: type: object properties: value: type: string selected: type: boolean optionLabel: type: string readonly: type: boolean shouldShow: type: boolean showIf: type: object required: - parameter - operator - value properties: parameter: type: string operator: type: string enum: - eq - neq value: type: string invalidText: type: string section: type: string description: Interface section to render parameter in. enum: - advanced - augmentation - modelProfiling multiline: type: boolean description: Only valid for type "string". Will render a multiline text area. required: type: boolean hint: type: string description: If set, shows a hint below the input. placeholder: type: string description: Sets the placeholder text on the input element (for types "string", "int", "float" and "secret") DSPConfigResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - $ref: '#/components/schemas/DSPConfig' RawSamplePayload: type: object description: Sensor readings and metadata required: - device_type - sensors - values properties: device_name: type: string description: Unique identifier for this device. **Only** set this when the device has a globally unique identifier (e.g. MAC address). example: ac:87:a3:0a:2d:1b device_type: type: string description: Device type, for example the exact model of the device. Should be the same for all similar devices. example: DISCO-L475VG-IOT01A sensors: type: array description: Array with sensor axes items: $ref: '#/components/schemas/Sensor' values: type: array description: 'Array of sensor values. One array item per interval, and as many items in this array as there are sensor axes. This type is returned if there are multiple axes. ' items: type: array items: type: number cropStart: type: integer description: New start index of the cropped sample example: 0 cropEnd: type: integer description: New end index of the cropped sample example: 128 StructuredLabel: type: object description: 'A structured label contains a label, and the range for which this label is valid. `endIndex` is inclusive. E.g. `{ startIndex: 10, endIndex: 13, label: ''running'' }` means that the values at index 10, 11, 12, 13 are labeled ''running''. To get time codes you can multiple by the sample''s `intervalMs` property.' required: - startIndex - endIndex - label properties: startIndex: type: integer description: Start index of the label (e.g. 0) endIndex: type: integer description: 'End index of the label (e.g. 3). This value is inclusive, so { startIndex: 0, endIndex: 3 } covers 0, 1, 2, 3.' label: type: string description: The label for this section. Sample: type: object required: - id - filename - signatureValidate - created - lastModified - category - coldstorageFilename - label - intervalMs - frequency - originalIntervalMs - originalFrequency - deviceType - sensors - valuesCount - added - boundingBoxes - boundingBoxesType - chartType - isDisabled - isProcessing - processingError - isCropped - projectId - sha256Hash properties: id: type: integer example: 2 filename: type: string example: idle01.d8Ae signatureValidate: type: boolean description: Whether signature validation passed example: true signatureMethod: type: string example: HS256 signatureKey: type: string description: Either the shared key or the public key that was used to validate the sample created: type: string format: date-time description: Timestamp when the sample was created on device, or if no accurate time was known on device, the time that the file was processed by the ingestion service. lastModified: type: string format: date-time description: Timestamp when the sample was last modified. category: type: string example: training coldstorageFilename: type: string label: type: string example: healthy-machine intervalMs: type: number description: Interval between two windows (1000 / frequency). If the data was resampled, then this lists the resampled interval. example: 16 frequency: type: number description: Frequency of the sample. If the data was resampled, then this lists the resampled frequency. example: 62.5 originalIntervalMs: type: number description: Interval between two windows (1000 / frequency) in the source data (before resampling). example: 16 originalFrequency: type: number description: Frequency of the sample in the source data (before resampling). example: 62.5 deviceName: type: string deviceType: type: string sensors: type: array items: $ref: '#/components/schemas/Sensor' valuesCount: type: integer description: Number of readings in this file totalLengthMs: type: number description: Total length (in ms.) of this file added: type: string format: date-time description: Timestamp when the sample was added to the current acquisition bucket. boundingBoxes: type: array items: $ref: '#/components/schemas/BoundingBox' boundingBoxesType: type: string enum: - object_detection - constrained_object_detection chartType: type: string enum: - chart - image - video - table thumbnailVideo: type: string thumbnailVideoFull: type: string isDisabled: type: boolean description: True if the current sample is excluded from use isProcessing: type: boolean description: True if the current sample is still processing (e.g. for video) processingJobId: type: integer description: Set when sample is processing and a job has picked up the request processingError: type: boolean description: Set when processing this sample failed processingErrorString: type: string description: Error (only set when processing this sample failed) isCropped: type: boolean description: Whether the sample is cropped from another sample (and has crop start / end info) metadata: type: object description: Sample free form associated metadata additionalProperties: type: string projectId: type: integer description: Unique identifier of the project this sample belongs to projectOwnerName: type: string description: Name of the owner of the project this sample belongs to projectName: type: string description: Name of the project this sample belongs to projectLabelingMethod: type: string description: What labeling flow the project this sample belongs to uses enum: - single_label - object_detection sha256Hash: type: string description: Data sample SHA 256 hash (including CBOR envelope if applicable) structuredLabels: type: array items: $ref: '#/components/schemas/StructuredLabel' structuredLabelsList: type: array items: type: string createdBySyntheticDataJobId: type: integer description: If this sample was created by a synthetic data job, it's referenced here. imageDimensions: type: object required: - width - height properties: width: type: integer height: type: integer DspAutotunerResults: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - results properties: results: type: array items: type: object required: - key - value properties: key: type: string value: type: string DspSampleFeaturesResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - totalSampleCount - data - skipFirstFeatures properties: totalSampleCount: type: integer description: Total number of windows in the data set data: type: array items: type: object required: - X - y - yLabel properties: X: type: array description: Feature data for this window example: '`{ 9.81, 0.32, 0.79 }`' items: type: number y: type: integer description: Training label index yLabel: type: string description: Training label string sample: type: object required: - id - name - startMs - endMs properties: id: type: integer name: type: string startMs: type: number endMs: type: number skipFirstFeatures: type: integer description: When showing the processed features, skip the first X features. This is used in dimensionality reduction where artificial features are introduced in the response (on the first few positions). GenericApiResponse: type: object required: - success properties: success: type: boolean description: Whether the operation succeeded error: type: string description: Optional error description (set if 'success' was false) securitySchemes: ApiKeyAuthentication: type: apiKey in: header name: x-api-key JWTAuthentication: type: apiKey in: cookie name: jwt JWTHttpHeaderAuthentication: type: apiKey in: header name: x-jwt-token