Edge Impulse Jobs API

The Jobs API from Edge Impulse — 42 operation(s) for jobs.

OpenAPI Specification

edge-impulse-jobs-api-openapi.yml Raw ↑
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
      - par

# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edge-impulse/refs/heads/main/openapi/edge-impulse-jobs-api-openapi.yml