{
  "swagger": "2.0",
  "info": {
    "title": "Job service",
    "version": "0.1507.0",
    "description": "Send your API key as a bearer token: `Authorization: Bearer <api key>`."
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "ApiKey": {
      "type": "apiKey",
      "in": "header",
      "name": "Authorization",
      "description": "Your API key as a bearer token: `Authorization: Bearer <api key>`."
    }
  },
  "security": [
    {
      "ApiKey": []
    }
  ],
  "paths": {
    "/jobs/v1/{jobRid}/job-report": {
      "get": {
        "operationId": "JobService_getJobReport",
        "summary": "Get job report",
        "tags": [
          "Job Service"
        ],
        "description": "Fetches the job report for a job RID. Throws ResourcesNotFound if no job exists with this job RID.",
        "parameters": [
          {
            "name": "jobRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "x-alias": "JobRid",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/JobReport"
            },
            "x-example": {
              "jobStatus": {
                "type": "inProgress",
                "inProgress": {}
              },
              "jobRid": "<job rid>",
              "submittedAt": "2026-01-01T00:00:00Z"
            }
          }
        }
      }
    },
    "/jobs/v1/batch-get-job-reports": {
      "post": {
        "operationId": "JobService_batchGetJobReports",
        "summary": "Batch get job reports",
        "tags": [
          "Job Service"
        ],
        "description": "Fetches the job reports for a set of job RIDs. Omits any job reports the user is not permitted to see from the response.",
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/BatchGetJobReportsRequest"
            },
            "required": true,
            "x-example": {
              "jobRids": [
                "<job rid>"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/BatchGetJobReportsResponse"
            },
            "x-example": {
              "jobRidsToJobReports": {
                "<key>": {
                  "jobStatus": {
                    "type": "inProgress",
                    "inProgress": {}
                  },
                  "jobRid": "<job rid>",
                  "submittedAt": "2026-01-01T00:00:00Z"
                }
              }
            }
          }
        }
      }
    },
    "/jobs/v1/{jobRid}/cancel": {
      "post": {
        "operationId": "JobService_cancelJob",
        "summary": "Cancel job",
        "tags": [
          "Job Service"
        ],
        "description": "Cancels an in-progress job. For compute jobs this also stops the running computation. A no-op for jobs already in a terminal state. Returns the resulting report.",
        "parameters": [
          {
            "name": "jobRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "x-alias": "JobRid",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/JobReport"
            },
            "x-example": {
              "jobStatus": {
                "type": "inProgress",
                "inProgress": {}
              },
              "jobRid": "<job rid>",
              "submittedAt": "2026-01-01T00:00:00Z"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "Empty": {
      "type": "object",
      "properties": {}
    },
    "Timestamp": {
      "description": "Deprecated for new APIs. Use google.protobuf.Timestamp for absolute instants in proto APIs.\n\nThis legacy nanosecond precision timestamp type is represented by an epoch time in seconds and a nanosecond offset. The nanosecond offset is from the start of the epoch second, so must be less than 1 billion.",
      "type": "object",
      "properties": {
        "seconds": {
          "type": "integer",
          "format": "int64"
        },
        "nanos": {
          "type": "integer",
          "format": "int64"
        }
      },
      "required": [
        "seconds",
        "nanos"
      ]
    },
    "S3Handle": {
      "type": "object",
      "properties": {
        "bucket": {
          "type": "string"
        },
        "key": {
          "type": "string"
        }
      },
      "required": [
        "bucket",
        "key"
      ]
    },
    "BatchGetJobReportsRequest": {
      "type": "object",
      "properties": {
        "jobRids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "rid",
            "x-alias": "JobRid"
          },
          "uniqueItems": true
        }
      },
      "example": {
        "jobRids": [
          "<job rid>"
        ]
      }
    },
    "BatchGetJobReportsResponse": {
      "type": "object",
      "properties": {
        "jobRidsToJobReports": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/JobReport"
          },
          "x-map-key": "JobRid"
        }
      }
    },
    "Cancelled": {
      "description": "The job was cancelled by an explicit `cancelJob` request. Distinct from `Failed`: cancellation is a user-initiated terminal state, not an error. `executionStartTime` is absent if the job was cancelled before it began executing.",
      "type": "object",
      "properties": {
        "executionStartTime": {
          "type": "string",
          "format": "date-time"
        },
        "executionEndTime": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "executionEndTime"
      ]
    },
    "CheckJobResult": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/Status"
        },
        "failures": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Range"
          }
        },
        "areFailuresDecimated": {
          "type": "boolean"
        }
      },
      "required": [
        "status",
        "areFailuresDecimated"
      ]
    },
    "Completed": {
      "type": "object",
      "properties": {
        "result": {
          "allOf": [
            {
              "$ref": "#/definitions/JobResult"
            }
          ],
          "description": "Absent if the job's result payload is no longer available. The job still completed successfully."
        },
        "executionStartTime": {
          "type": "string",
          "format": "date-time"
        },
        "executionEndTime": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "executionStartTime",
        "executionEndTime"
      ]
    },
    "ComputeJobResult": {
      "description": "The result of a compute job.",
      "type": "object",
      "properties": {
        "response": {
          "$ref": "#/definitions/ComputeNodeResponse"
        },
        "executionEndTime": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "response",
        "executionEndTime"
      ]
    },
    "Failed": {
      "type": "object",
      "properties": {
        "failureMessage": {
          "type": "string"
        },
        "executionStartTime": {
          "type": "string",
          "format": "date-time"
        },
        "executionEndTime": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "executionEndTime"
      ]
    },
    "InProgress": {
      "type": "object",
      "properties": {}
    },
    "JobReport": {
      "type": "object",
      "properties": {
        "jobStatus": {
          "$ref": "#/definitions/JobStatus"
        },
        "jobRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "JobRid"
        },
        "submittedAt": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "jobStatus",
        "jobRid",
        "submittedAt"
      ]
    },
    "JobResult": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "checkJobResult",
            "computeJobResult",
            "udfCompilationJobResult"
          ]
        },
        "checkJobResult": {
          "$ref": "#/definitions/CheckJobResult"
        },
        "computeJobResult": {
          "$ref": "#/definitions/ComputeJobResult"
        },
        "udfCompilationJobResult": {
          "$ref": "#/definitions/UdfCompilationJobResult"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "checkJobResult",
        "checkJobResult": {
          "status": "PASS",
          "failures": [
            {
              "start": {
                "seconds": 1,
                "nanos": 1
              },
              "end": {
                "seconds": 1,
                "nanos": 1
              },
              "value": {
                "type": "double",
                "double": 1
              }
            }
          ],
          "areFailuresDecimated": true
        }
      }
    },
    "JobStatus": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "inProgress",
            "completed",
            "failed",
            "cancelled"
          ]
        },
        "inProgress": {
          "$ref": "#/definitions/InProgress"
        },
        "completed": {
          "$ref": "#/definitions/Completed"
        },
        "failed": {
          "$ref": "#/definitions/Failed"
        },
        "cancelled": {
          "$ref": "#/definitions/Cancelled"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "inProgress",
        "inProgress": {}
      }
    },
    "UdfCompilationJobResult": {
      "type": "object",
      "properties": {
        "artifactHandle": {
          "$ref": "#/definitions/S3Handle"
        },
        "manifestHandle": {
          "$ref": "#/definitions/S3Handle"
        },
        "compileKey": {
          "type": "string"
        }
      },
      "required": [
        "artifactHandle",
        "manifestHandle",
        "compileKey"
      ]
    },
    "ArrowArrayPlot": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "bucketedNumeric",
            "bucketedEnum"
          ]
        },
        "bucketedNumeric": {
          "$ref": "#/definitions/BucketedNumericArrayPlot"
        },
        "bucketedEnum": {
          "$ref": "#/definitions/BucketedEnumArrayPlot"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "bucketedNumeric",
        "bucketedNumeric": {
          "arrowBinary": "string",
          "groupByKeys": [
            "string"
          ]
        }
      }
    },
    "ArrowPlot": {
      "description": "A generic Arrow IPC plot response. Used for all Arrow-serialized plot types (numeric, bucketed numeric, enum, bucketed enum, struct, bucketed struct, full resolution, and bucketed multivariate).",
      "type": "object",
      "properties": {
        "arrowBinary": {
          "type": "string",
          "format": "byte",
          "description": "The raw binary containing an Arrow IPC stream."
        },
        "groupByKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field specifies the tags that the final output is grouped by. When you combine multiple channels, this list represents the superset of all group by keys used across every individual channel."
        },
        "nextPageToken": {
          "allOf": [
            {
              "$ref": "#/definitions/PageToken"
            }
          ],
          "description": "Continuation token for this paged result. Can only be returned if paging was requested. To retrieve the next page, repeat the same request with this value as `pageToken` and keep the pageSize sign unchanged. Returned only when this response contains exactly `abs(pageSize)` points; the next response may still be empty if this page ended exactly at the result-set boundary. Empty means this response was short and there are no further points in the requested direction."
        }
      },
      "required": [
        "arrowBinary"
      ]
    },
    "BucketedCartesian3dPlot": {
      "type": "object",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cartesian3dBucket"
          }
        }
      }
    },
    "BucketedCartesianPlot": {
      "type": "object",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CartesianBucket"
          }
        }
      }
    },
    "BucketedEnumArrayPlot": {
      "description": "The array is flattened out into a an arrow stream of bucketed primitive results, with an extra column to indicate the index of the array that the bucket corresponds to.",
      "type": "object",
      "properties": {
        "arrowBinary": {
          "type": "string",
          "format": "byte",
          "description": "The raw binary containing Arrow IPC stream for a bucketed N-dimensional enum array plot."
        },
        "groupByKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field specifies the tags that the final output is grouped by. When you combine multiple channels, this list represents the superset of all group by keys used across every individual channel."
        }
      },
      "required": [
        "arrowBinary"
      ]
    },
    "BucketedEnumPlot": {
      "type": "object",
      "properties": {
        "timestamps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Timestamp"
          },
          "description": "The end of the bucket, exclusive."
        },
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EnumBucket"
          }
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "BucketedFrequencyDomainPlot": {
      "description": "A bucketed/decimated frequency domain plot where multiple frequency bins have been aggregated.",
      "type": "object",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FrequencyBucket"
          }
        }
      }
    },
    "BucketedMultivariatePlot": {
      "type": "object",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MultivariateBucket"
          }
        },
        "groupByKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field specifies the tags that the final output is grouped by. When you combine multiple channels, this list represents the superset of all group by keys used across every individual channel."
        }
      }
    },
    "BucketedNumericArrayPlot": {
      "description": "The array is flattened out into a an arrow stream of bucketed primitive results, with an extra column to indicate the index of the array that the bucket corresponds to.",
      "type": "object",
      "properties": {
        "arrowBinary": {
          "type": "string",
          "format": "byte",
          "description": "The raw binary containing Arrow IPC stream for a bucketed N-dimensional numeric array plot."
        },
        "groupByKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field specifies the tags that the final output is grouped by. When you combine multiple channels, this list represents the superset of all group by keys used across every individual channel."
        }
      },
      "required": [
        "arrowBinary"
      ]
    },
    "BucketedNumericPlot": {
      "type": "object",
      "properties": {
        "timestamps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Timestamp"
          },
          "description": "The end of the bucket, exclusive."
        },
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NumericBucket"
          }
        }
      }
    },
    "Cartesian3dBucket": {
      "type": "object",
      "properties": {
        "minX": {
          "type": "number",
          "format": "double",
          "x-deprecated": "Switching to point-based min/maxes"
        },
        "maxX": {
          "type": "number",
          "format": "double",
          "x-deprecated": "Switching to point-based min/maxes"
        },
        "meanX": {
          "type": "number",
          "format": "double"
        },
        "minY": {
          "type": "number",
          "format": "double",
          "x-deprecated": "Switching to point-based min/maxes"
        },
        "maxY": {
          "type": "number",
          "format": "double",
          "x-deprecated": "Switching to point-based min/maxes"
        },
        "meanY": {
          "type": "number",
          "format": "double"
        },
        "minZ": {
          "type": "number",
          "format": "double",
          "x-deprecated": "Switching to point-based min/maxes"
        },
        "maxZ": {
          "type": "number",
          "format": "double",
          "x-deprecated": "Switching to point-based min/maxes"
        },
        "meanZ": {
          "type": "number",
          "format": "double"
        },
        "minXPoint": {
          "$ref": "#/definitions/Point3d"
        },
        "maxXPoint": {
          "$ref": "#/definitions/Point3d"
        },
        "minYPoint": {
          "$ref": "#/definitions/Point3d"
        },
        "maxYPoint": {
          "$ref": "#/definitions/Point3d"
        },
        "minZPoint": {
          "$ref": "#/definitions/Point3d"
        },
        "maxZPoint": {
          "$ref": "#/definitions/Point3d"
        },
        "minTimestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "maxTimestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        }
      },
      "required": [
        "meanX",
        "meanY",
        "meanZ",
        "minXPoint",
        "maxXPoint",
        "minYPoint",
        "maxYPoint",
        "minZPoint",
        "maxZPoint",
        "minTimestamp",
        "maxTimestamp",
        "count"
      ]
    },
    "CartesianBucket": {
      "type": "object",
      "properties": {
        "minX": {
          "type": "number",
          "format": "double"
        },
        "maxX": {
          "type": "number",
          "format": "double"
        },
        "minY": {
          "type": "number",
          "format": "double"
        },
        "maxY": {
          "type": "number",
          "format": "double"
        },
        "minTimestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "maxTimestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        }
      },
      "required": [
        "minX",
        "maxX",
        "minY",
        "maxY",
        "minTimestamp",
        "maxTimestamp",
        "count"
      ]
    },
    "CartesianPlot": {
      "type": "object",
      "properties": {
        "timestamps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Timestamp"
          }
        },
        "xValues": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "yValues": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        }
      }
    },
    "CompactEnumPoint": {
      "type": "object",
      "properties": {
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "value": {
          "type": "integer",
          "format": "int32"
        }
      },
      "required": [
        "timestamp",
        "value"
      ]
    },
    "ComputeNodeResponse": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "range",
            "rangesSummary",
            "rangeValue",
            "numeric",
            "bucketedNumeric",
            "numericPoint",
            "singlePoint",
            "arrowNumeric",
            "arrowBucketedNumeric",
            "enum",
            "enumPoint",
            "bucketedEnum",
            "arrowEnum",
            "arrowBucketedEnum",
            "pagedLog",
            "logPoint",
            "arrowLog",
            "cartesian",
            "bucketedCartesian",
            "bucketedCartesian3d",
            "frequencyDomain",
            "frequencyDomainV2",
            "spectrogram",
            "bucketedFrequencyDomain",
            "numericHistogram",
            "enumHistogram",
            "curveFit",
            "curveFitV2",
            "grouped",
            "array",
            "bucketedStruct",
            "arrowStruct",
            "fullResolution",
            "arrowBucketedMultivariate",
            "multivariate"
          ]
        },
        "range": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Range"
          }
        },
        "rangesSummary": {
          "$ref": "#/definitions/RangesSummary"
        },
        "rangeValue": {
          "$ref": "#/definitions/Range"
        },
        "numeric": {
          "$ref": "#/definitions/NumericPlot"
        },
        "bucketedNumeric": {
          "$ref": "#/definitions/BucketedNumericPlot"
        },
        "numericPoint": {
          "$ref": "#/definitions/NumericPoint"
        },
        "singlePoint": {
          "$ref": "#/definitions/SinglePoint"
        },
        "arrowNumeric": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "arrowBucketedNumeric": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "enum": {
          "$ref": "#/definitions/EnumPlot"
        },
        "enumPoint": {
          "$ref": "#/definitions/EnumPoint"
        },
        "bucketedEnum": {
          "$ref": "#/definitions/BucketedEnumPlot"
        },
        "arrowEnum": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "arrowBucketedEnum": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "pagedLog": {
          "$ref": "#/definitions/PagedLogPlot"
        },
        "logPoint": {
          "$ref": "#/definitions/LogPoint"
        },
        "arrowLog": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "cartesian": {
          "$ref": "#/definitions/CartesianPlot"
        },
        "bucketedCartesian": {
          "$ref": "#/definitions/BucketedCartesianPlot"
        },
        "bucketedCartesian3d": {
          "$ref": "#/definitions/BucketedCartesian3dPlot"
        },
        "frequencyDomain": {
          "$ref": "#/definitions/FrequencyDomainPlot"
        },
        "frequencyDomainV2": {
          "$ref": "#/definitions/FrequencyDomainPlotV2"
        },
        "spectrogram": {
          "$ref": "#/definitions/SpectrogramPlot"
        },
        "bucketedFrequencyDomain": {
          "$ref": "#/definitions/BucketedFrequencyDomainPlot"
        },
        "numericHistogram": {
          "$ref": "#/definitions/NumericHistogramPlot"
        },
        "enumHistogram": {
          "$ref": "#/definitions/EnumHistogramPlot"
        },
        "curveFit": {
          "allOf": [
            {
              "$ref": "#/definitions/CurveFitResult"
            }
          ],
          "description": "Deprecated: use `curveFitV2` (CurveFitResultV2) instead. Returned only for deprecated CurveFit requests."
        },
        "curveFitV2": {
          "$ref": "#/definitions/CurveFitResultV2"
        },
        "grouped": {
          "$ref": "#/definitions/GroupedComputeNodeResponses"
        },
        "array": {
          "$ref": "#/definitions/ArrowArrayPlot"
        },
        "bucketedStruct": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "arrowStruct": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "fullResolution": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "arrowBucketedMultivariate": {
          "$ref": "#/definitions/ArrowPlot"
        },
        "multivariate": {
          "$ref": "#/definitions/BucketedMultivariatePlot"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "range",
        "range": [
          {
            "start": {
              "seconds": 1,
              "nanos": 1
            },
            "end": {
              "seconds": 1,
              "nanos": 1
            },
            "value": {
              "type": "double",
              "double": 1
            }
          }
        ]
      }
    },
    "CurveFitResult": {
      "type": "object",
      "properties": {
        "r2": {
          "type": "number",
          "format": "double",
          "description": "R^2 (coefficient of determination) for the fit curve, a normalized measure of how well the curve fits the data. Usually ranges from 0 to 1, with higher indicating better fit (points closer to fit line)."
        },
        "mae": {
          "type": "number",
          "format": "double",
          "description": "Mean Absolute Error (MAE) - the average of the absolute differences between predicted and actual values. Measured in the same units as the y-values."
        },
        "mse": {
          "type": "number",
          "format": "double",
          "description": "Mean Squared Error (MSE) - the average of the squared differences between predicted and actual values. Measured in the squared units of the y-values."
        },
        "rmse": {
          "type": "number",
          "format": "double",
          "description": "Root Mean Squared Error (RMSE) - the square root of the mean squared error. Measured in the same units as the y-values."
        },
        "maxAbsoluteError": {
          "type": "number",
          "format": "double",
          "description": "Maximum Absolute Error - the largest absolute difference between any predicted and actual value. Measured in the same units as the y-values."
        },
        "sampleCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of data points used in the curve fitting calculation."
        },
        "curveResultDetails": {
          "allOf": [
            {
              "$ref": "#/definitions/CurveResultDetails"
            }
          ],
          "description": "Description of the fit curve."
        }
      },
      "required": [
        "r2",
        "mae",
        "mse",
        "rmse",
        "maxAbsoluteError",
        "sampleCount",
        "curveResultDetails"
      ]
    },
    "CurveFitResultV2": {
      "type": "object",
      "properties": {
        "r2": {
          "type": "number",
          "format": "double",
          "description": "R^2 (coefficient of determination) for the fit curve, a normalized measure of how well the curve fits the data. Usually ranges from 0 to 1, with higher indicating better fit (points closer to fit line)."
        },
        "mae": {
          "type": "number",
          "format": "double",
          "description": "Mean Absolute Error (MAE) - the average of the absolute differences between predicted and actual values. Measured in the same units as the y-values."
        },
        "mse": {
          "type": "number",
          "format": "double",
          "description": "Mean Squared Error (MSE) - the average of the squared differences between predicted and actual values. Measured in the squared units of the y-values."
        },
        "rmse": {
          "type": "number",
          "format": "double",
          "description": "Root Mean Squared Error (RMSE) - the square root of the mean squared error. Measured in the same units as the y-values."
        },
        "maxAbsoluteError": {
          "type": "number",
          "format": "double",
          "description": "Maximum Absolute Error - the largest absolute difference between any predicted and actual value. Measured in the same units as the y-values."
        },
        "sampleCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of data points used in the curve fitting calculation."
        },
        "curveResultDetails": {
          "allOf": [
            {
              "$ref": "#/definitions/CurveResultDetailsV2"
            }
          ],
          "description": "Description of the fit curve."
        }
      },
      "required": [
        "r2",
        "mae",
        "mse",
        "rmse",
        "maxAbsoluteError",
        "sampleCount",
        "curveResultDetails"
      ]
    },
    "CurveResultDetails": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "exponential",
            "logarithmic",
            "polynomial",
            "power"
          ]
        },
        "exponential": {
          "$ref": "#/definitions/ExponentialResultDetails"
        },
        "logarithmic": {
          "$ref": "#/definitions/LogarithmicResultDetails"
        },
        "polynomial": {
          "$ref": "#/definitions/PolynomialResultDetails"
        },
        "power": {
          "$ref": "#/definitions/PowerResultDetails"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "exponential",
        "exponential": {
          "a": 1,
          "b": 1
        }
      }
    },
    "CurveResultDetailsV2": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "exponential",
            "logarithmic",
            "polynomial",
            "power",
            "custom"
          ]
        },
        "exponential": {
          "$ref": "#/definitions/ExponentialResultDetails"
        },
        "logarithmic": {
          "$ref": "#/definitions/LogarithmicResultDetails"
        },
        "polynomial": {
          "$ref": "#/definitions/PolynomialResultDetails"
        },
        "power": {
          "$ref": "#/definitions/PowerResultDetails"
        },
        "custom": {
          "$ref": "#/definitions/CustomCurveResultDetails"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "exponential",
        "exponential": {
          "a": 1,
          "b": 1
        }
      }
    },
    "CustomCurveResultDetails": {
      "description": "The result of fitting a custom curve, containing the optimized values for each named parameter.",
      "type": "object",
      "properties": {
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "format": "double"
          },
          "description": "Optimized parameter values produced by the curve fit. Keys match the parameter names provided in the request."
        },
        "converged": {
          "type": "boolean",
          "description": "Whether the optimizer converged to a solution within its iteration limit. When false, the returned parameters are the best estimate found before the iteration cap was reached and did not satisfy the solver's convergence tolerances."
        },
        "iterations": {
          "type": "integer",
          "format": "int32",
          "description": "Number of iterations the solver completed."
        }
      },
      "required": [
        "converged",
        "iterations"
      ]
    },
    "EnumBucket": {
      "type": "object",
      "properties": {
        "histogram": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int64"
          },
          "description": "The map of values within the bucket to their frequency."
        },
        "firstPoint": {
          "$ref": "#/definitions/CompactEnumPoint"
        },
        "lastPoint": {
          "allOf": [
            {
              "$ref": "#/definitions/CompactEnumPoint"
            }
          ],
          "description": "Will be empty if the bucket only has a single point."
        }
      },
      "required": [
        "firstPoint"
      ]
    },
    "EnumHistogramBucket": {
      "description": "A bucket in an enum histogram representing all the counts for a specific enumerated value, across all input series.",
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "description": "The value of the enum as a string"
        },
        "countsByChannel": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/HistogramChannelCount"
          },
          "x-map-key": "VariableName"
        }
      },
      "required": [
        "value"
      ]
    },
    "EnumHistogramPlot": {
      "type": "object",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EnumHistogramBucket"
          }
        }
      }
    },
    "EnumPlot": {
      "type": "object",
      "properties": {
        "timestamps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Timestamp"
          }
        },
        "values": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "nextPageToken": {
          "allOf": [
            {
              "$ref": "#/definitions/PageToken"
            }
          ],
          "description": "Continuation token for this paged result. Can only be returned if paging was requested. To retrieve the next page, repeat the same request with this value as `pageToken` and keep the pageSize sign unchanged. Returned only when this response contains exactly `abs(pageSize)` points; the next response may still be empty if this page ended exactly at the result-set boundary. Empty means this response was short and there are no further points in the requested direction."
        }
      }
    },
    "EnumPoint": {
      "type": "object",
      "properties": {
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "value": {
          "type": "string"
        }
      },
      "required": [
        "timestamp",
        "value"
      ]
    },
    "ExponentialResultDetails": {
      "description": "y = a * e^(b * x)",
      "type": "object",
      "properties": {
        "a": {
          "type": "number",
          "format": "double"
        },
        "b": {
          "type": "number",
          "format": "double"
        }
      },
      "required": [
        "a",
        "b"
      ]
    },
    "FrequencyBucket": {
      "description": "A single bucket in a bucketed frequency domain plot.",
      "type": "object",
      "properties": {
        "frequencyStart": {
          "type": "number",
          "format": "double",
          "description": "The start frequency of this bucket (inclusive)."
        },
        "frequencyEnd": {
          "type": "number",
          "format": "double",
          "description": "The end frequency of this bucket (exclusive)."
        },
        "frequencyCenter": {
          "type": "number",
          "format": "double",
          "description": "The center frequency of this bucket."
        },
        "minAmplitude": {
          "type": "number",
          "format": "double",
          "description": "The minimum amplitude value in this bucket."
        },
        "maxAmplitude": {
          "type": "number",
          "format": "double",
          "description": "The maximum amplitude value in this bucket."
        },
        "meanAmplitude": {
          "type": "number",
          "format": "double",
          "description": "The mean amplitude value in this bucket."
        },
        "count": {
          "type": "integer",
          "format": "int64",
          "description": "The number of original frequency points that were aggregated into this bucket."
        },
        "firstPoint": {
          "allOf": [
            {
              "$ref": "#/definitions/FrequencyPoint"
            }
          ],
          "description": "The first point (lowest frequency) in this bucket."
        },
        "lastPoint": {
          "allOf": [
            {
              "$ref": "#/definitions/FrequencyPoint"
            }
          ],
          "description": "The last point (highest frequency) in this bucket. Will be empty if the bucket only has a single point."
        }
      },
      "required": [
        "frequencyStart",
        "frequencyEnd",
        "frequencyCenter",
        "minAmplitude",
        "maxAmplitude",
        "meanAmplitude",
        "count",
        "firstPoint"
      ]
    },
    "FrequencyDomainPlot": {
      "type": "object",
      "properties": {
        "frequencies": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "amplitudes": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        }
      }
    },
    "FrequencyDomainPlotComplex": {
      "type": "object",
      "properties": {
        "frequencies": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "real": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "imaginary": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        }
      }
    },
    "FrequencyDomainPlotMagnitudeAndPhase": {
      "type": "object",
      "properties": {
        "frequencies": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "magnitudes": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "phases": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        }
      }
    },
    "FrequencyDomainPlotV2": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "real",
            "complex",
            "magnitudeAndPhase"
          ]
        },
        "real": {
          "$ref": "#/definitions/FrequencyDomainPlot"
        },
        "complex": {
          "$ref": "#/definitions/FrequencyDomainPlotComplex"
        },
        "magnitudeAndPhase": {
          "$ref": "#/definitions/FrequencyDomainPlotMagnitudeAndPhase"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "real",
        "real": {
          "frequencies": [
            1
          ],
          "amplitudes": [
            1
          ]
        }
      }
    },
    "FrequencyPoint": {
      "description": "A single point in a frequency domain plot.",
      "type": "object",
      "properties": {
        "frequency": {
          "type": "number",
          "format": "double"
        },
        "amplitude": {
          "type": "number",
          "format": "double"
        }
      },
      "required": [
        "frequency",
        "amplitude"
      ]
    },
    "GroupedComputeNodeResponse": {
      "type": "object",
      "properties": {
        "grouping": {
          "$ref": "#/definitions/Grouping"
        },
        "response": {
          "$ref": "#/definitions/ComputeNodeResponse"
        }
      },
      "required": [
        "grouping",
        "response"
      ]
    },
    "GroupedComputeNodeResponses": {
      "description": "Contains a `ComputeNodeResponse` for each applicable grouping along with metadata describing the grouping. All the contained `ComputeNodeResponse`s are guaranteed to be of the same type.",
      "type": "object",
      "properties": {
        "responses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GroupedComputeNodeResponse"
          },
          "uniqueItems": true
        }
      }
    },
    "Grouping": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "tagsWithValues"
          ]
        },
        "tagsWithValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A grouping identified by a specific instantiation of tag keys and values."
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "tagsWithValues",
        "tagsWithValues": {
          "key": "string"
        }
      }
    },
    "HistogramChannelCount": {
      "description": "The count of the value in the bucket for the specific channel.",
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        }
      },
      "required": [
        "count"
      ]
    },
    "LogPoint": {
      "type": "object",
      "properties": {
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "value": {
          "$ref": "#/definitions/LogValue"
        }
      },
      "required": [
        "timestamp",
        "value"
      ]
    },
    "LogValue": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "args": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "id": {
          "type": "string",
          "format": "uuid"
        }
      },
      "required": [
        "message",
        "id"
      ]
    },
    "LogarithmicResultDetails": {
      "description": "y = a * ln(x) + b",
      "type": "object",
      "properties": {
        "a": {
          "type": "number",
          "format": "double"
        },
        "b": {
          "type": "number",
          "format": "double"
        }
      },
      "required": [
        "a",
        "b"
      ]
    },
    "MultivariateBucket": {
      "type": "object",
      "properties": {
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Value"
          },
          "description": "Values for each input series in the bucket."
        }
      },
      "required": [
        "timestamp"
      ]
    },
    "NumericBucket": {
      "type": "object",
      "properties": {
        "min": {
          "type": "number",
          "format": "double"
        },
        "max": {
          "type": "number",
          "format": "double"
        },
        "mean": {
          "type": "number",
          "format": "double"
        },
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "variance": {
          "type": "number",
          "format": "double",
          "description": "The population variance of the bucket. If the bucket has only one value, this will be 0."
        },
        "firstPoint": {
          "$ref": "#/definitions/NumericPoint"
        },
        "lastPoint": {
          "allOf": [
            {
              "$ref": "#/definitions/NumericPoint"
            }
          ],
          "description": "Will be empty if the bucket only has a single point."
        },
        "aggregations": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "format": "double"
          },
          "description": "Additional per-bucket aggregations that have no dedicated field above, keyed by the output column name requested via `numericAggregations` or `numericOutputFieldsV2` (e.g. `sum`, `standardDeviation`, `rootMeanSquare`, `p50`). Empty when no additional aggregations were requested."
        }
      }
    },
    "NumericHistogramBucket": {
      "description": "A bucket in a numeric histogram representing a range of values, and the counts of values in that range across all input series.",
      "type": "object",
      "properties": {
        "lowerBound": {
          "type": "number",
          "format": "double",
          "description": "The lower bound of the bucket, inclusive"
        },
        "upperBound": {
          "type": "number",
          "format": "double",
          "description": "The upper bound of the bucket, exclusive"
        },
        "countsByChannel": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/HistogramChannelCount"
          },
          "x-map-key": "VariableName"
        },
        "buckets": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/HistogramChannelCount"
          },
          "x-map-key": "VariableName",
          "x-deprecated": "Use countsByChannel instead"
        }
      },
      "required": [
        "lowerBound",
        "upperBound"
      ]
    },
    "NumericHistogramPlot": {
      "type": "object",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NumericHistogramBucket"
          }
        }
      }
    },
    "NumericPlot": {
      "type": "object",
      "properties": {
        "timestamps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Timestamp"
          }
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "nextPageToken": {
          "allOf": [
            {
              "$ref": "#/definitions/PageToken"
            }
          ],
          "description": "Continuation token for this paged result. Can only be returned if paging was requested. To retrieve the next page, repeat the same request with this value as `pageToken` and keep the pageSize sign unchanged. Returned only when this response contains exactly `abs(pageSize)` points; the next response may still be empty if this page ended exactly at the result-set boundary. Empty means this response was short and there are no further points in the requested direction."
        }
      }
    },
    "NumericPoint": {
      "type": "object",
      "properties": {
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "value": {
          "type": "number",
          "format": "double"
        }
      },
      "required": [
        "timestamp",
        "value"
      ]
    },
    "PageToken": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "timestampAndId"
          ]
        },
        "timestampAndId": {
          "$ref": "#/definitions/TimestampAndId"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "timestampAndId",
        "timestampAndId": {
          "timestamp": {
            "seconds": 1,
            "nanos": 1
          },
          "id": "string"
        }
      }
    },
    "PagedLogPlot": {
      "type": "object",
      "properties": {
        "timestamps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Timestamp"
          }
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LogValue"
          }
        },
        "nextPageToken": {
          "allOf": [
            {
              "$ref": "#/definitions/PageToken"
            }
          ],
          "description": "Continuation token for this paged result. Can only be returned if paging was requested. To retrieve the next page, repeat the same request with this value as `pageToken` and keep the pageSize sign unchanged. Returned only when this response contains exactly `abs(pageSize)` points; the next response may still be empty if this page ended exactly at the result-set boundary. Empty means this response was short and there are no further points in the requested direction."
        }
      }
    },
    "Point3d": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "format": "double"
        },
        "y": {
          "type": "number",
          "format": "double"
        },
        "z": {
          "type": "number",
          "format": "double"
        },
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        }
      },
      "required": [
        "x",
        "y",
        "z",
        "timestamp"
      ]
    },
    "PolynomialResultDetails": {
      "description": "y = sum( a_i * x^i ) for i in 0...len(a)",
      "type": "object",
      "properties": {
        "a": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        }
      }
    },
    "PowerResultDetails": {
      "description": "y = a * x^b",
      "type": "object",
      "properties": {
        "a": {
          "type": "number",
          "format": "double"
        },
        "b": {
          "type": "number",
          "format": "double"
        }
      },
      "required": [
        "a",
        "b"
      ]
    },
    "Range": {
      "description": "The end represents the first timestamp that does not belong to the range. If absent, there is no known end to the range.",
      "type": "object",
      "properties": {
        "start": {
          "$ref": "#/definitions/Timestamp"
        },
        "end": {
          "$ref": "#/definitions/Timestamp"
        },
        "value": {
          "$ref": "#/definitions/RangeValue"
        }
      }
    },
    "RangeAggregation": {
      "description": "An aggregation value representing combined aggregation metrics for data over a range.",
      "type": "object",
      "properties": {
        "average": {
          "type": "number",
          "format": "double"
        },
        "min": {
          "type": "number",
          "format": "double"
        },
        "max": {
          "type": "number",
          "format": "double"
        },
        "standardDeviation": {
          "type": "number",
          "format": "double"
        },
        "count": {
          "type": "number",
          "format": "double"
        },
        "sum": {
          "type": "number",
          "format": "double"
        },
        "rootMeanSquare": {
          "type": "number",
          "format": "double"
        }
      },
      "required": [
        "average",
        "min",
        "max",
        "standardDeviation",
        "count",
        "sum"
      ]
    },
    "RangeSummary": {
      "description": "Summary of a set of ranges",
      "type": "object",
      "properties": {
        "range": {
          "allOf": [
            {
              "$ref": "#/definitions/Range"
            }
          ],
          "description": "The range representing the minimum start and maximum end times of the ranges."
        },
        "subRangeCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of ranges found within this time range."
        }
      },
      "required": [
        "range",
        "subRangeCount"
      ]
    },
    "RangeValue": {
      "description": "A value attached to a range. If there are no relevant data points in the range, this will be noPointsInRange for the range; otherwise, an Aggregation will be returned if this is produced by getting multiple aggregation values over a range (i.e. aggregating for all metrics over a range), and will be a double otherwise for singular values (i.e. aggregating for just the sum of data values over a range).\n\nSet `type` to the name of one of the other fields, and set only that field.",
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "double",
            "aggregation",
            "noPointsInRange"
          ]
        },
        "double": {
          "type": "number",
          "format": "double"
        },
        "aggregation": {
          "$ref": "#/definitions/RangeAggregation"
        },
        "noPointsInRange": {
          "$ref": "#/definitions/Empty"
        }
      },
      "required": [
        "type"
      ],
      "example": {
        "type": "double",
        "double": 1
      }
    },
    "RangesSummary": {
      "description": "A summary of the ranges returned from a SummarizeRanges request. Returned when the number of ranges found is above a threshold.",
      "type": "object",
      "properties": {
        "rangesSummary": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RangeSummary"
          }
        }
      }
    },
    "SinglePoint": {
      "description": "Return type representing a single point value.",
      "type": "object",
      "properties": {
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "value": {
          "$ref": "#/definitions/Value"
        },
        "precisionLoss": {
          "type": "boolean",
          "description": "Returns true if the result required downcasting to a type with less precision, for example if the input series was Int64 and the result is a Float64."
        }
      },
      "required": [
        "timestamp",
        "value",
        "precisionLoss"
      ]
    },
    "SpectrogramPlot": {
      "description": "Values on a time-frequency grid. Columns are frequency buckets and rows are the time buckets that hold data, in ascending time.",
      "type": "object",
      "properties": {
        "frequencyCenters": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          },
          "description": "Center frequency in Hz of each column."
        },
        "frequencyEdges": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          },
          "description": "Column boundaries in Hz, one more than `frequencyCenters`: column `c` spans `frequencyEdges[c]` to `frequencyEdges[c + 1]`. Columns may differ in width."
        },
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SpectrogramRow"
          }
        }
      }
    },
    "SpectrogramRow": {
      "type": "object",
      "properties": {
        "start": {
          "allOf": [
            {
              "$ref": "#/definitions/Timestamp"
            }
          ],
          "description": "Start of the time span this row covers."
        },
        "end": {
          "allOf": [
            {
              "$ref": "#/definitions/Timestamp"
            }
          ],
          "description": "End of the time span this row covers."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          },
          "description": "One value per column"
        }
      },
      "required": [
        "start",
        "end"
      ]
    },
    "TimestampAndId": {
      "type": "object",
      "properties": {
        "timestamp": {
          "$ref": "#/definitions/Timestamp"
        },
        "id": {
          "type": "string",
          "format": "uuid"
        }
      },
      "required": [
        "timestamp"
      ]
    },
    "Value": {
      "description": "A single value. The type is dictated by the returned variant\n\nSet `type` to the name of one of the other fields, and set only that field.",
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "stringValue",
            "float64Value",
            "int64Value",
            "arrayValue",
            "structValue"
          ]
        },
        "stringValue": {
          "type": "string"
        },
        "float64Value": {
          "type": "number",
          "format": "double"
        },
        "int64Value": {
          "type": "string"
        },
        "arrayValue": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Value"
          }
        },
        "structValue": {
          "description": "A JSON representation of the struct"
        }
      },
      "required": [
        "type"
      ],
      "example": {
        "type": "stringValue",
        "stringValue": "string"
      }
    },
    "Status": {
      "type": "string",
      "enum": [
        "PASS",
        "FAIL"
      ]
    }
  },
  "tags": [
    {
      "name": "Job Service",
      "x-displayName": "Job service",
      "description": "The Job Service is responsible for returning information about jobs for checklist executions.",
      "x-errors": [
        {
          "status": 404,
          "errorCode": "NOT_FOUND",
          "errorName": "JobService:JobNotFound"
        }
      ]
    }
  ]
}
