openapi: 3.0.0 info: title: Edge Impulse Jobs API version: 1.0.0 servers: - url: https://studio.edgeimpulse.com/v1 security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] tags: - name: Jobs paths: /api/{projectId}/jobs/post-processing: post: summary: Post-processing description: Begins post processing job operationId: startPostProcessingJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StartPostProcessingRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/data-explorer-features: post: summary: Generate data explorer features description: Generate features for the data explorer operationId: generateDataExplorerFeatures tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/data-quality-metrics: post: summary: Calculate data quality metrics. Only available for EI staff. description: Calculate data quality metrics for the dataset operationId: calculateDataQualityMetrics tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CalculateDataQualityMetricsRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/retry-migrate-impulse: post: summary: Retry impulse migration description: If an impulse migration previously failed, use this function to retry the job. operationId: retryImpulseMigration tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/synthetic-data: post: summary: Create synthetic data description: Generate new synthetic data operationId: createSyntheticDataJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateSyntheticDataRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/ai-actions/{actionId}/preview: post: summary: Create preview AI Actions job description: Do a dry-run of an AI Actions job over a subset of data. This will instruct the block to propose changes to data items (via "setSampleProposedChanges") rather than apply the changes directly. operationId: createPreviewAIActionsJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/ActionIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePreviewAIActionsJobRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/ai-actions/{actionId}: post: summary: Create AI Actions job description: Run an AI Actions job over a subset of data. This will instruct the block to apply the changes directly to your dataset. To preview, use "createPreviewAIActionsJob". To set the config use `updateAIAction`. operationId: createAIActionsJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/ActionIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/optimize: post: summary: Optimize model description: Evaluates optimal model architecture operationId: optimizeJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/TunerContinuationJobIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/set-tuner-primary-job: post: summary: Sets EON tuner primary model description: Sets EON tuner primary model operationId: setTunerPrimaryJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/TrialIdQueryParameter' requestBody: content: application/json: schema: $ref: '#/components/schemas/SetTunerPrimaryJobRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs: get: summary: List active jobs description: Get all active jobs for this project operationId: listActiveJobs tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OnlyRootJobsParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListJobsResponse' /api/{projectId}/jobs/history: get: summary: List finished jobs description: Get all finished jobs for this project operationId: listFinishedJobs tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalStartDateParameter' - $ref: '#/components/parameters/OptionalEndDateParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/OffsetResultsParameter' - $ref: '#/components/parameters/OnlyRootJobsParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListJobsResponse' /api/{projectId}/jobs/all: get: summary: List all jobs description: Get all jobs for this project operationId: listAllJobs tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalStartDateParameter' - $ref: '#/components/parameters/OptionalEndDateParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/OffsetResultsParameter' - $ref: '#/components/parameters/OnlyRootJobsParameter' - $ref: '#/components/parameters/OptionalJobsKeyParameter' - $ref: '#/components/parameters/OptionalJobsCategoryParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListJobsResponse' /api/{projectId}/jobs/summary: get: summary: Job summary description: Get a summary of jobs, grouped by key. Used to report to users how much compute they've used. operationId: getJobsSummary tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/RequiredStartDateParameter' - $ref: '#/components/parameters/RequiredEndDateParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/JobSummaryResponse' /api/{projectId}/jobs/impulse-migration/status: get: summary: Get impulse migration status description: Get the status for the multi-impulse migration job in this project. This is a separate route so public projects can access it. If no multi-impulse migration jobs are present, an error will be thrown. operationId: getImpulseMigrationJobStatus tags: - Jobs x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetJobResponse' /api/{projectId}/jobs/impulse-migration/stdout: get: summary: Get impulse migration logs description: Get the logs for the multi-impulse migration job in this project. This is a separate route so public projects can access it. If no multi-impulse migration jobs are present, an error will be thrown. operationId: getImpulseMigrationJobsLogs tags: - Jobs x-middleware: - AllowsReadOnly parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/LogLevelParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LogStdoutResponse' /api/{projectId}/jobs/{jobId}/update: post: summary: Update job description: Update a job. operationId: updateJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/JobIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateJobRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenericApiResponse' /api/{projectId}/jobs/{jobId}/status: get: summary: Get job status description: Get the status for a job. operationId: getJobStatus tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/JobIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetJobResponse' /api/{projectId}/jobs/{jobId}/stdout: get: summary: Get logs description: Get the logs for a job. operationId: getJobsLogs tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/JobIdParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/LogLevelParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LogStdoutResponse' /api/{projectId}/jobs/{jobId}/stdout/download: get: summary: Download logs description: Download the logs for a job (as a text file). operationId: downloadJobsLogs tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/JobIdParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/LogLevelParameter' responses: '200': description: OK content: text/plain: schema: type: string /api/{projectId}/jobs/{jobId}/cancel: post: summary: Cancel job description: Cancel a running job. operationId: cancelJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/JobIdParameter' - $ref: '#/components/parameters/ForceCancelParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenericApiResponse' /api/{projectId}/jobs/generate-features: post: summary: Generate features description: Take the raw training set and generate features from them. Updates are streamed over the websocket API. operationId: generateFeaturesJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerateFeaturesRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/autotune-dsp: post: summary: Autotune DSP parameters description: Autotune DSP block parameters. Updates are streamed over the websocket API. operationId: autotuneDspJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AutotuneDspRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/train/keras/{learnId}: post: summary: Train model (Keras) description: Take the output from a DSP block and train a neural network using Keras. Updates are streamed over the websocket API. operationId: trainKerasJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/LearnIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SetKerasParameterRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/train/anomaly/{learnId}: post: summary: Train model (Anomaly) description: Take the output from a DSP block and train an anomaly detection model using K-means or GMM. Updates are streamed over the websocket API. operationId: trainAnomalyJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/LearnIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StartTrainingRequestAnomaly' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/train/keras/{learnId}/export: post: summary: Export Keras block description: Export the training pipeline of a Keras block. Updates are streamed over the websocket API. operationId: exportKerasBlock tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/LearnIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/train/keras/{learnId}/data: post: summary: Export Keras block data description: Export the data of a Keras block (already split in train/validate data). Updates are streamed over the websocket API. operationId: exportKerasBlockData tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/LearnIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExportKerasBlockDataRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/build-ondevice-model: post: summary: Build on-device model description: Generate code to run the impulse on an embedded device. When this step is complete use `downloadBuild` to download the artefacts. Updates are streamed over the websocket API. operationId: buildOnDeviceModelJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/DeploymentTypeParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BuildOnDeviceModelRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/build-ondevice-model/organization: post: summary: Build organizational on-device model description: Generate code to run the impulse on an embedded device using an organizational deployment block. When this step is complete use `downloadBuild` to download the artefacts. Updates are streamed over the websocket API. operationId: buildOrganizationOnDeviceModelJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BuildOrganizationOnDeviceModelRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/export/original: post: summary: Export original data description: Export all the data in the project as it was uploaded to Edge Impulse. Updates are streamed over the websocket API. operationId: startOriginalExportJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExportOriginalDataRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/export/wav: post: summary: Export data as WAV description: Export all the data in the project in WAV format. Updates are streamed over the websocket API. operationId: startWavExportJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExportWavDataRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/retrain: post: summary: Retrain description: Retrains the current impulse with the last known parameters. Updates are streamed over the websocket API. operationId: startRetrainJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/classify: post: summary: Classify description: Classifies all items in the testing dataset against the current impulse. Updates are streamed over the websocket API. operationId: startClassifyJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StartClassifyJobRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/performance-calibration: post: summary: Performance Calibration description: Simulates real world usage and returns performance metrics. operationId: startPerformanceCalibrationJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StartPerformanceCalibrationRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/evaluate: post: summary: Evaluate description: Evaluates every variant of the current impulse. Updates are streamed over the websocket API. operationId: startEvaluateJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/version: post: summary: Version project description: Create a new version of the project. This stores all data and configuration offsite. If you have access to the enterprise version of Edge Impulse you can store your data in your own storage buckets (only through JWT token authentication). operationId: startVersionJob tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectVersionRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/restore: post: summary: Restore project to version description: Restore a project to a certain version. This can only applied to a project without data, and will overwrite your impulse and all settings. tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' operationId: startRestoreJob requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RestoreProjectRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenericApiResponse' /api/{projectId}/jobs/restore/from-public: post: summary: Restore project to public version description: Restore a project to a certain public version. This can only applied to a project without data, and will overwrite your impulse and all settings. tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' operationId: startRestoreJobFromPublic requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RestoreProjectFromPublicRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenericApiResponse' /api/{projectId}/jobs/versions/{versionId}/make-public: post: summary: Make a version public description: Make a version of a project public. This makes all data and state available (read-only) on a public URL, and allows users to clone this project. tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/VersionIdParameter' operationId: startMakeVersionPublicJob responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/keywords-noise: post: summary: Add keywords and noise description: Add keywords and noise data to a project (for getting started guide) tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' operationId: startKeywordsNoiseJob responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/profile-tflite: post: summary: Profile TFLite model description: Takes in a TFLite model and returns the latency, RAM and ROM used for this model. 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: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' operationId: startProfileTfliteJob requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProfileTfLiteRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/deploy-pretrained-model: post: summary: Deploy pretrained model description: Takes in a TFLite file and builds the model and SDK. 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: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/OptionalImpulseIdParameter' operationId: startDeployPretrainedModelJob requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeployPretrainedModelRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StartJobResponse' /api/{projectId}/jobs/profile-tflite/{jobId}/result: get: summary: Get TFLite profile result (GET) description: Get the results from a job started from startProfileTfliteJob (via a GET request). tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/JobIdParameter' operationId: getProfileTfliteJobResult responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProfileTfLiteResponse' post: summary: Get TFLite profile result (POST) description: Get the results from a job started from startProfileTfliteJob (via a POST request). tags: - Jobs parameters: - $ref: '#/components/parameters/ProjectIdParameter' - $ref: '#/components/parameters/JobIdParameter' operationId: getProfileTfliteJobResultViaPostRequest responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProfileTfLiteResponse' components: schemas: LogStdoutResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - stdout - totalCount properties: stdout: type: array items: type: object required: - created - data properties: created: type: string format: date-time data: type: string logLevel: type: string enum: - error - warn - info - debug totalCount: type: integer description: Total number of logs (only the last 1000 lines are returned) CalculateDataQualityMetricsRequest: type: object properties: representation: description: Type of representation to use for calculating metrics. type: string enum: - keywords - images - current-impulse - current-impulse-embeddings ProjectVersionRequest: type: object required: - description - makePublic properties: bucketId: type: integer description: Data bucket ID. Keep empty to store in Edge Impulse hosted storage. description: type: string makePublic: type: boolean description: Whether to make this version available on a public URL. runModelTestingWhileVersioning: type: boolean description: Whether to run model testing when creating this version (if this value is omitted, it will use the current state of 'runModelTestingWhileVersioning' that is returned in ListVersionsResponse). KerasModelVariantEnum: type: string enum: - int8 - float32 - akida BuildOnDeviceModelRequest: type: object required: - engine properties: engine: $ref: '#/components/schemas/DeploymentTargetEngine' modelType: $ref: '#/components/schemas/KerasModelTypeEnum' CreateSyntheticDataRequest: type: object required: - transformationBlockId - parameters properties: transformationBlockId: type: integer description: The ID of a Synthetic Data transform block ID (public or private) parameters: type: object description: Properties for this synthetic data block additionalProperties: type: string CreatePreviewAIActionsJobRequest: type: object required: - steps - sampleIds - cacheUnchangedSteps properties: steps: type: array items: $ref: '#/components/schemas/AIActionsConfigStep' sampleIds: type: array items: type: integer cacheUnchangedSteps: description: If enabled, will load cached results from the previous preview job for unchanged jobs. Disable this if you're developing your own custom AI Labeling job, and want to always re-run all steps. type: boolean RestoreProjectRequest: type: object required: - projectId - projectApiKey - versionId properties: projectId: type: integer description: Source project ID projectApiKey: type: string description: Source project API key versionId: type: integer description: Source project version ID 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 DeployPretrainedModelInputImage: type: object required: - inputType properties: inputType: type: string enum: - image inputScaling: $ref: '#/components/schemas/ImageInputScaling' ExportOriginalDataRequest: type: object required: - uploaderFriendlyFilenames - retainCrops properties: uploaderFriendlyFilenames: type: boolean description: Whether to rename the exported file names to an uploader friendly format (e.g. label.filename.cbor) retainCrops: type: boolean description: Whether to retain crops and splits. If this is disabled, then the original files are returned (as they were uploaded). ListJobsResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - jobs - totalJobCount properties: jobs: type: array description: Active jobs items: $ref: '#/components/schemas/Job' totalJobCount: type: integer ExportKerasBlockDataRequest: type: object properties: overrideImageInputScaling: $ref: '#/components/schemas/ImageInputScaling' GetJobResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - job properties: job: $ref: '#/components/schemas/Job' StartClassifyJobRequest: type: object properties: modelVariants: type: array description: Set of model variants to run the classify job against. items: $ref: '#/components/schemas/KerasModelVariantEnum' UpdateJobRequest: type: object properties: jobNotificationUids: type: array description: The IDs of users who should be notified when a job is finished. items: type: integer BlockParameters: description: Training parameters specific to the type of the learn block. Parameters may be adjusted depending on the model defined in the visual layers. Used for our built-in blocks. oneOf: - $ref: '#/components/schemas/BlockParamsVisualAnomalyPatchcore' - $ref: '#/components/schemas/BlockParamsVisualAnomalyGmm' ExportWavDataRequest: type: object required: - retainCrops properties: retainCrops: type: boolean description: Whether to retain crops and splits. If this is disabled, then the original files are returned (as they were uploaded). AnomalyCapacity: type: string description: Capacity level for visual anomaly detection. Determines which set of default configurations to use. The higher capacity, the higher number of (Gaussian) components, and the more adapted the model becomes to the original distribution enum: - low - medium - high JobSummaryResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - summary properties: summary: type: array items: type: object required: - category - lengthMs properties: category: type: string lengthMs: type: integer description: Length per category in milliseconds DeployPretrainedModelInputOther: type: object required: - inputType properties: inputType: type: string enum: - other DeployPretrainedModelModelClassification: type: object required: - modelType - labels properties: modelType: type: string enum: - classification labels: type: array items: type: string ProfileTfLiteResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - $ref: '#/components/schemas/ProfileModelInfo' StartPerformanceCalibrationRequest: type: object required: - backgroundNoiseLabel properties: backgroundNoiseLabel: type: string description: The label used to signify background noise in the impulse otherNoiseLabels: type: array items: type: string description: Any other labels that should be considered equivalent to background noise uploadKey: type: string description: The key of an uploaded sample. If not present, a synthetic sample will be created. sampleLengthMinutes: type: number description: The length of sample to create (required for synthetic samples) BuildOrganizationOnDeviceModelRequest: type: object required: - engine - deployBlockId properties: engine: $ref: '#/components/schemas/DeploymentTargetEngine' deployBlockId: type: integer modelType: $ref: '#/components/schemas/KerasModelTypeEnum' DeployPretrainedModelRequest: type: object required: - modelFileBase64 - modelFileType - deploymentType - modelInfo properties: modelFileBase64: description: A base64 encoded pretrained model type: string modelFileType: type: string enum: - tflite - onnx - saved_model - lgbm - xgboost - pickle deploymentType: type: string description: The name of the built target. You can find this by listing all deployment targets through `listDeploymentTargetsForProject` (via `GET /v1/api/{projectId}/deployment/targets`) and see the `format` type. engine: $ref: '#/components/schemas/DeploymentTargetEngine' modelInfo: type: object required: - input - model properties: input: discriminator: propertyName: inputType mapping: time-series: '#/components/schemas/DeployPretrainedModelInputTimeSeries' audio: '#/components/schemas/DeployPretrainedModelInputAudio' image: '#/components/schemas/DeployPretrainedModelInputImage' other: '#/components/schemas/DeployPretrainedModelInputOther' oneOf: - $ref: '#/components/schemas/DeployPretrainedModelInputTimeSeries' - $ref: '#/components/schemas/DeployPretrainedModelInputAudio' - $ref: '#/components/schemas/DeployPretrainedModelInputImage' - $ref: '#/components/schemas/DeployPretrainedModelInputOther' model: discriminator: propertyName: modelType mapping: classification: '#/components/schemas/DeployPretrainedModelModelClassification' regression: '#/components/schemas/DeployPretrainedModelModelRegression' object-detection: '#/components/schemas/DeployPretrainedModelModelObjectDetection' oneOf: - $ref: '#/components/schemas/DeployPretrainedModelModelClassification' - $ref: '#/components/schemas/DeployPretrainedModelModelRegression' - $ref: '#/components/schemas/DeployPretrainedModelModelObjectDetection' representativeFeaturesBase64: description: A base64 encoded .npy file containing the features from your validation set (optional for onnx and saved_model) - used to quantize your model. type: string deployModelType: type: string enum: - int8 - float32 useConverter: description: Optional, use a specific converter (only for ONNX models). type: string enum: - onnx-tf - onnx2tf ModelEngineShortEnum: type: string enum: - tflite-eon - tflite-eon-ram-optimized - tflite DeploymentTargetEngine: type: string enum: - tflite - tflite-eon - tflite-eon-ram-optimized - tensorrt - tensaiflow - drp-ai - tidl - akida - syntiant - memryx - neox - ethos-linux - st-aton Job: type: object required: - id - key - created - category - jobNotificationUids properties: id: type: integer description: Job id, use this to refer back to the job. The web socket API also uses this ID. category: type: string key: type: string description: 'External job identifier, this can be used to categorize jobs, and recover job status. E.g. set this to ''keras-192'' for a Keras learning block with ID 192. When a user refreshes the page you can check whether a job is active for this ID and re-attach. ' created: type: string format: date-time description: When the job was created. started: type: string format: date-time description: When the job was started. finished: type: string format: date-time description: When the job was finished. finishedSuccessful: type: boolean description: Whether the job finished successfully. jobNotificationUids: type: array description: The IDs of users who should be notified when a job is finished. items: type: integer additionalInfo: type: string description: Additional metadata associated with this job. computeTime: type: number description: Job duration time in seconds from start to finished, measured by k8s job watcher. createdByUser: type: object required: - id - name - username properties: id: type: integer name: type: string username: type: string photo: type: string categoryCount: type: integer description: Some job categories keep a counter on the job number, e.g. in synthetic data, so we know what the 1st, 2nd etc. job was in the UI. ProfileModelInfoMemoryDetails: type: object required: - ram - rom - arenaSize properties: ram: type: integer description: Estimated amount of RAM required by the model, measured in bytes rom: type: integer description: Estimated amount of ROM required by the model, measured in bytes arenaSize: type: integer description: Estimated arena size required for model inference, measured in bytes StartPostProcessingRequest: type: object required: - variant - dataset - algorithm - evaluation properties: variant: description: Which model variant to use (int8, float32, etc.) $ref: '#/components/schemas/KerasModelVariantEnum' dataset: description: Which dataset to use type: string enum: - training - validation - testing algorithm: description: Which algorithm container to use type: string evaluation: description: Which evaluation container to use type: string population: description: The population size for the genetic algorithm type: integer default: 100 maxGenerations: description: The maximum number of generations for the genetic algorithm type: integer default: 100 designSpaceTolerance: description: The tolerance for the design space type: number default: 0.01 objectiveSpaceTolerance: description: The tolerance for the objective space type: number default: 0.0025 terminationPeriod: description: The number of generations the termination criteria are averaged across type: integer default: 5 ProfileTfLiteRequest: type: object required: - tfliteFileBase64 - device properties: tfliteFileBase64: description: A base64 encoded TFLite file type: string device: description: MCU used for calculating latency, query `latencyDevices` in `listProject` for a list of supported devices (and use the "mcu" property here). type: string KerasVisualLayerType: type: string enum: - dense - conv1d - conv2d - reshape - flatten - dropout - batchNormalization - transfer_mobilenetv2_a35 - transfer_mobilenetv2_a1 - transfer_mobilenetv2_a05 - transfer_mobilenetv2_160_a1 - transfer_mobilenetv2_160_a75 - transfer_mobilenetv2_160_a5 - transfer_mobilenetv2_160_a35 - transfer_mobilenetv1_a25_d100 - transfer_mobilenetv1_a2_d100 - transfer_mobilenetv1_a1_d100 - transfer_kws_mobilenetv1_a1_d100 - transfer_kws_mobilenetv2_a35_d100 - transfer_kws_syntiant_ndp10x - transfer_kws_conv2d_tiny - object_ssd_mobilenet_v2_fpnlite_320x320 - fomo_mobilenet_v2_a01 - fomo_mobilenet_v2_a35 - transfer_organization - transfer_akidanet_imagenet_160_a100 - transfer_akidanet_imagenet_160_a50 - transfer_akidanet_imagenet_160_a25 - transfer_akidanet_imagenet_224_a100 - transfer_akidanet_imagenet_224_a50 - transfer_akidanet_imagenet_224_a25 - fomo_akidanet_a50 - fomo_ad_gmm - fomo_ad_patchcore RestoreProjectFromPublicRequest: type: object required: - projectId properties: projectId: type: integer description: Source project ID ObjectDetectionLastLayer: type: string enum: - mobilenet-ssd - fomo - yolov2-akida - yolov5 - yolov5v5-drpai - yolox - yolov7 - tao-retinanet - tao-ssd - tao-yolov3 - tao-yolov4 DeployPretrainedModelModelRegression: type: object required: - modelType properties: modelType: type: string enum: - regression ProfileModelInfo: type: object required: - device - tfliteFileSizeBytes - isSupportedOnMcu properties: device: type: string tfliteFileSizeBytes: type: integer isSupportedOnMcu: type: boolean memory: type: object properties: tflite: $ref: '#/components/schemas/ProfileModelInfoMemoryDetails' eon: $ref: '#/components/schemas/ProfileModelInfoMemoryDetails' eonRamOptimized: $ref: '#/components/schemas/ProfileModelInfoMemoryDetails' timePerInferenceMs: type: integer mcuSupportError: type: string KerasVisualLayer: type: object required: - type properties: type: $ref: '#/components/schemas/KerasVisualLayerType' neurons: type: integer description: Number of neurons or filters in this layer (only for dense, conv1d, conv2d) or in the final conv2d layer (only for transfer layers) kernelSize: type: integer description: Kernel size for the convolutional layers (only for conv1d, conv2d) dropoutRate: type: number description: Fraction of input units to drop (only for dropout) or in the final layer dropout (only for transfer layers) columns: type: integer description: Number of columns for the reshape operation (only for reshape) stack: type: integer description: Number of convolutional layers before the pooling layer (only for conv1d, conv2d) enabled: type: boolean organizationModelId: type: integer description: Custom transfer learning model ID (when type is set to transfer_organization) DeployPretrainedModelInputAudio: type: object required: - inputType - frequencyHz properties: inputType: type: string enum: - audio frequencyHz: type: number ImageInputScaling: description: Normalization that is applied to images. If this is not set then 0..1 is used. "0..1" gives you non-normalized pixels between 0 and 1. "-1..1" gives you non-normalized pixels between -1 and 1. "0..255" gives you non-normalized pixels between 0 and 255. "-128..127" gives you non-normalized pixels between -128 and 127. "torch" first scales pixels between 0 and 1, then applies normalization using the ImageNet dataset (same as `torchvision.transforms.Normalize()`). "bgr-subtract-imagenet-mean" scales to 0..255, reorders pixels to BGR, and subtracts the ImageNet mean from each channel. type: string enum: - 0..1 - -1..1 - -128..127 - 0..255 - torch - bgr-subtract-imagenet-mean BlockParamsVisualAnomalyGmm: type: object properties: backbone: type: string description: The backbone to use for feature extraction AutotuneDspRequest: type: object required: - dspId properties: dspId: type: integer description: DSP block ID to autotune parameters of StartTrainingRequestAnomaly: type: object required: - axes - minimumConfidenceRating properties: axes: type: array description: Which axes (indexes from DSP script) to include in the training set example: - 0 - 11 - 22 items: type: integer clusterCount: type: integer description: Number of clusters for K-means, or number of components for GMM example: 32 minimumConfidenceRating: type: number description: Minimum confidence rating required before tagging as anomaly example: 0.3 skipEmbeddingsAndMemory: type: boolean description: If set, skips creating embeddings and measuring memory (used in tests) AIActionsConfigStep: type: object required: - transformationBlockId - parameters properties: transformationBlockId: description: The selected transformation block ID. type: integer parameters: description: Parameters for the transformation block. These map back to the parameters in OrganizationTransformationBlock 'parameters' property. type: object additionalProperties: type: string BlockParamsVisualAnomalyPatchcore: type: object properties: backbone: type: string description: The backbone to use for feature extraction numLayers: type: integer description: The number of layers in the feature extractor (1-3) poolSize: type: integer description: The pool size for the feature extractor samplingRatio: type: number description: The sampling ratio for the coreset, used for anomaly scoring numNearestNeighbors: type: integer description: The number of nearest neighbors to consider, used for anomaly scoring SetKerasParameterRequest: type: object description: Only fields defined in this object are set properties: mode: type: string description: Whether to use visual or expert mode. enum: - expert - visual minimumConfidenceRating: type: number description: Minimum confidence score, if the neural network scores a sample below this threshold it will be flagged as uncertain. selectedModelType: description: The model type to select, as described in the model metadata call. $ref: '#/components/schemas/KerasModelTypeEnum' script: type: string description: Raw Keras script (only used in expert mode) visualLayers: type: array description: The visual layers for the neural network (only in visual mode). items: $ref: '#/components/schemas/KerasVisualLayer' trainingCycles: type: integer description: Number of training cycles (only in visual mode). learningRate: type: number description: Learning rate (between 0 and 1) (only in visual mode). batchSize: type: number description: Batch size used during training (only in visual mode). trainTestSplit: type: number description: Train/test split (between 0 and 1) autoClassWeights: type: boolean description: Whether to automatically balance class weights, use this for skewed datasets. useLearnedOptimizer: type: boolean description: Use learned optimizer and ignore learning rate. augmentationPolicyImage: $ref: '#/components/schemas/AugmentationPolicyImageEnum' augmentationPolicySpectrogram: $ref: '#/components/schemas/AugmentationPolicySpectrogram' profileInt8: type: boolean description: Whether to profile the i8 model (might take a very long time) skipEmbeddingsAndMemory: type: boolean description: If set, skips creating embeddings and measuring memory (used in tests) akidaEdgeLearningConfig: $ref: '#/components/schemas/AkidaEdgeLearningConfig' customValidationMetadataKey: type: string description: If the 'custom validation split' experiment is enabled, this metadata key is used to prevent group data leakage between train and validation datasets. showAdvancedTrainingSettings: type: boolean description: Whether the 'Advanced training settings' UI element should be expanded. showAugmentationTrainingSettings: type: boolean description: Whether the 'Augmentation training settings' UI element should be expanded. customParameters: type: object description: Training parameters, this list depends on the list of parameters that the model exposes. additionalProperties: type: string nullable: true anomalyCapacity: description: Capacity level for visual anomaly detection. Determines which set of default configurations to use. The higher capacity, the higher number of (Gaussian) components, and the more adapted the model becomes to the original distribution $ref: '#/components/schemas/AnomalyCapacity' lastShownModelVariant: $ref: '#/components/schemas/KerasModelVariantEnum' description: Last shown variant on the Keras screen. Used to keep the same view after refreshing. lastShownModelEngine: $ref: '#/components/schemas/ModelEngineShortEnum' description: Last shown model engine on the Keras screen. Used to keep the same view after refreshing. blockParameters: $ref: '#/components/schemas/BlockParameters' description: Training parameters specific to the type of the learn block. Parameters may be adjusted depending on the model defined in the visual layers. Used for our built-in blocks. AkidaEdgeLearningConfig: type: object required: - enabled properties: enabled: type: boolean description: True if Akida Edge Learning model creation is enabled. Other properties will be ignored if this is false. additionalClasses: type: number description: Number of additional classes that will be added to the Edge Learning model. neuronsPerClass: type: number description: Number of neurons in each class on the last layer in the Edge Learning model. GenerateFeaturesRequest: type: object required: - dspId properties: dspId: type: integer description: DSP block ID to generate features for calculateFeatureImportance: type: boolean description: Whether to generate feature importance (only when available) skipFeatureExplorer: type: boolean description: If set, skips feature explorer (used in tests) AugmentationPolicySpectrogram: type: object required: - enabled properties: enabled: type: boolean description: True if spectrogram augmentation is enabled. Other properties will be ignored if this is false. warping: type: boolean description: True if warping along the time axis is enabled. freqMasking: type: string enum: - none - low - high description: The amount of frequency masking to apply. timeMasking: type: string enum: - none - low - high description: The amount of time masking to apply. gaussianNoise: type: string enum: - none - low - high description: The amount of Gaussian noise to add. KerasModelTypeEnum: type: string enum: - int8 - float32 - akida - requiresRetrain DeployPretrainedModelModelObjectDetection: type: object required: - modelType - labels - lastLayer - minimumConfidence properties: modelType: type: string enum: - object-detection labels: type: array items: type: string lastLayer: $ref: '#/components/schemas/ObjectDetectionLastLayer' minimumConfidence: description: Threshold for objects (f.e. 0.3) type: number DeployPretrainedModelInputTimeSeries: type: object required: - inputType - frequencyHz - windowLengthMs properties: inputType: type: string enum: - time-series frequencyHz: type: number windowLengthMs: type: integer SetTunerPrimaryJobRequest: type: object properties: name: type: string description: Optional name. If no name is provided, the trial name is used. 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) AugmentationPolicyImageEnum: type: string description: The data augmentation policy to use with image input enum: - none - all parameters: VersionIdParameter: name: versionId in: path required: true description: Version ID schema: type: integer LimitResultsParameter: name: limit in: query required: false description: Maximum number of results schema: type: integer ForceCancelParameter: name: forceCancel in: query required: false description: If set to 'true', we won't wait for the job cluster to cancel the job, and will mark the job as finished. schema: type: string JobIdParameter: name: jobId in: path required: true description: Job ID schema: type: integer RequiredStartDateParameter: name: startDate in: query required: true description: Start date schema: type: string format: date-time ProjectIdParameter: name: projectId in: path required: true description: Project ID schema: type: integer LogLevelParameter: name: logLevel in: query required: false description: Log level (error, warn, info, debug) schema: type: string enum: - error - warn - info - debug OptionalStartDateParameter: name: startDate in: query required: false description: Start date schema: type: string format: date-time OptionalImpulseIdParameter: name: impulseId in: query required: false description: Impulse ID. If this is unset then the default impulse is used. schema: type: integer OptionalJobsKeyParameter: name: key in: query required: false description: Job key to filter on schema: type: string OnlyRootJobsParameter: name: rootOnly in: query required: false description: Whether to exclude jobs with a parent ID (so jobs started as part of another job) schema: type: boolean DeploymentTypeParameter: name: type in: query required: true description: The name of the built target. You can find this by listing all deployment targets through `listDeploymentTargetsForProject` (via `GET /v1/api/{projectId}/deployment/targets`) and see the `format` type. schema: type: string ActionIdParameter: name: actionId in: path required: true description: AI Action ID schema: type: integer OptionalJobsCategoryParameter: name: category in: query required: false description: Job category to filter on schema: type: string TrialIdQueryParameter: name: trialId in: query required: true description: trial ID schema: type: string TunerContinuationJobIdParameter: name: continuationJobId in: query required: false description: Tuner coordinator job ID schema: type: integer LearnIdParameter: name: learnId in: path required: true description: Learn Block ID, use the impulse functions to retrieve the ID schema: type: integer RequiredEndDateParameter: name: endDate in: query required: true description: End date schema: type: string format: date-time OptionalEndDateParameter: name: endDate in: query required: false description: End date schema: type: string format: date-time OffsetResultsParameter: name: offset in: query required: false description: Offset in results, can be used in conjunction with LimitResultsParameter to implement paging. schema: type: integer 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