{
  "version" : 1,
  "errors" : [ {
    "errorName" : {
      "name" : "AttachmentNotFound",
      "package" : "io.nominal.attachments.api"
    },
    "namespace" : "Attachment",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "attachmentRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "AttachmentRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AttachmentsNotFound",
      "package" : "io.nominal.attachments.api"
    },
    "namespace" : "Attachment",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "attachmentRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AttachmentRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidS3Path",
      "package" : "io.nominal.attachments.api"
    },
    "namespace" : "Attachment",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "s3Path",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "S3Path",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "S3FileNotFound",
      "package" : "io.nominal.attachments.api"
    },
    "namespace" : "Attachment",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "s3Path",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "S3Path",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MultipleUsersForSameEmail",
      "package" : "io.nominal.authentication.api"
    },
    "namespace" : "Authentication",
    "code" : "FAILED_PRECONDITION",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "email",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "NotAuthorized",
      "package" : "io.nominal.authentication.api"
    },
    "namespace" : "Authentication",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "OrgNotFound",
      "package" : "io.nominal.authentication.api"
    },
    "namespace" : "Authentication",
    "code" : "NOT_FOUND",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SearchUsersLimitExceeded",
      "package" : "io.nominal.authentication.api"
    },
    "namespace" : "Authentication",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requestedLimit",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }, {
      "fieldName" : "allowedLimit",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UserNotFound",
      "package" : "io.nominal.authentication.api"
    },
    "namespace" : "Authentication",
    "code" : "NOT_FOUND",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ApiKeyNotFound",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "NOT_FOUND",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidJwtAudience",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ {
      "fieldName" : "audience",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidJwtExpired",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidJwtFormat",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidJwtIssuer",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ {
      "fieldName" : "issuer",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MissingClaims",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "missingClaims",
      "type" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NoMembership",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotAuthorized",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotAuthorizedAdmin",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ {
      "fieldName" : "rid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RegisterResourceConflict",
      "package" : "io.nominal.authorization"
    },
    "docs" : "The resource has already been registered with a different workspace.\n",
    "namespace" : "Authorization",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "resource",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "requestedWorkspace",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "WorkspaceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "WorkspaceNotFound",
      "package" : "io.nominal.authorization"
    },
    "namespace" : "Authorization",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "workspace",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "WorkspaceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommentNotFound",
      "package" : "io.nominal.comments.api"
    },
    "namespace" : "Comments",
    "code" : "NOT_FOUND",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ContentTooLong",
      "package" : "io.nominal.comments.api"
    },
    "namespace" : "Comments",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "EmptyCommentContent",
      "package" : "io.nominal.comments.api"
    },
    "namespace" : "Comments",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidAttachment",
      "package" : "io.nominal.comments.api"
    },
    "namespace" : "Comments",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MaxNestingDepthExceeded",
      "package" : "io.nominal.comments.api"
    },
    "namespace" : "Comments",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "Unauthorized",
      "package" : "io.nominal.comments.api"
    },
    "namespace" : "Comments",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConnectNotAvailable",
      "package" : "io.nominal.connect.download"
    },
    "docs" : "The Connect download service is not available on this stack. Please contact support.\n",
    "namespace" : "Connect",
    "code" : "NOT_FOUND",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotGetTagsForNonSeriesDataSource",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataSourceNotFound",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataSourcesNotFound",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToGetTagsForDataSource",
      "package" : "io.nominal.datasource.api"
    },
    "docs" : "Attempted to get tags for an external data source with a specified time range.\n",
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    }, {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MissingTagFilters",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NoPrefixTreeForDataSources",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "PrefixTreeTooLarge",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "numNodes",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }, {
      "fieldName" : "maxNodes",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RequestedPageOffsetTooLarge",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "offset",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RequestedPageSizeTooLarge",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "maxPageSize",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyTagKeysRequested",
      "package" : "io.nominal.datasource.api"
    },
    "namespace" : "DataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "maxTagKeys",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToCreateLogSet",
      "package" : "io.nominal.datasource.logset.api"
    },
    "namespace" : "LogSet",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "LogSetAlreadyFinalized",
      "package" : "io.nominal.datasource.logset.api"
    },
    "namespace" : "LogSet",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "rid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogSetRid",
          "package" : "io.nominal.datasource.logset.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "LogSetNotFound",
      "package" : "io.nominal.datasource.logset.api"
    },
    "namespace" : "LogSet",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "rid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogSetRid",
          "package" : "io.nominal.datasource.logset.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "EventNotFound",
      "package" : "io.nominal.event"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "uuid",
      "type" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "EventsNotFound",
      "package" : "io.nominal.event"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "eventRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "EventRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IllegalBinCountRequested",
      "package" : "io.nominal.event"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requestedBinCount",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IllegalEventLimitRequested",
      "package" : "io.nominal.event"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requestedEventLimit",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MissingAssetRid",
      "package" : "io.nominal.event"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RidsNotFound",
      "package" : "io.nominal.event"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "rids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "BatchGranularityMismatch",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "All dataset granularities must match.\n",
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "datasetRids",
      "type" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Granularity",
              "package" : "io.nominal.api"
            }
          },
          "valueType" : {
            "type" : "set",
            "set" : {
              "itemType" : {
                "type" : "primitive",
                "primitive" : "RID"
              }
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ContainerizedExtractorContainerFailed",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ContainerizedExtractorNotFound",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "ContainerizedExtractor",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "extractorRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ContainerizedExtractorsNotFound",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "ContainerizedExtractor",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "extractorRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DatasetFileNotFound",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "The target dataset file could not be found.\n",
    "namespace" : "IngestService",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetRid",
          "package" : "io.nominal.api.rids"
        }
      }
    }, {
      "fieldName" : "fileId",
      "type" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DatasetNotFound",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "The target dataset could not be found.\n",
    "namespace" : "IngestService",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "EmptyMultipartUpload",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "UploadService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToDownloadFile",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INTERNAL",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FrameCountTimestampsMismatch",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IncompatibleConnectionTypeAndLogQuery",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IncompatibleFileForDataset",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IncompatibleInputs",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "The inputs provided to the ingest job are incompatible with each other\n",
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IncorrectSizeBytes",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "UploadService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IngestJobNotCompatibleForRerun",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "The ingest job exists but is not compatible to be re-run.\n",
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "ingestJobRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestJobRid",
          "package" : "io.nominal.ingest.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IngestJobNotFound",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "ingestJobRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestJobRid",
          "package" : "io.nominal.ingest.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidBucket",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "bucket",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidContainerImage",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "ContainerizedExtractor",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "image",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DockerImageSource",
          "package" : "io.nominal.ingest.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidCustomTimestampFormat",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "timeFormat",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "reason",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidDefaultTag",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "ContainerizedExtractor",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "defaultTag",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidOutputFileFormat",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "ContainerizedExtractor",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "outputFileFormat",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidS3Path",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "path",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidUrl",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "url",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MissingMetadataForReingest",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "The timestamp metadata required to reingest the dataset is missing and must be provided in the request.\n",
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "datasetRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DatasetRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ParallelReingestIntoDatasetV1",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "Cannot ingest multiple datasets in parallel into older datasets.\nIt is recommended to reingest all source datasets and the target dataset into a new dataset destination.\n",
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RecursiveReingest",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "The target dataset is included in the source datasets.\n",
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ReingestTooManyFiles",
      "package" : "io.nominal.ingest.api"
    },
    "docs" : "The number of files to reingest is too large.\n",
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "maxFiles",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunBoundsInverted",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "S3PathNotFound",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "NOT_FOUND",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "s3Path",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "S3Path",
          "package" : "io.nominal.api"
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "UnsupportedIngestSource",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UnsupportedRequestTypeForReIngest",
      "package" : "io.nominal.ingest.api"
    },
    "namespace" : "IngestService",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requestType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "ingestJobRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestJobRid",
          "package" : "io.nominal.ingest.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CyclicModuleFunctionDefinitions",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more functions contain cyclic references to each other.\n",
    "namespace" : "Module",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "functionNames",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "FunctionNameConflict",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more function names conflict with each other in the module definition.\n",
    "namespace" : "Module",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "functionNames",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidFunctionNames",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more function names are invalid.\nFunction names must begin with a letter and can only contain letters, numbers, and underscores.\n",
    "namespace" : "Module",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "functionNames",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidModuleApiName",
      "package" : "io.nominal.module"
    },
    "docs" : "The provided module API name is invalid.\nModule names must begin with a letter and can only contain letters, numbers, and underscores.\n",
    "namespace" : "Module",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "moduleApiName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidModuleVersionString",
      "package" : "io.nominal.module"
    },
    "docs" : "The provided module version string is invalid.\nModule version strings must be of the form \"MAJOR\", where MAJOR is a non-negative integer.\n",
    "namespace" : "Module",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "version",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidNestedFunctionReferences",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more functions contain invalid nested function references.\nFunctions cannot reference other functions that are not defined in the same module.\n",
    "namespace" : "Module",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "functionName",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidParameterNames",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more parameter names are invalid.\nParameter names must begin with a letter and can only contain letters, numbers, and underscores.\n",
    "namespace" : "Module",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "parameterName",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "ModuleNameConflict",
      "package" : "io.nominal.module"
    },
    "docs" : "A module with the given API name already exists in the current organization.\n",
    "namespace" : "Module",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "moduleApiName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "ModuleRidsNotFound",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more modules were not found in the current workspace.\n",
    "namespace" : "Module",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "moduleRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ModuleRid",
              "package" : "io.nominal.modules.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ModulesNotFound",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more modules were not found in the current workspace.\n",
    "namespace" : "Module",
    "code" : "NOT_FOUND",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "moduleRefs",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "RequestModuleRef",
              "package" : "io.nominal.module"
            }
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "ParameterNameConflict",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more parameter names conflict with each other in the module definition.\n",
    "namespace" : "Module",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "parameterNames",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "UndefinedModuleFunctionReference",
      "package" : "io.nominal.module"
    },
    "docs" : "The following function reference is undefined in the module.\n",
    "namespace" : "Module",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "invalidFunctionReference",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "VariableNameConflict",
      "package" : "io.nominal.module"
    },
    "docs" : "One or more variable names conflict with each other in the module definition.\n",
    "namespace" : "Module",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "variableName",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidClientMessage",
      "package" : "io.nominal.persistent.compute.api"
    },
    "docs" : "Could not parse client message.",
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidComputation",
      "package" : "io.nominal.persistent.compute.api"
    },
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "invalidTypes",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "InvalidComputationType",
              "package" : "io.nominal.persistent.compute.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NonNominalStorageLocator",
      "package" : "io.nominal.persistent.compute.api"
    },
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "PermissionDenied",
      "package" : "io.nominal.persistent.compute.api"
    },
    "namespace" : "PersistentCompute",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ {
      "fieldName" : "rids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyPoints",
      "package" : "io.nominal.persistent.compute.api"
    },
    "docs" : "The subscription is operating on too many points.",
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "limit",
      "type" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      }
    }, {
      "fieldName" : "totalNumSeries",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "SAFELONG"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyPointsForSingleSeries",
      "package" : "io.nominal.persistent.compute.api"
    },
    "docs" : "The subscription is operating on a series that has too many points.",
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "limit",
      "type" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      }
    }, {
      "fieldName" : "requestStartBound",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UnsupportedGranularity",
      "package" : "io.nominal.persistent.compute.api"
    },
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "WindowNegative",
      "package" : "io.nominal.persistent.compute.api"
    },
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "window",
      "type" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "WindowTooLarge",
      "package" : "io.nominal.persistent.compute.api"
    },
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "WindowWithLookBackTooLarge",
      "package" : "io.nominal.persistent.compute.api"
    },
    "namespace" : "PersistentCompute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotDeserializeSearchToken",
      "package" : "io.nominal.scout.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "token",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidRange",
      "package" : "io.nominal.scout.api"
    },
    "docs" : "The start time of the provided Range is greater than its end time.\n",
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "range",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Range",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RequestedPageSizeTooLarge",
      "package" : "io.nominal.scout.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "maxPageSize",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AssetNotFound",
      "package" : "io.nominal.scout.asset.api"
    },
    "namespace" : "Assets",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "assetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "AssetRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AssetsNotFound",
      "package" : "io.nominal.scout.asset.api"
    },
    "namespace" : "Assets",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "assetRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AssetRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DuplicateDataScopeNames",
      "package" : "io.nominal.scout.asset.api"
    },
    "docs" : "Multiple data scopes within the same asset share the same refname",
    "namespace" : "Assets",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "names",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRefName",
              "package" : "io.nominal.scout.api"
            }
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "TypeAlreadyExists",
      "package" : "io.nominal.scout.asset.api"
    },
    "namespace" : "Assets",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "typeName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TypeCheckFailed",
      "package" : "io.nominal.scout.asset.api"
    },
    "docs" : "The type check failed for the following properties.",
    "namespace" : "Assets",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "missingProperties",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "PropertyName",
              "package" : "io.nominal.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TypeNotFound",
      "package" : "io.nominal.scout.asset.api"
    },
    "namespace" : "Assets",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "rid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "TypeRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TypeReferencedByAssets",
      "package" : "io.nominal.scout.asset.api"
    },
    "docs" : "The type is referenced by one or more assets and cannot be deleted.\n",
    "namespace" : "Assets",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ {
      "fieldName" : "rid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "TypeRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotAddToLegacyDataset",
      "package" : "io.nominal.scout.catalog"
    },
    "docs" : "The current dataset is legacy and does not support multiple files. Please re-ingest this dataset.\n",
    "namespace" : "Catalog",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChannelNotFound",
      "package" : "io.nominal.scout.catalog"
    },
    "namespace" : "Catalog",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "channelRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConflictOnDatasetCreation",
      "package" : "io.nominal.scout.catalog"
    },
    "namespace" : "Catalog",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConflictOnDatasetFileCreateOrUpdate",
      "package" : "io.nominal.scout.catalog"
    },
    "docs" : "Dataset files must have globally unique S3 paths on creation.\nOn update, the ingested_at timestamp must be unique.\n",
    "namespace" : "Catalog",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConflictOnSeriesCreation",
      "package" : "io.nominal.scout.catalog"
    },
    "namespace" : "Catalog",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "csvIndex",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "INTEGER"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DatasetExistsInOtherWorkspace",
      "package" : "io.nominal.scout.catalog"
    },
    "docs" : "The dataset with the requested path already exists in another workspace.\n",
    "namespace" : "Catalog",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "workspaceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "WorkspaceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DatasetFileNotFound",
      "package" : "io.nominal.scout.catalog"
    },
    "namespace" : "Catalog",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "fileId",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFileId",
          "package" : "io.nominal.datasource"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DatasetNotFound",
      "package" : "io.nominal.scout.catalog"
    },
    "namespace" : "Catalog",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DatasetsNotFound",
      "package" : "io.nominal.scout.catalog"
    },
    "namespace" : "Catalog",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "GranularityMismatch",
      "package" : "io.nominal.scout.catalog"
    },
    "docs" : "Different time units are not allowed for the same dataset. Must be either all nanoseconds or all picoseconds.\n",
    "namespace" : "Catalog",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidStateForAddingAdditionalFile",
      "package" : "io.nominal.scout.catalog"
    },
    "docs" : "The current dataset is not in a valid state for uploading an\nadditional file - it is either failed or still ingesting the\nprevious file.\n",
    "namespace" : "Catalog",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "timestampMetadata",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "TimestampMetadata",
              "package" : "io.nominal.scout.catalog"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunNotFound",
      "package" : "io.nominal.scout.catalog"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "runRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CheckNotAvailableInStreamingContext",
      "package" : "io.nominal.scout.checklistexecution.api"
    },
    "namespace" : "ChecklistExecution",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "checkName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChecklistAlreadyRunning",
      "package" : "io.nominal.scout.checklistexecution.api"
    },
    "namespace" : "ChecklistExecution",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConnectionNotAvailableForStreaming",
      "package" : "io.nominal.scout.checklistexecution.api"
    },
    "namespace" : "ChecklistExecution",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "connection",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ConnectionRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "StreamingChecklistNotFound",
      "package" : "io.nominal.scout.checklistexecution.api"
    },
    "namespace" : "ChecklistExecution",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checklistRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChecklistRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "StreamingChecklistNotFoundForAsset",
      "package" : "io.nominal.scout.checklistexecution.api"
    },
    "namespace" : "ChecklistExecution",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checklistRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChecklistRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    }, {
      "fieldName" : "assetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "AssetRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AssetsNotFound",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "assetRid",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AssetRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CheckNotFound",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checkRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "CheckRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChecklistNotFound",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checklistRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChecklistRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChecklistsCircularDependency",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "rid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChecklistRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChecklistsExceededMaxDepth",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChecklistsNotFound",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checklistRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ChecklistRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChecksNotFound",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checkRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CheckRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommitToArchivedChecklist",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "Checks",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "checklistRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChecklistRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "JobNotFound",
      "package" : "io.nominal.scout.checks.api"
    },
    "namespace" : "JobService",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "jobRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "JobRid",
          "package" : "io.nominal.scout.checks.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotAggregateEnumPlot",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "aggregationType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotCompileRegexp",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The regular expression could not be compiled.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "queryId",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "UUID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChannelHasWrongType",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "seriesType",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataType",
          "package" : "io.nominal.storage.series.api"
        }
      }
    }, {
      "fieldName" : "validTypes",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NominalDataType",
              "package" : "io.nominal.storage.series.api"
            }
          }
        }
      },
      "docs" : "The set of types that would have been compatible with the rest of the compute graph.\n"
    } ],
    "unsafeArgs" : [ {
      "fieldName" : "channel",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceAndChannel",
          "package" : "io.nominal.scout.compute.api"
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "ConcurrentQueriesExceeded",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "There are too many concurrent queries running.\n",
    "namespace" : "Compute",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "queryId",
      "type" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConverterInputUnitNotFound",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "A unit could not be found for the input series, or it did not exist in the unit system. The conversion could \nnot be computed.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "inputUnit",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "UnitSymbol",
              "package" : "io.nominal.scout.units.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConverterOutputUnitNotFound",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The output unit symbol could not be found in the unit system. The conversion could not be computed.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "inputUnit",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "UnitSymbol",
          "package" : "io.nominal.scout.units.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CurveInvalidNegativeInputs",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Some points in the input had negative (or zero) x-values. Power and logarithmic curve fits\ndo not allow negative (or zero) x-valued points.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CurveUnequalInputLength",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The x and y inputs to fit a curve to do not have the same length.",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DerivedSeriesHasWrongType",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "expectedType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ {
      "fieldName" : "derivedSeries",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DerivedSeries",
          "package" : "io.nominal.scout.compute.api"
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "DuplicateTimestamp",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "timestamp",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ExponentialCurveInputTooLarge",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Due to limits in how numbers are represented by computers, exponential fits cannot be performed\non data with x-values that are too large (> 650). This includes timestamp data based on the Time Unit\nparameter to the curve fit - e.g. 1 second at millisecond scale is too large, as it is 1000 milliseconds.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ExternalDatabaseBadGateway",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "A bad gateway result was encountered while trying to fetch data from the external database.\n",
    "namespace" : "ExternalDatabase",
    "code" : "CUSTOM_SERVER",
    "safeArgs" : [ {
      "fieldName" : "type",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ExternalDatabaseGatewayTimeout",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "A gateway timeout was encountered while trying to fetch data from the external database.\n",
    "namespace" : "ExternalDatabase",
    "code" : "CUSTOM_SERVER",
    "safeArgs" : [ {
      "fieldName" : "type",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ExternalDatabaseSocketTimeout",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "A socket timeout was encountered while trying to fetch data from the external database.\n",
    "namespace" : "ExternalDatabase",
    "code" : "CUSTOM_SERVER",
    "safeArgs" : [ {
      "fieldName" : "type",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FrequencyDomainWindowEmpty",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The selected window for the frequency domain is empty. Try again with a larger time range.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FrequencyDomainWindowTooLarge",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The selected window for the frequency domain is too large. Try again with a smaller time range.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "GranularityMismatch",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Some operations that require matching granularity did not have matching granularity.",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "GroupByTagsNotSubset",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Group by tags must be equal, or one set must be a subset of the other.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "group1",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    }, {
      "fieldName" : "group2",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "GroupBysNotSupportedForQuery",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Group by queries are not supported for the compute node supplied\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "computeNode",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidBitOperation",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The bit operation is invalid due to the index or operand being out of range. Valid range - [0, 63].\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "operationType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "value",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidExpression",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "expression",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidFieldName",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Struct field names cannot contain '.'\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "fieldName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidLiteralRange",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The starting timestamp of a range cannot be greater than or equal to the end timestamp.\nAt least one of start and end timestamps must be present.\nOnly the first range when sorted may omit the start, and only the last may omit the end.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "start",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Timestamp",
              "package" : "io.nominal.api"
            }
          }
        }
      }
    }, {
      "fieldName" : "end",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Timestamp",
              "package" : "io.nominal.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidNumericOutputFields",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Numeric output fields can only be specified on Arrow format numeric series requests.\nAt least one field must be specified.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidPlotType",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "expectedType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidRangeNodeStartAfterViewRange",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The compute node was given a starting timestamp after the end of the view range window.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "nodeStart",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "rangeEnd",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidRefpropInputCount",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "REFPROP requires exactly two input series.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "inputCount",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidSeriesLocator",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "seriesRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogicalSeriesRid",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidTagFilterConfiguration",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Invalid tag filter configuration was provided.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "errorType",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "TagFilterValidationErrorType",
          "package" : "io.nominal.scout.compute.api"
        }
      }
    }, {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidTimeUnit",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The time unit associated with the series is incompatible with the current transform.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidValueMap",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Range end must be greater than range start. Range start may only be undefined if in the first range, or the prior end is defined and less. \nRange end may only be undefined if in the last range, or the next start is defined and greater. Ranges must be in increasing order.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MaxQuerySizeExceeded",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The maximum query size was exceeded.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "queryId",
      "type" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MemoryLimitExceeded",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The query exceeded the memory limit. Try querying a smaller time range or fewer series.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "queryId",
      "type" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MissingFunctionParameter",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The requested module function could not be executed because a required parameter was not provided.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "moduleName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "moduleVersion",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "functionName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "parameterName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "MissingModuleApplication",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The requested module application could not be found. \nThis may be because the reference is incorrect or the application is unavailable in the current execution context.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "moduleApplicationRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ModuleApplicationRid",
          "package" : "io.nominal.modules.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "MissingModuleFunction",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The requested module function could not be found. \nThis may be because the reference is incorrect or the function is unavailable in the current execution context.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "moduleName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "moduleVersion",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "functionName",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "MissingModuleVariable",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "variableName",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VariableName",
          "package" : "io.nominal.scout.compute.api"
        }
      }
    }, {
      "fieldName" : "context",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Context",
              "package" : "io.nominal.scout.compute.api"
            }
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "MissingVariable",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "variableName",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VariableName",
          "package" : "io.nominal.scout.compute.api"
        }
      }
    } ],
    "unsafeArgs" : [ {
      "fieldName" : "context",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Context",
              "package" : "io.nominal.scout.compute.api"
            }
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "NonPositiveDuration",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Duration must be strictly positive.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "duration",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Duration",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NonPositiveResampleInterval",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The resample interval must be strictly positive.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "resampleInterval",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Duration",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotAuthorized",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotEnoughPointsForCurve",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "There were not enough points to fit the curve requested.",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "OverlappingLiteralRanges",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Ranges cannot overlap. Only the first range when sorted may omit the start,\nand only the last may omit the end.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "PicosRangeTooLarge",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Time range is too large to fit in 64 bits for picosecond granularity data.\nTry again with a smaller time range.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "QueryRangeTooLarge",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The requested time range is too large. Try again with a smaller time range.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RefpropInputTooLarge",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The number of points in the REFPROP inputs is too large.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "alignedSeriesSize",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RefpropOutputPropertyIsInput",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The output property cannot be one of the input properties for REFPROP.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "outputProperty",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "firstProperty",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "secondProperty",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RequestedRowsLimitExceeded",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The maximum number of points that can be returned is 10,000.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "maxRowsReturned",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ResampleDefaultValueTypeMismatchesSeriesType",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The default value provided for resampling does not match the type of the series being resampled.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "defaultValueType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "expectedType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ResolutionIntervalTooSmallForRange",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requestedResolution",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Duration",
          "package" : "io.nominal.scout.run.api"
        }
      }
    }, {
      "fieldName" : "start",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "end",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RowLimitExceeded",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The query exceeded that limit for number of rows returned. For the query to complete,\neither zoom in or downsample.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "queryId",
      "type" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    }, {
      "fieldName" : "limit",
      "type" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SignalFilterInvalidCutoffBand",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Lower band cutoff frequency must be less than or equal to upper band cutoff frequency.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "lowCutoffFrequency",
      "type" : {
        "type" : "primitive",
        "primitive" : "DOUBLE"
      }
    }, {
      "fieldName" : "highCutoffFrequency",
      "type" : {
        "type" : "primitive",
        "primitive" : "DOUBLE"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SignalFilterInvalidCutoffFrequency",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Cutoff frequency must be less than half the sampling frequency.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "invalidCutoffFrequency",
      "type" : {
        "type" : "primitive",
        "primitive" : "DOUBLE"
      }
    }, {
      "fieldName" : "samplingFrequency",
      "type" : {
        "type" : "primitive",
        "primitive" : "DOUBLE"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SignalFilterInvalidOrder",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Order must be positive even numbers for bidirectional filters.\nBidirectional filters are applied once forwards and once backwards, effectively doubling order.\nDoubled again for bandpass/bandstop filters, requiring a multiple of 4 for filter order.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "order",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SignalFilterNonPositiveCutoffFrequency",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Cutoff frequency must be strictly positive.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "cutoffFrequency",
      "type" : {
        "type" : "primitive",
        "primitive" : "DOUBLE"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SignalFilterNotEnoughData",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Not enough data to apply the filter. Required data scales with filter order.\nTry again with a larger time range.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requiredMinPoints",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }, {
      "fieldName" : "lenPoints",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TimeoutExceeded",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The query timed out. Try querying a smaller time range or fewer series.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "queryId",
      "type" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyBuckets",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The number of buckets returned is greater than the max allowed (1000). Try again by specifying a larger bucket width or\nfewer bucket counts.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyCategories",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "An enum series has more categories than the max allowed (200).",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "numCategories",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyEvents",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Number of events is greater than the max allowed (1000).",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyLiterals",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Too many literals provided in a literal node.",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "count",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyPoints",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The number of points returned is greater than the max allowed. Try again with a smaller time\nrange, or a larger resolution.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyRanges",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Ranges is greater than the max allowed (2000).",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyResamplePoints",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The resample interval is too short and would produce more than the max points (10,000,000). Try again by specifying a larger interval.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManySubrequests",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "Number of parameterized subrequests is greater than the max allowed (300).",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UnitConversionInvalid",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The unit conversion could not be computed because the input unit cannot be converted\nto the output unit.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "inputUnit",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "UnitSymbol",
          "package" : "io.nominal.scout.units.api"
        }
      }
    }, {
      "fieldName" : "outputUnit",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "UnitSymbol",
          "package" : "io.nominal.scout.units.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UnsupportedRefpropProperty",
      "package" : "io.nominal.scout.compute.api"
    },
    "docs" : "The specified REFPROP property is not supported or not available in the current configuration.\n",
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "property",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "propertyType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "VariableHasWrongType",
      "package" : "io.nominal.scout.compute.api"
    },
    "namespace" : "Compute",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "variableName",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VariableName",
          "package" : "io.nominal.scout.compute.api"
        }
      }
    }, {
      "fieldName" : "expectedType",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ExportDataTooBig",
      "package" : "io.nominal.scout.dataexport.api"
    },
    "namespace" : "Export",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "estimatedSize",
      "type" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AssetsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "assetRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AssetRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AutomaticCheckEvaluationNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "automaticCheckEvaluationRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "AutomaticCheckEvaluationRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AutomaticCheckEvaluationsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "automaticCheckEvaluationRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AutomaticCheckEvaluationRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotPerformCheckAlertAction",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "checkAlertRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CheckAlertRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    }, {
      "fieldName" : "reason",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CheckAlertNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "checkAlertRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "CheckAlertRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CheckAlertsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checkAlertRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CheckAlertRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChecklistsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checklistRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ChecklistRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataReviewNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "dataReviewRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataReviewRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataReviewsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "dataReviewRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataReviewRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToPerformAutomaticCheckEvaluationReviewAction",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "checkAlertRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AutomaticCheckEvaluationRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToPerformCheckAlertAction",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "checkAlertRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CheckAlertRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    }, {
      "fieldName" : "reason",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToResolveSeriesForCheck",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "runRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "RunRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ {
      "fieldName" : "channel",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Channel",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "reason",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "additionalArgs",
      "type" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          },
          "valueType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidPageToken",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "nextPageToken",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Token",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "LinkedDataReviewsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checkAlertRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CheckAlertRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "LinkedNotebooksNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "checkAlertRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CheckAlertRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ManualCheckEvaluationNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "manualCheckEvaluationRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ManualCheckEvaluationRid",
          "package" : "io.nominal.scout.datareview.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ManualCheckEvaluationsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "manualCheckEvaluationRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ManualCheckEvaluationRid",
              "package" : "io.nominal.scout.datareview.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NoPointsInRange",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "logicalSeriesRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogicalSeriesRid",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "start",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "end",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "offset",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Duration",
              "package" : "io.nominal.scout.run.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotebooksNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "notebookRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NotebookRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ReviewCommentIsEmpty",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "DataReview",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunsNotFound",
      "package" : "io.nominal.scout.datareview.api"
    },
    "namespace" : "Checks",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "runRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "RunRid",
              "package" : "io.nominal.scout.run.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConnectionNotFound",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "namespace" : "Connection",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "connectionRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ConnectionRid",
          "package" : "io.nominal.scout.datasource.connection.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DatasourceRidNotFound",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "namespace" : "Connection",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToAddTagsToConnection",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "docs" : "Cannot manually add tags to a Nominal connection.",
    "namespace" : "Connection",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "connectionRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ConnectionRid",
          "package" : "io.nominal.scout.datasource.connection.api"
        }
      }
    }, {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToCreateConnection",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "namespace" : "Connection",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NoSecretRidProvided",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "namespace" : "Connection",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotAllowedToCreateConnection",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "namespace" : "Connection",
    "code" : "PERMISSION_DENIED",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "PopulateSeriesTimeRangeTooLarge",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "namespace" : "Connection",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SecretsNotFound",
      "package" : "io.nominal.scout.datasource.connection.api"
    },
    "namespace" : "Connection",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "SecretRid",
              "package" : "io.nominal.scout.datasource.connection.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DuplicateResourcesError",
      "package" : "io.nominal.scout.favorites.api"
    },
    "namespace" : "Favorites",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "duplicateResourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ResourcesNotFoundError",
      "package" : "io.nominal.scout.favorites.api"
    },
    "namespace" : "Favorites",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "resourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IntegrationNotFound",
      "package" : "io.nominal.scout.integrations.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "integrationRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "IntegrationRid",
          "package" : "io.nominal.scout.integrations.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IntegrationTokenNotFound",
      "package" : "io.nominal.scout.integrations.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "token",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "IntegrationsNotFound",
      "package" : "io.nominal.scout.integrations.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "integrationRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "IntegrationRid",
              "package" : "io.nominal.scout.integrations.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SlackIntegrationNotAvailable",
      "package" : "io.nominal.scout.integrations.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ArchiveNotebookFailed",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "notebookRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AssetsNotFound",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "assetRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AssetRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotReadNotebookRefNames",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "notebookRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotebookLocked",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "notebookRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotebookNotFound",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "notebookRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NotebooksNotFound",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "notebookRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NotebookRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunNotFound",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "runRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "RunRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunsNotFound",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "runRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "RunRid",
              "package" : "io.nominal.scout.run.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SaveNotebookConflict",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "notebookRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    }, {
      "fieldName" : "otherSnapshotRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "SnapshotRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    }, {
      "fieldName" : "otherSnapshotAuthorRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "UserRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SaveNotebookFailed",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "notebookRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SearchNotebooksFailed",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "INTERNAL",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "errorMessage",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "SearchNotebooksLimitExceeded",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requestedLimit",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }, {
      "fieldName" : "allowedLimit",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SnapshotNotFound",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "snapshotRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "SnapshotRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UpdateNotebookTagsFailed",
      "package" : "io.nominal.scout.notebook.api"
    },
    "namespace" : "Scout",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "notebookRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "AssetNotPresentInRun",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "runRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "RunRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    }, {
      "fieldName" : "assetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "AssetRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "BothAssetAndDataSourcesSpecified",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidConnectionRid",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "connectionRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ConnectionRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidDataSourceRefNameType",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "name",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "type",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceType",
          "package" : "io.nominal.scout.run.api"
        }
      }
    }, {
      "fieldName" : "existingType",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceType",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidDatasetRid",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidLogSetRid",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "logSetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogSetRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidVideoRid",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "videoRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RefNamesAlreadyUsed",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "refNames",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRefName",
              "package" : "io.nominal.scout.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunBoundsInverted",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "startTime",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "UtcTimestamp",
          "package" : "io.nominal.scout.run.api"
        }
      }
    }, {
      "fieldName" : "endTime",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "UtcTimestamp",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunNotFound",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "runRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "RunRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunNotFoundById",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "runNumber",
      "type" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      }
    }, {
      "fieldName" : "runPrefix",
      "type" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "RunPropertiesHaveNullValues",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "propertyNames",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "PropertyName",
              "package" : "io.nominal.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UnspecifiedAssetForMultiAssetRun",
      "package" : "io.nominal.scout.run.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "runRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "RunRid",
          "package" : "io.nominal.scout.run.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotChangeSavedViewResourceType",
      "package" : "io.nominal.scout.savedviews.api"
    },
    "namespace" : "SavedView",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "oldResourceType",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ResourceType",
          "package" : "io.nominal.scout.savedviews.api"
        }
      }
    }, {
      "fieldName" : "newResourceType",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ResourceType",
          "package" : "io.nominal.scout.savedviews.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotUpdateArchivedSavedView",
      "package" : "io.nominal.scout.savedviews.api"
    },
    "namespace" : "SavedView",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidIndex",
      "package" : "io.nominal.scout.savedviews.api"
    },
    "namespace" : "SavedView",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "index",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ResourceTypeAndSearchStateMismatch",
      "package" : "io.nominal.scout.savedviews.api"
    },
    "namespace" : "SavedView",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "resourceType",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ResourceType",
          "package" : "io.nominal.scout.savedviews.api"
        }
      }
    }, {
      "fieldName" : "searchStateExpectedType",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ResourceType",
          "package" : "io.nominal.scout.savedviews.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SavedViewNotFoundError",
      "package" : "io.nominal.scout.savedviews.api"
    },
    "namespace" : "SavedView",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "savedViewRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "SavedViewRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SavedViewsNotFoundError",
      "package" : "io.nominal.scout.savedviews.api"
    },
    "namespace" : "SavedView",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "savedViewRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "SavedViewRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TooManyActiveSavedViews",
      "package" : "io.nominal.scout.savedviews.api"
    },
    "namespace" : "SavedView",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "maxSavedViews",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CannotReadTemplateRefNames",
      "package" : "io.nominal.scout.template.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "templateRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "TemplateRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChartsNotFound",
      "package" : "io.nominal.scout.template.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "chartRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VizId",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommitToArchivedTemplate",
      "package" : "io.nominal.scout.template.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "templateRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "TemplateRid",
          "package" : "io.nominal.scout.rids.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SearchTemplatesLimitExceeded",
      "package" : "io.nominal.scout.template.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "requestedLimit",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }, {
      "fieldName" : "allowedLimit",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TemplatesNotFound",
      "package" : "io.nominal.scout.template.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "templateRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "TemplateRid",
              "package" : "io.nominal.scout.rids.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "BranchNotFound",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "branchName",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "BranchName",
          "package" : "io.nominal.scout.versioning.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommitConflict",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "branchName",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "BranchName",
          "package" : "io.nominal.scout.versioning.api"
        }
      }
    }, {
      "fieldName" : "trueLatestCommit",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "CommitId",
          "package" : "io.nominal.scout.versioning.api"
        }
      }
    }, {
      "fieldName" : "providedLatestCommit",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "CommitId",
          "package" : "io.nominal.scout.versioning.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommitIdExists",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "commitId",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "CommitId",
          "package" : "io.nominal.scout.versioning.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommitNotFound",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "commit",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "CommitId",
          "package" : "io.nominal.scout.versioning.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommitPointerNameConflict",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "name",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "CommitsNotFound",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "resourceAndCommits",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ResourceAndCommitId",
              "package" : "io.nominal.scout.versioning.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DeleteMainBranch",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "HistoryPageSizeTooLarge",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "pageSize",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ResourceAlreadyVersioned",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ResourceNotFound",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ResourcesNotFound",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "resourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "TagNotFound",
      "package" : "io.nominal.scout.versioning.api"
    },
    "namespace" : "Scout",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "resourceRid",
      "type" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }, {
      "fieldName" : "tagName",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "TagName",
          "package" : "io.nominal.scout.versioning.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidFileShiftScaleRequest",
      "package" : "io.nominal.scout.video.api"
    },
    "docs" : "Attempting to shift or scale the timestamps of a video with a timestamp manifest.",
    "namespace" : "Video",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "videoFileRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoFileRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidShiftScaleRequest",
      "package" : "io.nominal.scout.video.api"
    },
    "docs" : "Attempting to shift or scale the timestamps of a video file with a timestamp manifest, or scale a multi-file \nvideo.\n",
    "namespace" : "Video",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "videoRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidSourceVideo",
      "package" : "io.nominal.scout.video.api"
    },
    "docs" : "Attempting to segment a file that does not contain any video streams.",
    "namespace" : "VideoSegmenter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "videoPath",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SegmentConflict",
      "package" : "io.nominal.scout.video.api"
    },
    "docs" : "Attempting to create multiple segments with overlapping timestamps",
    "namespace" : "Video",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "videoRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoRid",
          "package" : "io.nominal.api.rids"
        }
      }
    }, {
      "fieldName" : "segment1Bounds",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Bounds",
          "package" : "io.nominal.scout.video.api"
        }
      }
    }, {
      "fieldName" : "segment2Bounds",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Bounds",
          "package" : "io.nominal.scout.video.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SegmentNotFound",
      "package" : "io.nominal.scout.video.api"
    },
    "docs" : "unable to find segment at the requested timestamp.",
    "namespace" : "Video",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "videoRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "VideoFileIngestNotComplete",
      "package" : "io.nominal.scout.video.api"
    },
    "docs" : "Attempting to access per-file segment information before video segmentation has finished.",
    "namespace" : "Video",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "videoRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoFileRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "VideoFileNotFound",
      "package" : "io.nominal.scout.video.api"
    },
    "docs" : "Accessing a video file by RID that does not exist or that you do not have permission to access.",
    "namespace" : "Video",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "videoFileRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoFileRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "VideoIngestNotComplete",
      "package" : "io.nominal.scout.video.api"
    },
    "namespace" : "Video",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "videoRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "VideoNotFound",
      "package" : "io.nominal.scout.video.api"
    },
    "namespace" : "Video",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "videoRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SecretNotFound",
      "package" : "io.nominal.secrets.api"
    },
    "namespace" : "Secrets",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "secretRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "SecretRid",
          "package" : "io.nominal.secrets.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SecretsNotFound",
      "package" : "io.nominal.secrets.api"
    },
    "namespace" : "Secrets",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "secretRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "SecretRid",
              "package" : "io.nominal.secrets.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UnableToEncryptSecret",
      "package" : "io.nominal.secrets.api"
    },
    "namespace" : "Secrets",
    "code" : "FAILED_PRECONDITION",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ForbiddenCrossWorkspaceOperation",
      "package" : "io.nominal.security.api.workspace"
    },
    "docs" : "Workspaces are hard boundaries in Nominal. Resources from different workspaces cannot be combined.\n",
    "namespace" : "Security",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "workspaces",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "WorkspaceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "WorkspaceNotFound",
      "package" : "io.nominal.security.api.workspace"
    },
    "docs" : "The workspace with the specified rid was not found.\n",
    "namespace" : "Security",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "workspaceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "WorkspaceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "WorkspaceNotSpecified",
      "package" : "io.nominal.security.api.workspace"
    },
    "docs" : "A workspace was not specified and could not be inferred.\n",
    "namespace" : "Security",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataSourceNotFound",
      "package" : "io.nominal.storage.datasource.api"
    },
    "namespace" : "NominalDataSource",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataSourcesNotFound",
      "package" : "io.nominal.storage.datasource.api"
    },
    "namespace" : "NominalDataSource",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NominalDataSourceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidNominalDataSource",
      "package" : "io.nominal.storage.datasource.api"
    },
    "namespace" : "NominalDataSource",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "NominalDataSourceConflict",
      "package" : "io.nominal.storage.datasource.api"
    },
    "docs" : "The requested data source already exists.\n",
    "namespace" : "NominalDataSource",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "id",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataSourceId",
          "package" : "io.nominal.storage.datasource.api"
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "ArrayTooLarge",
      "package" : "io.nominal.storage.writer.api"
    },
    "docs" : "Array size exceeds maximum allowed length.\n",
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "maxLength",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }, {
      "fieldName" : "actualLength",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ConflictingDataTypes",
      "package" : "io.nominal.storage.writer.api"
    },
    "docs" : "Found two different data types for the same series in the request.\n",
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidChannelName",
      "package" : "io.nominal.storage.writer.api"
    },
    "docs" : "The channel name is invalid.\n",
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "channel",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }, {
      "fieldName" : "reason",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidDataSource",
      "package" : "io.nominal.storage.writer.api"
    },
    "docs" : "The nominal data source or dataset provided is invalid.\n",
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataSourceOrDatasetRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidStruct",
      "package" : "io.nominal.storage.writer.api"
    },
    "docs" : "Ingested Struct is not a valid JSON struct\n",
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "structString",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidTelegrafTimestamp",
      "package" : "io.nominal.storage.writer.api"
    },
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "timestamp",
      "type" : {
        "type" : "primitive",
        "primitive" : "ANY"
      }
    } ]
  }, {
    "errorName" : {
      "name" : "InvalidTimestamp",
      "package" : "io.nominal.storage.writer.api"
    },
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ {
      "fieldName" : "timestamp",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    } ]
  }, {
    "errorName" : {
      "name" : "MismatchedTimestampsAndValues",
      "package" : "io.nominal.storage.writer.api"
    },
    "docs" : "Columnar streaming request contains different numbers of timestamps and values\n",
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "timestampCount",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }, {
      "fieldName" : "valueCount",
      "type" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "StreamingDisabledOnDataset",
      "package" : "io.nominal.storage.writer.api"
    },
    "docs" : "Unsupported dataset for streaming.\n",
    "namespace" : "NominalChannelWriter",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "datasetRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChartThemeNameConflict",
      "package" : "io.nominal.themes.api"
    },
    "namespace" : "Themes",
    "code" : "CONFLICT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChartThemeNotFound",
      "package" : "io.nominal.themes.api"
    },
    "namespace" : "Themes",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "chartThemeRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChartThemeRid",
          "package" : "io.nominal.themes.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidChartTheme",
      "package" : "io.nominal.themes.api"
    },
    "namespace" : "Themes",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChannelsNotFound",
      "package" : "io.nominal.timeseries.channelmetadata.api"
    },
    "namespace" : "ChannelMetadata",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "channels",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ChannelIdentifier",
              "package" : "io.nominal.timeseries.channelmetadata.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataSourcesNotFound",
      "package" : "io.nominal.timeseries.logicalseries.api"
    },
    "namespace" : "LogicalSeries",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "FailedToCreateSeries",
      "package" : "io.nominal.timeseries.logicalseries.api"
    },
    "namespace" : "LogicalSeries",
    "code" : "INTERNAL",
    "safeArgs" : [ {
      "fieldName" : "message",
      "type" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidDataSources",
      "package" : "io.nominal.timeseries.logicalseries.api"
    },
    "namespace" : "LogicalSeries",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "LogicalSeriesNotFound",
      "package" : "io.nominal.timeseries.logicalseries.api"
    },
    "namespace" : "LogicalSeries",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "rids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "LogicalSeriesRid",
              "package" : "io.nominal.api"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "UnableToResolve",
      "package" : "io.nominal.timeseries.logicalseries.api"
    },
    "namespace" : "LogicalSeries",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "DataSourcesNotFound",
      "package" : "io.nominal.timeseries.metadata.api"
    },
    "namespace" : "SeriesMetadata",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRids",
      "type" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "InvalidDataSource",
      "package" : "io.nominal.timeseries.metadata.api"
    },
    "namespace" : "SeriesMetadata",
    "code" : "INVALID_ARGUMENT",
    "safeArgs" : [ {
      "fieldName" : "dataSourceRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataSourceRid",
          "package" : "io.nominal.api.rids"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "SeriesMetadataNotFound",
      "package" : "io.nominal.timeseries.metadata.api"
    },
    "namespace" : "SeriesMetadata",
    "code" : "NOT_FOUND",
    "safeArgs" : [ {
      "fieldName" : "rid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "SeriesMetadataRid",
          "package" : "io.nominal.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  }, {
    "errorName" : {
      "name" : "ChunkAlreadyExists",
      "package" : "io.nominal.timeseries.seriescache.api"
    },
    "namespace" : "SeriesCache",
    "code" : "CONFLICT",
    "safeArgs" : [ {
      "fieldName" : "logicalSeriesRid",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogicalSeriesRid",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "startTimestamp",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "endTimestamp",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Timestamp",
          "package" : "io.nominal.api"
        }
      }
    }, {
      "fieldName" : "resolution",
      "type" : {
        "type" : "reference",
        "reference" : {
          "name" : "Resolution",
          "package" : "io.nominal.timeseries.seriescache.api"
        }
      }
    } ],
    "unsafeArgs" : [ ]
  } ],
  "types" : [ {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ArchivedStatus",
        "package" : "io.nominal.api"
      },
      "values" : [ {
        "value" : "NOT_ARCHIVED"
      }, {
        "value" : "ARCHIVED"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Channel",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ColumnName",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DataSourceRefName",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "DataSourceType",
        "package" : "io.nominal.api"
      },
      "values" : [ {
        "value" : "DATASET"
      }, {
        "value" : "CONNECTION"
      }, {
        "value" : "VIDEO"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Empty",
        "package" : "io.nominal.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ErrorResult",
        "package" : "io.nominal.api"
      },
      "fields" : [ {
        "fieldName" : "errorType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorType",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ErrorType",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "Should be of the format Namespace:ErrorType"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Granularity",
        "package" : "io.nominal.api"
      },
      "values" : [ {
        "value" : "PICOSECONDS"
      }, {
        "value" : "NANOSECONDS"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Handle",
        "package" : "io.nominal.api"
      },
      "union" : [ {
        "fieldName" : "s3",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Path",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InProgressResult",
        "package" : "io.nominal.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "IngestStatus",
        "package" : "io.nominal.api"
      },
      "values" : [ {
        "value" : "SUCCEEDED"
      }, {
        "value" : "FAILED"
      }, {
        "value" : "IN_PROGRESS"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IngestStatusV2",
        "package" : "io.nominal.api"
      },
      "union" : [ {
        "fieldName" : "success",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SuccessResult",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorResult",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "inProgress",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InProgressResult",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Label",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LogicalSeriesRid",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "McapChannelId",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "McapChannelLocator",
        "package" : "io.nominal.api"
      },
      "union" : [ {
        "fieldName" : "topic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapChannelTopic",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapChannelId",
            "package" : "io.nominal.api"
          }
        }
      } ],
      "docs" : "Locator for a channel in an mcap file. Channel name is not guaranteed to be unique, so channel ID should\nbe used for mcap files with duplicate channel names.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "McapChannelTopic",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Property",
        "package" : "io.nominal.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertyName",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertyValue",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "PropertyName",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "PropertyValue",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Range",
        "package" : "io.nominal.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RefNameAndType",
        "package" : "io.nominal.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceType",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "S3Path",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SerializableError",
        "package" : "io.nominal.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "errorInstanceId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "statusCode",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "params",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ],
      "docs" : "A SerializableError is a representation of a ServiceException that exists to send error\nresults to clients as part of a response object when directly throwing an exception is undesirable.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SeriesArchetypeRid",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "reference",
        "reference" : {
          "name" : "SeriesMetadataRid",
          "package" : "io.nominal.api"
        }
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SeriesDataType",
        "package" : "io.nominal.api"
      },
      "values" : [ {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      }, {
        "value" : "LOG"
      }, {
        "value" : "INT"
      }, {
        "value" : "UINT"
      }, {
        "value" : "DOUBLE_ARRAY"
      }, {
        "value" : "STRING_ARRAY"
      }, {
        "value" : "STRUCT"
      }, {
        "value" : "VIDEO"
      } ],
      "docs" : "The data types that are available for querying.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SeriesMetadataRid",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SetOperator",
        "package" : "io.nominal.api"
      },
      "values" : [ {
        "value" : "AND"
      }, {
        "value" : "OR"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SuccessResult",
        "package" : "io.nominal.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TagName",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TagValue",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimeUnit",
        "package" : "io.nominal.api"
      },
      "values" : [ {
        "value" : "DAYS"
      }, {
        "value" : "HOURS"
      }, {
        "value" : "MINUTES"
      }, {
        "value" : "SECONDS"
      }, {
        "value" : "MILLISECONDS"
      }, {
        "value" : "MICROSECONDS"
      }, {
        "value" : "NANOSECONDS"
      }, {
        "value" : "PICOSECONDS"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Timestamp",
        "package" : "io.nominal.api"
      },
      "fields" : [ {
        "fieldName" : "seconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "nanos",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "picos",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ],
      "docs" : "Picosecond precision timestamp type, represented by an epoch time in seconds, a nanosecond offset, and\noptional picosecond offset.\nThe nanosecond offset is from the start of the epoch second, so must be less than 1 billion.\nThe optional picosecond offset is only used for picosecond-precision data sources and is from the start of\nthe nanosecond, so must be less than 1000.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Token",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "Tokens are used with paginated requests to get the next \"page\" of results\nfrom an API, and typically are used as both part of the request and response\nschema of an endpoint to allow users to stream pages of results.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Unit",
        "package" : "io.nominal.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "WorkspaceId",
        "package" : "io.nominal.api.ids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "Unique identifier for an Workspace. These are unique within an organization.\nThe workspace ID must be lower case alphanumeric characters, optionally separated by hyphens.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "AiConversationRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an ongoing thread of conversation with the Nominal LLM Agent.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "AttachmentRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an Attachment\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an AutomaticCheckEvaluation.\nThis is used to identify the evaluation of a check that was automatically triggered.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ChunkRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Chunk\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ConnectAppRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Connect App.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DataConnectorRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Data Connector.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DataSourceRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a DataSource.\nTypically, this is used to refer to the datasource for which a channel is associated,\nalmost always in reference to either a dataset or a connection.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DatasetRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Dataset\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "EdgeSyncSourceRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an Edge Sync.\nThis is any resource type that's supported for edge syncs and represents the edge version of the resource.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "EdgeSyncTargetRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an Edge Sync.\nThis is any resource type that's supported for edge syncs and represents the data center version of the\nresource.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "EventRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an Event.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "NominalDataSourceOrDatasetRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a NominalDataSource or Dataset.\nThough named similarly to a DataSourceRid, a NominalDataSourceRid specifically refers To\na NominalDataSource, which is a nominal hosted database for streaming writes.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "NominalDataSourceRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a NominalDataSource.\nThough named similarly to a DataSourceRid, a NominalDataSourceRid specifically refers To\na NominalDataSource, which is a nominal hosted database for streaming writes.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ProcedureExecutionRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Procedure Execution.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ProcedureRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Procedure.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SegmentRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Video Segment\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "StreamingConnectionRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Streaming Connection.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "VideoFileRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Video file\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "VideoRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Video\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "WorkspaceRid",
        "package" : "io.nominal.api.rids"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Workspace.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Attachment",
        "package" : "io.nominal.attachments.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "s3Path",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Path",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "fileType",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AttachmentUri",
        "package" : "io.nominal.attachments.api"
      },
      "fields" : [ {
        "fieldName" : "uri",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Pre-signed URI that will download the attachment directly from S3.\nExpires if the download has not started in 1 minute.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateAttachmentRequest",
        "package" : "io.nominal.attachments.api"
      },
      "fields" : [ {
        "fieldName" : "s3Path",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Path",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the attachment. If not provided, the attachment will be created in\nthe default workspace for the user's organization, if the default workspace for the\norganization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAttachmentsRequest",
        "package" : "io.nominal.attachments.api"
      },
      "fields" : [ {
        "fieldName" : "attachmentRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAttachmentsResponse",
        "package" : "io.nominal.attachments.api"
      },
      "fields" : [ {
        "fieldName" : "response",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Attachment",
                "package" : "io.nominal.attachments.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchAttachmentsQuery",
        "package" : "io.nominal.attachments.api"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchAttachmentsQuery",
                "package" : "io.nominal.attachments.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchAttachmentsQuery",
                "package" : "io.nominal.attachments.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateAttachmentRequest",
        "package" : "io.nominal.attachments.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "AppearanceSetting",
        "package" : "io.nominal.authentication.api"
      },
      "values" : [ {
        "value" : "SYSTEM"
      }, {
        "value" : "LIGHT"
      }, {
        "value" : "DARK"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "DefaultTimeRangeTypeSetting",
        "package" : "io.nominal.authentication.api"
      },
      "values" : [ {
        "value" : "DEFAULT"
      }, {
        "value" : "ABSOLUTE"
      }, {
        "value" : "RELATIVE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GenerateMediaMtxTokenRequest",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "permissions",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MediaMtxPermission",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        },
        "docs" : "List of permissions to include in the token"
      } ],
      "docs" : "Request to generate a MediaMTX authentication token"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GenerateMediaMtxTokenResponse",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "token",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The signed JWT token for MediaMTX authentication"
      } ],
      "docs" : "Response containing the generated MediaMTX token"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Jwk",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "kty",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "kid",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "use",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "alg",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "n",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "e",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "A JSON Web Key (JWK) representation for RSA public keys"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Jwks",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "keys",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Jwk",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      } ],
      "docs" : "A JSON Web Key Set (JWKS) containing one or more keys"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MediaMtxPermission",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "action",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The action permitted. Allowed values are publish, read, playback, api, metrics, pprof."
      }, {
        "fieldName" : "path",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The stream path this permission applies to (e.g., \"stream/test\")"
      } ],
      "docs" : "A permission definition for MediaMTX authentication"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "OrgRid",
        "package" : "io.nominal.authentication.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an Organization.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OrgSettings",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "defaultTimeRangeType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DefaultTimeRangeTypeSetting",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchUsersQuery",
        "package" : "io.nominal.authentication.api"
      },
      "union" : [ {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchUsersQuery",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchUsersQuery",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Performs case insensitive exact match on email"
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Searches email and display name"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchUsersRequest",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchUsersQuery",
            "package" : "io.nominal.authentication.api"
          }
        }
      }, {
        "fieldName" : "sortBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortBy",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        },
        "docs" : "UPDATED_AT descending by default"
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1_000."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchUsersResponseV2",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserV2",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortBy",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortByField",
            "package" : "io.nominal.authentication.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortByField",
        "package" : "io.nominal.authentication.api"
      },
      "values" : [ {
        "value" : "NAME"
      }, {
        "value" : "EMAIL"
      }, {
        "value" : "CREATED_AT"
      }, {
        "value" : "UPDATED_AT"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimezoneSetting",
        "package" : "io.nominal.authentication.api"
      },
      "values" : [ {
        "value" : "LOCAL"
      }, {
        "value" : "UTC"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateMyProfileRequest",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "displayName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "UserRid",
        "package" : "io.nominal.authentication.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UserSettings",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "defaultTimeRangeType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DefaultTimeRangeTypeSetting",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "appearance",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AppearanceSetting",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "timezone",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimezoneSetting",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "timeSeriesHoverTooltipConcise",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UserV2",
        "package" : "io.nominal.authentication.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.authentication.api"
          }
        }
      }, {
        "fieldName" : "orgRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OrgRid",
            "package" : "io.nominal.authentication.api"
          }
        }
      }, {
        "fieldName" : "email",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "displayName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "avatarUrl",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Avatar URL or a default avatar if the user does not have one."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ApiKey",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiKeyRid",
            "package" : "io.nominal.authorization"
          }
        }
      }, {
        "fieldName" : "apiKeyName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "expiresAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        }
      }, {
        "fieldName" : "isDeleted",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ApiKeyRid",
        "package" : "io.nominal.authorization"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AuthorizationRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Claim",
        "package" : "io.nominal.authorization"
      },
      "union" : [ {
        "fieldName" : "string",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "stringList",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateApiKeyRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "apiKeyName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The name of the API key to create.\n"
      }, {
        "fieldName" : "expiresAfterDays",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        },
        "docs" : "The number of days after which the API key will expire.\nIf omitted, the API key will not expire.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateApiKeyResponse",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "apiKeyMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiKey",
            "package" : "io.nominal.authorization"
          }
        }
      }, {
        "fieldName" : "apiKeyValue",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAccessTokenFromApiKeyRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "apiKeyValue",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAccessTokenRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "idToken",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "We accept an OIDC ID token issued by a trusted identity provider as proof of authentication.\nThe ID token is validated and exchanged for a Nominal access token.\nThis ID token should generally be short lived since it is fungible with a Nominal access token\nvia this endpoint.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAccessTokenResponse",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "accessToken",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "expiresAtSeconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "userUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "orgUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IsEmailAllowedRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "email",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IsEmailAllowedResponse",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "allowed",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListApiKeyRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "includeDeleted",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, include deleted API keys in the response. Defaults to false.\n"
      }, {
        "fieldName" : "includeExpired",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, include expired API keys in the response. Defaults to false.\n"
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum number of API keys to return. Defaults to 100.\n"
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListApiKeyResponse",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "apiKeys",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ApiKey",
                "package" : "io.nominal.authorization"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OktaRegistrationEventData",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "userProfile",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OktaRegistrationUserProfile",
            "package" : "io.nominal.authorization"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OktaRegistrationRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "requestType",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "data",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OktaRegistrationEventData",
            "package" : "io.nominal.authorization"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OktaRegistrationResponse",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "commands",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OktaUpdateActionCommand",
                "package" : "io.nominal.authorization"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "OktaRegistrationStatus",
        "package" : "io.nominal.authorization"
      },
      "values" : [ {
        "value" : "ALLOW"
      }, {
        "value" : "DENY"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OktaRegistrationUserProfile",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "email",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OktaUpdateActionCommand",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "type",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OktaUpdateActionValue",
            "package" : "io.nominal.authorization"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OktaUpdateActionValue",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "registration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OktaRegistrationStatus",
            "package" : "io.nominal.authorization"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RegisterInWorkspaceRequest",
        "package" : "io.nominal.authorization"
      },
      "fields" : [ {
        "fieldName" : "resourceRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        }
      }, {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Comment",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "Unique resource identifier for the comment\n"
      }, {
        "fieldName" : "parent",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentParent",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "The parent of the comment. It can be a resource or another comment.\n"
      }, {
        "fieldName" : "authorRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "docs" : "The user who authored the comment\n"
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "The time the comment was created\n"
      }, {
        "fieldName" : "editedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "The time the comment was edited. Empty if the comment has not been edited.\n"
      }, {
        "fieldName" : "deletedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "The time the comment was deleted. Empty if the comment has not been deleted.\n"
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The markdown content of the comment.\n"
      }, {
        "fieldName" : "pinnedBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        },
        "docs" : "The user who pinned the comment. Empty if the comment is not pinned.\n"
      }, {
        "fieldName" : "pinnedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "The time the comment was pinned. Empty if the comment is not pinned.\n"
      }, {
        "fieldName" : "reactions",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Reaction",
                "package" : "io.nominal.comments.api"
              }
            }
          }
        },
        "docs" : "The reactions on the comment\n"
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The comment's attachments\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CommentParent",
        "package" : "io.nominal.comments.api"
      },
      "union" : [ {
        "fieldName" : "resource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentParentResource",
            "package" : "io.nominal.comments.api"
          }
        }
      }, {
        "fieldName" : "comment",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentParentComment",
            "package" : "io.nominal.comments.api"
          }
        }
      } ],
      "docs" : "The parent of a comment. It can be a resource or another comment in the case of a reply.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CommentParentComment",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "The resource identifier for the comment that the comment is replying to\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CommentParentResource",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "resourceType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResourceType",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "The type of resource that the comment is associated with\n"
      }, {
        "fieldName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "docs" : "The resource identifier for the resource that the comment is associated with. For example, a run or a workbook.\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "CommentRid",
        "package" : "io.nominal.comments.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Conversation",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "docs" : "RID for the resource that the conversation is associated with.\n"
      }, {
        "fieldName" : "resourceType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResourceType",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "The type of the resource that the conversation is associated with.\n"
      }, {
        "fieldName" : "comments",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ConversationNode",
                "package" : "io.nominal.comments.api"
              }
            }
          }
        },
        "docs" : "The comments on the conversation ordered by creation time.\nEmpty if the comment has no replies.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ConversationNode",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Comment",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "The comment\n"
      }, {
        "fieldName" : "replies",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ConversationNode",
                "package" : "io.nominal.comments.api"
              }
            }
          }
        },
        "docs" : "The comments on (aka replies to) the comment ordered by creation time. Empty if the comment has no replies.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateCommentRequest",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "parent",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentParent",
            "package" : "io.nominal.comments.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The content of the comment. Markdown supported.\n"
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "Attachments to the comment.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EditCommentRequest",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "content",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The content of the comment. Markdown supported.\n"
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "Attachments to the comment.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Reaction",
        "package" : "io.nominal.comments.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReactionRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "Unique resource identifier for the reaction\n"
      }, {
        "fieldName" : "userRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "docs" : "The user who authored the reaction\n"
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "The time the reaction was created\n"
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReactionType",
            "package" : "io.nominal.comments.api"
          }
        },
        "docs" : "The type of reaction\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ReactionRid",
        "package" : "io.nominal.comments.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ReactionType",
        "package" : "io.nominal.comments.api"
      },
      "values" : [ {
        "value" : "LIKE"
      }, {
        "value" : "DISLIKE"
      }, {
        "value" : "HEART"
      }, {
        "value" : "HOORAY"
      }, {
        "value" : "ROCKET"
      }, {
        "value" : "EYES"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ResourceType",
        "package" : "io.nominal.comments.api"
      },
      "values" : [ {
        "value" : "RUN"
      }, {
        "value" : "EVENT"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Platform",
        "package" : "io.nominal.connect.download"
      },
      "values" : [ {
        "value" : "WINDOWS"
      }, {
        "value" : "UBUNTU"
      }, {
        "value" : "MACOS"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DatasetFileId",
        "package" : "io.nominal.datasource"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimestampType",
        "package" : "io.nominal.datasource"
      },
      "values" : [ {
        "value" : "RELATIVE"
      }, {
        "value" : "ABSOLUTE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetChannelPrefixTreeRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "dataScopeFilters",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataScopeFilters",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        },
        "docs" : "When dataScopeFilters are specified, the set of data sources must match the set of data sources in\nDataScopeFilters#tags\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetChannelPrefixTreeResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "channelPrefixTrees",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelPrefixTree",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      } ],
      "docs" : "If the tree for a data source has not been indexed, it will be omitted from the map.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetDataScopeBoundsRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GetDataScopeBoundsRequest",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetDataScopeBoundsResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GetDataScopeBoundsResponse",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelMetadata",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "dataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesDataType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "seriesRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesMetadataRidOrLogicalSeriesRid",
            "package" : "io.nominal.datasource.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChannelOrPrefix",
        "package" : "io.nominal.datasource.api"
      },
      "union" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelMetadata",
            "package" : "io.nominal.datasource.api"
          }
        }
      }, {
        "fieldName" : "prefix",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourcePrefixNode",
            "package" : "io.nominal.datasource.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelPrefixTree",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "roots",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelPrefixTreeNode",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "delimiter",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelPrefixTreeNode",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "part",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Should be combined with the ancestor parts and the delimiter to form the full prefix."
      }, {
        "fieldName" : "children",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelPrefixTreeNode",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelWithAvailableTags",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "availableTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "A set of tag keys and their values given the initial set of filters. The initial tag filters\nwill be included in the map with their corresponding values.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelWithTagFilters",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tagFilters",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataScopeFilters",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "For each data source specified as a key, search will only return channels containing a superset of the \ntags specified for that given datasource.\n"
      }, {
        "fieldName" : "minDataUpdatedTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "Will only return channels that have had new data after the specified time.\n"
      }, {
        "fieldName" : "maxDataStartTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "Will only return channels that have data before the specified time.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataSourcePrefixNode",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "part",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Should be combined with the ancestor parts and the delimiter to form the full prefix."
      }, {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAvailableTagKeysRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "filters",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagSearchFilters",
            "package" : "io.nominal.datasource.api"
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAvailableTagKeysResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAvailableTagValuesRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "filters",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagSearchFilters",
            "package" : "io.nominal.datasource.api"
          }
        }
      }, {
        "fieldName" : "tagName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 1000. Will throw if larger than 10000."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAvailableTagValuesResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAvailableTagsForChannelRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "channelWithTagFilters",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelWithTagFilters",
            "package" : "io.nominal.datasource.api"
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAvailableTagsForChannelResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "availableTags",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelWithAvailableTags",
            "package" : "io.nominal.datasource.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetDataScopeBoundsRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetDataScopeBoundsResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "If missing, the end bound is not known definitively. This can happen if the\ndata scope corresponds to an external database or its data was not updated in the last month.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetTagValuesForDataSourceRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "tagKeys",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "If empty, returns all available tag keys."
      }, {
        "fieldName" : "range",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "For Nominal data sources, a time range can be provided to filter tag values to those present within the \nmonths spanned by the range. If left empty, this defaults to the last month. For external data sources, \nthe range must not be specified, as all tag values are returned.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IndexChannelPrefixTreeRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "delimiter",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchChannelsRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "fuzzySearchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "prefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "deprecated" : "Use `searchHierarchical` instead. Will be ignored.\n"
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Will return only channels that contain all strings specified as exact matches (case insensitive).\n"
      }, {
        "fieldName" : "dataSources",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "previouslySelectedChannels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRid",
                    "package" : "io.nominal.api.rids"
                  }
                },
                "valueType" : {
                  "type" : "set",
                  "set" : {
                    "itemType" : {
                      "type" : "reference",
                      "reference" : {
                        "name" : "Channel",
                        "package" : "io.nominal.api"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Will be ignored.\n"
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 1000. Will throw if larger than 1000."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchChannelsResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelMetadata",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchFilteredChannelsRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "substrings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "All of the strings in the set must appear exactly as substrings within the channel name.\n"
      }, {
        "fieldName" : "subsequences",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "All of the characters in the string will appear in the same order (not necessarily adjacently)\nwithin the channel name. Only supports one subsequence to match at this time.\n"
      }, {
        "fieldName" : "dataSources",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "resultSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 200. Will throw if larger than 200."
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "For each data source specified as a key, search will only return channels containing a superset of the \ntags specified for that given datasource. If a data source is present in the dataSources field but not\nin this map, or if a data source points to an empty map of tags, it will be searched without tag filters.\n"
      }, {
        "fieldName" : "minDataUpdatedTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "If specified, search will only return channels that have had new data after the specified time.\n"
      }, {
        "fieldName" : "maxDataStartTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "If specified, search will only return channels that have data before the specified time.\n"
      }, {
        "fieldName" : "previouslySelectedChannels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRid",
                    "package" : "io.nominal.api.rids"
                  }
                },
                "valueType" : {
                  "type" : "set",
                  "set" : {
                    "itemType" : {
                      "type" : "reference",
                      "reference" : {
                        "name" : "Channel",
                        "package" : "io.nominal.api"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Will be ignored.\n"
      }, {
        "fieldName" : "fuzzySearchText",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "deprecated" : "Try subsequence search instead.\n"
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "Will return only channels that contain all strings specified as exact matches (case insensitive).\n",
        "deprecated" : "Try substring search instead.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchFilteredChannelsResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelMetadata",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchHierarchicalChannelsRequest",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "parent",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "The parent (represented as a list of parts) to search under. If empty, will return all top-level channels."
      }, {
        "fieldName" : "dataSources",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "dataScopeFilters",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataScopeFilters",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        },
        "docs" : "When dataScopeFilters are specified, the set of data sources must match the set of data sources in\nDataScopeFilters#tags\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchHierarchicalChannelsResponse",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelOrPrefix",
                "package" : "io.nominal.datasource.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SeriesMetadataRidOrLogicalSeriesRid",
        "package" : "io.nominal.datasource.api"
      },
      "union" : [ {
        "fieldName" : "seriesArchetype",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesMetadataRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "logicalSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TagSearchFilters",
        "package" : "io.nominal.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Channel",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Optional, defaults to all channels in datasource.\n"
      }, {
        "fieldName" : "tagFilters",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Optional, defaults to no tag filter.\n"
      }, {
        "fieldName" : "range",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Optional, defaults to no range filter.\n"
      } ],
      "docs" : "Filters to use when searching for available tag names and values in paged endpoints.\nAll filters are optional.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AttachLogsAndFinalizeRequest",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "logs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Log",
                "package" : "io.nominal.datasource.logset.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BasicLogBody",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "A largely unopinionated but very flexible format.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateLogSetRequest",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampType",
            "package" : "io.nominal.datasource"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the logset. If not provided, the logset will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Log",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "time",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "body",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogBody",
            "package" : "io.nominal.datasource.logset.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LogBody",
        "package" : "io.nominal.datasource.logset.api"
      },
      "union" : [ {
        "fieldName" : "basic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BasicLogBody",
            "package" : "io.nominal.datasource.logset.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "LogFormat",
        "package" : "io.nominal.datasource.logset.api"
      },
      "values" : [ {
        "value" : "V1"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LogHandle",
        "package" : "io.nominal.datasource.logset.api"
      },
      "union" : [ {
        "fieldName" : "s3",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3LogHandle",
            "package" : "io.nominal.datasource.logset.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogSetMetadata",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSetRid",
            "package" : "io.nominal.datasource.logset.api"
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "logCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampType",
            "package" : "io.nominal.datasource"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LogSetRid",
        "package" : "io.nominal.datasource.logset.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "S3LogHandle",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "path",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "format",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogFormat",
            "package" : "io.nominal.datasource.logset.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchLogSetsRequest",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum allowed page size is 1000. Defaults to the maximum if not supplied."
      }, {
        "fieldName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "If supplied, will return only the log sets within the supplied workspaces. If empty\nwill return all connections for workspaces that the user is permitted to see.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchLogSetsResponse",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogSetMetadata",
                "package" : "io.nominal.datasource.logset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchLogsRequest",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum allowed page size is 10000. Defaults to the maximum if not supplied."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchLogsResponse",
        "package" : "io.nominal.datasource.logset.api"
      },
      "fields" : [ {
        "fieldName" : "logs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Log",
                "package" : "io.nominal.datasource.logset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PageRequest",
        "package" : "io.nominal.datasource.pagination.api"
      },
      "fields" : [ {
        "fieldName" : "pageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PageToken",
                "package" : "io.nominal.datasource.pagination.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PageResponse",
        "package" : "io.nominal.datasource.pagination.api"
      },
      "fields" : [ {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PageToken",
                "package" : "io.nominal.datasource.pagination.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "PageToken",
        "package" : "io.nominal.datasource.pagination.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "A token that can be used to retrieve the next page of results. This token is intentionally a string to\nallow paging based on a variety of different criteria.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AggregateEventsRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "aggregateTypes",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AggregateType",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AggregateEventsResponse",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "values",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AggregateType",
                "package" : "io.nominal.event"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AggregateValue",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "AggregateType",
        "package" : "io.nominal.event"
      },
      "values" : [ {
        "value" : "TOTAL_DURATION"
      }, {
        "value" : "TOTAL_COUNT"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AggregateValue",
        "package" : "io.nominal.event"
      },
      "union" : [ {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ApiEventOrigin",
        "package" : "io.nominal.event"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArchiveEvent",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "uuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetsFilter",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetOperator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssigneesFilter",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetOperator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "assignees",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchAggregateEventsRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AggregateEventsRequest",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchAggregateEventsResponse",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AggregateEventsResponse",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateDispositionRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateDispositionRequest",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateDispositionResponse",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "events",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Event",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateEventRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateEventRequest",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateEventResponse",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "events",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Event",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckOriginMetadata",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "checkEvaluationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkLineageRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckLineageRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "implementationIndex",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateEvent",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "Must contain at least one asset rid."
      }, {
        "fieldName" : "origins",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventOrigin",
                "package" : "io.nominal.event"
              }
            }
          }
        },
        "docs" : "If empty, will default to set<EventOrigin.api>."
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "If not provided, will default to an empty string."
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventType",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "disposition",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventDisposition",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReviewChecksFilter",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "dataReviewChecks",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReviewEventOrigin",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckOriginMetadata",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "Metadata about the check that created this event.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReviewsFilter",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "dataReviews",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataReviewRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Event",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "uuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "deprecated" : "This field is deprecated. Use the rid field instead.\n"
      }, {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "A set of asset rids associated with the event.\n"
      }, {
        "fieldName" : "origins",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventOrigin",
                "package" : "io.nominal.event"
              }
            }
          }
        },
        "docs" : "A set of origins associated with the event.\n"
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventType",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "The user who created the event.\nThis field may be missing for legacy events.\n"
      }, {
        "fieldName" : "disposition",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventDisposition",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventDisposition",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Priority",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "state",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DispositionState",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "assignees",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ],
      "docs" : "Describes the review status for an event.\nThis is used to track the disposition status of an event.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EventDispositionStatus",
        "package" : "io.nominal.event"
      },
      "values" : [ {
        "value" : "PENDING_REVIEW"
      }, {
        "value" : "CLOSED_IGNORED"
      }, {
        "value" : "CLOSED_REQUIRES_FURTHER_ACTION"
      }, {
        "value" : "NO_DISPOSITION"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EventOrigin",
        "package" : "io.nominal.event"
      },
      "union" : [ {
        "fieldName" : "workbook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookEventOrigin",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "This event was created in this workbook"
      }, {
        "fieldName" : "template",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateEventOrigin",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "This event was created in this template"
      }, {
        "fieldName" : "api",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiEventOrigin",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "This event was created programmatically via the API"
      }, {
        "fieldName" : "dataReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewEventOrigin",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "This event was created automatically from a checklist execution."
      }, {
        "fieldName" : "procedure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureEventOrigin",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "This event was created automatically from a procedure execution."
      }, {
        "fieldName" : "streamingChecklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StreamingChecklistEventOrigin",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "This event was created automatically from the execution of a streaming checklist."
      } ],
      "docs" : "Describes where an event came from."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventTimeFilter",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "timestampCondition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventTimeFilterCondition",
            "package" : "io.nominal.event"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EventTimeFilterCondition",
        "package" : "io.nominal.event"
      },
      "values" : [ {
        "value" : "START_TIME_BEFORE_INCLUSIVE"
      }, {
        "value" : "START_TIME_BEFORE_EXCLUSIVE"
      }, {
        "value" : "START_TIME_AFTER_INCLUSIVE"
      }, {
        "value" : "START_TIME_AFTER_EXCLUSIVE"
      }, {
        "value" : "END_TIME_BEFORE_INCLUSIVE"
      }, {
        "value" : "END_TIME_BEFORE_EXCLUSIVE"
      }, {
        "value" : "END_TIME_AFTER_INCLUSIVE"
      }, {
        "value" : "END_TIME_AFTER_EXCLUSIVE"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EventType",
        "package" : "io.nominal.event"
      },
      "values" : [ {
        "value" : "INFO"
      }, {
        "value" : "FLAG"
      }, {
        "value" : "ERROR"
      }, {
        "value" : "SUCCESS"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventsHistogramBucket",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "startInclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endExclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventsHistogramRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "startInclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endExclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "filterQuery",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramFilterQuery",
                "package" : "io.nominal.event"
              }
            }
          }
        },
        "docs" : "The query to filter the events to be included in the histogram.\n"
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Filters search on check alerts based on the archived statuses provided. \nDefault is NOT_ARCHIVED only if none are provided.\n"
      }, {
        "fieldName" : "numBins",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Throws if larger than 1_000.\nThe resulting histogram may have fewer bins than requested if the requested time window is too small.\n"
      }, {
        "fieldName" : "eventLimit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Limits the number of events to be included in the histogram.\nDefaults to 1_000. Throws if larger than 10_000.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventsHistogramResponse",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventsHistogramBucket",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetEvents",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "uuids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "HistogramFilterQuery",
        "package" : "io.nominal.event"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "template",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "workbook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "dataReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "originType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchEventOriginType",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "dataReviewCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "dispositionStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventDispositionStatus",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Priority",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "assignee",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "eventType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventType",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramFilterQuery",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramFilterQuery",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramFilterQuery",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "procedure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "procedureExecution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureExecutionRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "stepId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListPropertiesAndLabelsRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "workspaces",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "WorkspaceRid",
                    "package" : "io.nominal.api.rids"
                  }
                }
              }
            }
          }
        },
        "docs" : "If omitted, results will come from all workspaces the user belongs to."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OriginTypesFilter",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetOperator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "originTypes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchEventOriginType",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ProcedureEventOrigin",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "procedureExecutionRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureExecutionRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "procedureRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "stepId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SearchEventOriginType",
        "package" : "io.nominal.event"
      },
      "values" : [ {
        "value" : "WORKBOOK"
      }, {
        "value" : "TEMPLATE"
      }, {
        "value" : "API"
      }, {
        "value" : "DATA_REVIEW"
      }, {
        "value" : "PROCEDURE"
      }, {
        "value" : "STREAMING_CHECKLIST"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchEventsRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortOptions",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Will reject page sizes greater than 10k."
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Default search status is NOT_ARCHIVED if none are provided. Allows for including archived events in search."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchEventsResponse",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Event",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchQuery",
        "package" : "io.nominal.event"
      },
      "union" : [ {
        "fieldName" : "archived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "after",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Filters to events after this timestamp, exclusive.\nThis includes events that start before, but end after this time.\n"
      }, {
        "fieldName" : "before",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Filters to events before this timestamp, exclusive.\nThis includes events that start before, but end after this time.\n"
      }, {
        "fieldName" : "advancedTimeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventTimeFilter",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "deprecated" : "use assetRids"
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetsFilter",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "template",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "workbook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "dataReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "deprecated" : "use dataReviews instead"
      }, {
        "fieldName" : "dataReviews",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewsFilter",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "originType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchEventOriginType",
            "package" : "io.nominal.event"
          }
        },
        "deprecated" : "use originTypes instead"
      }, {
        "fieldName" : "originTypes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OriginTypesFilter",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "dataReviewCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "deprecated" : "use dataReviewChecks instead"
      }, {
        "fieldName" : "dataReviewChecks",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewChecksFilter",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "dispositionStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventDispositionStatus",
            "package" : "io.nominal.event"
          }
        },
        "deprecated" : "use dispositionStatuses instead"
      }, {
        "fieldName" : "dispositionStatuses",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventDispositionStatus",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Priority",
            "package" : "io.nominal.scout.api"
          }
        },
        "deprecated" : "use priorities instead"
      }, {
        "fieldName" : "priorities",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Priority",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assignee",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "deprecated" : "use assignees instead"
      }, {
        "fieldName" : "assignees",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssigneesFilter",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "eventType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventType",
            "package" : "io.nominal.event"
          }
        },
        "deprecated" : "use eventTypes instead"
      }, {
        "fieldName" : "eventTypes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventType",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdByAnyOf",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use labels instead"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LabelsFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use properties instead"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertiesFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchQuery",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchQuery",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "procedure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "procedureExecution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureExecutionRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "stepId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "streamingChecklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "docs" : "Filters to events created from a checklist executing in streaming.\nUse `assets` to further filter to a specific streaming checklist instance.\n"
      }, {
        "fieldName" : "streamingCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "docs" : "Filters to events created from the check of a checklist executing in streaming.\nUse `assets` to further filter to a specific streaming checklist instance.\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortField",
        "package" : "io.nominal.event"
      },
      "values" : [ {
        "value" : "START_TIME"
      }, {
        "value" : "END_TIME"
      }, {
        "value" : "DURATION"
      }, {
        "value" : "DISPOSITION_STATUS"
      }, {
        "value" : "PRIORITY"
      }, {
        "value" : "EVENT_NAME"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortOptions",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortField",
            "package" : "io.nominal.event"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingCheckOriginMetadata",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkLineageRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckLineageRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "implementationIndex",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingChecklistEventOrigin",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StreamingCheckOriginMetadata",
            "package" : "io.nominal.event"
          }
        },
        "docs" : "Metadata about the check that created this event.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TemplateEventOrigin",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesChannelAssociation",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                },
                "valueType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "If this variable is grouped, the tags within the groupings this event should associate with\n"
      } ],
      "docs" : "A singular time series to associate the event with.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateDispositionRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "disposition",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventDisposition",
                "package" : "io.nominal.event"
              }
            }
          }
        },
        "docs" : "The new disposition for the event.\nIf empty, will remove the disposition from the event.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateEvent",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "uuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "deprecated" : "This field is deprecated. Use the rid field instead.\n"
      }, {
        "fieldName" : "rid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The unique identifier for the event.\nThis field is required if the uuid field is not provided.\n"
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "If provided, will replace the existing asset rids.\nIf provided, must contain at least one asset rid.\n"
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventType",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateEventRequest",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "If provided, will replace the existing asset rids.\nIf provided, must contain at least one asset rid.\n"
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventType",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "WorkbookDataAssociation",
        "package" : "io.nominal.event"
      },
      "union" : [ {
        "fieldName" : "timeSeriesChannel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesChannelAssociation",
            "package" : "io.nominal.event"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookEventOrigin",
        "package" : "io.nominal.event"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "data",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "WorkbookDataAssociation",
                    "package" : "io.nominal.event"
                  }
                }
              }
            }
          }
        },
        "docs" : "Data visualizations to associate this event with\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AbsoluteTimestamp",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "iso8601",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Iso8601Timestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "epochOfTimeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EpochTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "customFormat",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CustomTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AsyncHandle",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Authentication",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "userAndPassword",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserAndPasswordAuthentication",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "public",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PublicAuthentication",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ],
      "docs" : "Authentication methods for Docker registries.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AvroStreamOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ],
      "docs" : "Options for ingesting Avro data with the following schema. This is a \"stream-like\" file format to support\nuse cases where a columnar/tabular format does not make sense. This closely matches Nominal's streaming\nAPI, making it useful for use cases where network connection drops during streaming and a backup file needs\nto be created.\n\nIf this schema is not used, will result in a failed ingestion.\n{\n    \"type\": \"record\",\n    \"name\": \"AvroStream\",\n    \"namespace\": \"io.nominal.ingest\",\n    \"fields\": [\n        {\n            \"name\": \"channel\",\n            \"type\": \"string\",\n            \"doc\": \"Channel/series name (e.g., 'vehicle_id', 'col_1', 'temperature')\",\n        },\n        {\n            \"name\": \"timestamps\",\n            \"type\": {\"type\": \"array\", \"items\": \"long\"},\n            \"doc\": \"Array of Unix timestamps in nanoseconds\",\n        },\n        {\n            \"name\": \"values\",\n            \"type\": {\"type\": \"array\", \"items\": [\"double\", \"string\"]},\n            \"doc\": \"Array of values. Can either be doubles or strings\",\n        },\n        {\n            \"name\": \"tags\",\n            \"type\": {\"type\": \"map\", \"values\": \"string\"},\n            \"default\": {},\n            \"doc\": \"Key-value metadata tags\",\n        },\n    ],\n}\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelConfig",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "prefixTreeDelimiter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "If set, will construct a prefix tree for channels of the dataset using the given delimiter."
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ChannelPrefix",
        "package" : "io.nominal.ingest.api"
      },
      "alias" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          }
        }
      },
      "docs" : "A string to prefix before every channel name in this file. Defaults to no prefix."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CompleteMultipartUploadResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "location",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ContainerizedExtractor",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ContainerizedExtractorRid",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "Unique resource identifier for the extractor.\n"
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The name of the extractor as defined by the user.\n"
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Optional description of the extractor.\n"
      }, {
        "fieldName" : "image",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DockerImageSource",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "Container image used to run the extractor.\n"
      }, {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileExtractionInput",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "The input files that this extractor requires, mapped to environment variables that store the path to the file.\n"
      }, {
        "fieldName" : "parameters",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileExtractionParameter",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "Describes the parameters of the extractor."
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Additional properties associated with this extractor.\n"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Set of labels applied to this extractor.\n"
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "Timestamp when this extractor was created.\n"
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether this extractor is archived.\n"
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampMetadata",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "Metadata about the intermediate parquet this extractor will produce\n"
      }, {
        "fieldName" : "outputFileFormat",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FileOutputFormat",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "The format of the output file. Currently only \"parquet\", \"csv\", \"parquet.tar\" are supported\n"
      } ],
      "docs" : "Represents a containerized extractor that processes input files using a container.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ContainerizedExtractorRid",
        "package" : "io.nominal.ingest.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ContainerizedOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "sources",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnvironmentVariable",
                "package" : "io.nominal.ingest.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestSource",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "arguments",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnvironmentVariable",
                "package" : "io.nominal.ingest.api"
              }
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "extractorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ContainerizedExtractorRid",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "tag",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateIngestJobRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "ingestJobRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRequest",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ],
      "docs" : "Request to create a new ingest job.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CsvOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampMetadata",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "channelPrefix",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelPrefix",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "tagKeysFromColumns",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Deprecated in favor of tagColumns."
      }, {
        "fieldName" : "tagColumns",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "A map of tag names to column names to derive the tag values from.\n"
      }, {
        "fieldName" : "additionalFileTags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Specifies a tag set to apply to all data in the file."
      } ],
      "docs" : "Options for ingesting csv files.  Supported file formats include .csv, .csv.gz\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CustomTimestamp",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "format",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The format string should be in the format of the `DateTimeFormatter` class in Java."
      }, {
        "fieldName" : "defaultYear",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Default year is accepted as an optional field for cases like IRIG time format and will be overridden by year in time format."
      }, {
        "fieldName" : "defaultDayOfYear",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format."
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DataSourceRefName",
        "package" : "io.nominal.ingest.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataflashOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "additionalFileTags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Specifies a tag set to apply to all data in the file."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DatasetIngestTarget",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "new",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NewDatasetIngestDestination",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "existing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExistingDatasetIngestDestination",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DatasetSpec",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DeprecatedNewCsv",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "timeColumnSpec",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "channelConfig",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelConfig",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DeprecatedNewDataSource",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "csv",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DeprecatedNewCsv",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DockerImageSource",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "registry",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The container registry where the image is hosted.\n"
      }, {
        "fieldName" : "repository",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The repository name of the image.\n"
      }, {
        "fieldName" : "tagDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagDetails",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "authentication",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Authentication",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "Optional authentication for accessing private container registries.\n"
      }, {
        "fieldName" : "command",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ],
      "docs" : "Docker container image source definition.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "EnvironmentVariable",
        "package" : "io.nominal.ingest.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "Name of an environment variable to be passed to the container during extraction.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EpochTimestamp",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExistingDatasetIngestDestination",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "expandRunBounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "RunRid",
                    "package" : "io.nominal.scout.run.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "The ingest will keep track of the range of timestamps in the ingested data and update the included\nrun's time bounds.\nFor runs with no end time (uninitialized), it will always set the start time to the file's start time\nand set the end time to the file's end time.\nFor runs with existing end times, it will only expand the bounds (earliest start time, latest end time).\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExistingVideoIngestDestination",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "docs" : "RID of the video to ingest the newly created video file to."
      }, {
        "fieldName" : "videoFileDetails",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileIngestDetails",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "Metadata to associate with any created video file"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FileExtractionInput",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "environmentVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnvironmentVariable",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "The environment variable that stores the path to the input file.\n"
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Name of the input file which users will be prompted with"
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Description of the input file which users will be prompted with"
      }, {
        "fieldName" : "fileFilters",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileFilter",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "Optionally filter files for file selection\n"
      }, {
        "fieldName" : "required",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Whether the input file is required for the extractor to run."
      } ],
      "docs" : "Defines an input file to be provided to the extractor.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FileExtractionParameter",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "environmentVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnvironmentVariable",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "The environment variable that stores the argument\n"
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Name of the parameter which users will be prompted with"
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Description of the parameter which users will be prompted with"
      }, {
        "fieldName" : "required",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Whether the parameter is required for the extractor to run."
      } ],
      "docs" : "Defines an input parameter to be provided to the extractor.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FileFilter",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "suffix",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FileSuffix",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "FileOutputFormat",
        "package" : "io.nominal.ingest.api"
      },
      "values" : [ {
        "value" : "PARQUET"
      }, {
        "value" : "CSV"
      }, {
        "value" : "PARQUET_TAR"
      }, {
        "value" : "AVRO_STREAM"
      }, {
        "value" : "JSON_L"
      }, {
        "value" : "MANIFEST"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "FileSuffix",
        "package" : "io.nominal.ingest.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "The expected suffix of the file. For example, \"parquet\", \"json\", \"csv\", etc.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GcsIngestSource",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "path",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetContainerizedExtractorsRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "extractorRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ContainerizedExtractorRid",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetContainerizedExtractorsResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "extractors",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ContainerizedExtractor",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IngestDataSource",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "existingDataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "newDataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DeprecatedNewDataSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "newDataSourceV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NewDataSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestDatasetFileDetails",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "datasetFileId",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      }, {
        "fieldName" : "datasetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IngestDestination",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "newDataset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NewDatasetIngestDestination",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "existingDataset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExistingDatasetIngestDestination",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IngestDetails",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "dataset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestDatasetFileDetails",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "video",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestVideoFileDetails",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestJob",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "ingestJobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRid",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobStatus",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "originFiles",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "orgUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "ingestType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestType",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ],
      "docs" : "Ingest job information\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IngestJobRequest",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "ingestRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestRequest",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "IngestJobRid",
        "package" : "io.nominal.ingest.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for an Ingest Job.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "IngestJobStatus",
        "package" : "io.nominal.ingest.api"
      },
      "values" : [ {
        "value" : "SUBMITTED"
      }, {
        "value" : "QUEUED"
      }, {
        "value" : "IN_PROGRESS"
      }, {
        "value" : "COMPLETED"
      }, {
        "value" : "FAILED"
      }, {
        "value" : "CANCELLED"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestMcapRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "sources",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestSource",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "List of files in S3 to be ingested. These should be ordered by time, as data will be ingested and\nconcatenated across all the files.\nNote: only a single files are currently supported, this field is mostly for forward compatibility.\n"
      }, {
        "fieldName" : "channelConfig",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "McapChannelConfig",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "channels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "McapChannels",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "Config to define which channels in the mcap should be ingested. The default is to ingest only\nchannels with config, otherwise the mcap may not be supported.\n"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the dataset or video. If not provided, the dataset or video\nwill be created in the default workspace for the user's organization, if the default\nworkspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestMcapResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "outputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "McapIngestionOutput",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "asyncHandle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AsyncHandle",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "deprecated" : "Deprecated"
      } ],
      "docs" : "Returns references to the data ingested from an MCAP file.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestMetadata",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "The timestamp metadata will be recovered from the dataset files if possible.\nOlder datasets may have unrecoverable timestamp metadata.\nIf unrecoverable, reingestion will throw MissingMetadataForReingest if not provided in request.\n"
      }, {
        "fieldName" : "channelPrefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Channel prefix to use when reingesting the dataset.\nDefaults to empty string. Not recoverable from prior ingests and must be provided in request if needed.\n"
      }, {
        "fieldName" : "tagColumns",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "A map of tag names to column names to derive the tag values from.\nNot recoverable from prior ingests and must be provided in request if needed.\n"
      }, {
        "fieldName" : "additionalFileTags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Additional tags to apply to all dataset files within the the given dataset.\nNot recoverable from prior ingests and must be provided in request if needed.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IngestOptions",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "dataflash",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataflashOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "mcapProtobufTimeseries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapProtobufTimeseriesOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "journalJson",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JournalJsonOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "csv",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CsvOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "parquet",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ParquetOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "video",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "containerized",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ContainerizedOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "avroStream",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AvroStreamOpts",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestProgressV2",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "Timestamp at start of ingest"
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "Timestamp at end of ingest, empty if still in progress"
      }, {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatusV2",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Status of ingest, contains error if failed"
      }, {
        "fieldName" : "incalculable",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Whether ingest duration can be reliably calculated"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "options",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestOptions",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestDetails",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "ingestJobRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestJobRid",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestRunDataSource",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestDataSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "timeOffsetSpec",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeOffsetSpec",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestRunRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        },
        "docs" : "If a run with the same rid already exists, the run will be updated."
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "runPrefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "for example, SIM, HTL, FLT"
      }, {
        "fieldName" : "dataSources",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.ingest.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestRunDataSource",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the dataset. If not provided, the dataset will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestRunResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IngestSource",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "s3",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "gcs",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GcsIngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "presignedFile",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PresignedFileIngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestSourceMetadata",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "IngestStatus",
        "package" : "io.nominal.ingest.api"
      },
      "values" : [ {
        "value" : "IN_PROGRESS"
      }, {
        "value" : "COMPLETED"
      }, {
        "value" : "FAILED"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "IngestType",
        "package" : "io.nominal.ingest.api"
      },
      "values" : [ {
        "value" : "TABULAR"
      }, {
        "value" : "MCAP"
      }, {
        "value" : "DATAFLASH"
      }, {
        "value" : "JOURNAL_JSON"
      }, {
        "value" : "CONTAINERIZED"
      }, {
        "value" : "VIDEO"
      }, {
        "value" : "AVRO_STREAM"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestVideoFileDetails",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestVideoRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "sources",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestSource",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoTimestampManifest",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the video. If not provided, the video will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestVideoResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "asyncHandle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AsyncHandle",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "deprecated" : "Deprecated"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InitiateMultipartUploadRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "filename",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The desired name of the file in object storage. The final name will be\nprefixed with a timestamp to ensure uniqueness.\n"
      }, {
        "fieldName" : "filetype",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The MIME type of the file, eg \"text/csv\" for CSVs or \"application/octet-stream\"\nfor binary files.\n"
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to upload the file. If not provided, the file will be uploaded to\nthe default workspace for the user's organization, if that is configured and the user\nhas access to it.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InitiateMultipartUploadResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "uploadId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "key",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "bucket",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InternalIngestJob",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "ingestJobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRid",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobStatus",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "ingestJobRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRequest",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "originFiles",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "orgUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "ingestType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestType",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ],
      "docs" : "Internal ingest job information including the full ingest request details.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Iso8601Timestamp",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "JournalJsonOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Channel",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "If provided, ingests logs to the given channel.\nBy default, log data will be ingested to a channel named 'logs'.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "JournalTimestampMetadata",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "fieldName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "epochOfTimeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EpochTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogTime",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "McapChannelConfig",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapChannelLocator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "channelType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapChannelConfigType",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "McapChannelConfigType",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "video",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapVideoChannelConfig",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "McapChannels",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "all",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "include",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "McapChannelLocator",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "exclude",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "McapChannelLocator",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "McapDestination",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "McapIngestionOutput",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapDestination",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "videoFileRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "If the destination points to a video, this will be populated with the video file\npopulated during ingestion.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "McapProtobufTimeseriesOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "channelFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapChannels",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapTimestampType",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "additionalFileTags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Specifies a tag set to apply to all data in the file."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "McapSource",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "singleChannel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapChannelLocator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "mcapFile",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "McapTimestampType",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "logTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogTime",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ],
      "docs" : "LogTime is default timestamp for MCAP messages and should be used in most cases.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "McapVideoChannelConfig",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ ],
      "docs" : "Ingest a channel as video. This requires:\n* Using the `foxglove.CompressedVideo` schema\n* Protobuf representation of the message data\n* Messages are in sequential order in the mcap file\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NewDataSource",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "timeColumnSpec",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "channelConfig",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelConfig",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NewDatasetIngestDestination",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "datasetName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "datasetDescription",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "channelConfig",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelConfig",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the dataset. If not provided, the dataset will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      }, {
        "fieldName" : "markingRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MarkingRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "The markings to apply to the created dataset.\nIf not provided, the dataset will be visible to all users in the same workspace.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NewVideoIngestDestination",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Title of the Video that will get created.\nIf not provided, a name is deduced from the ingested file.\n"
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Description that is applied to the newly created video"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Key-Value properties that are applied to the newly created video"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Labels that are applied to the newly created video"
      }, {
        "fieldName" : "videoFileDetails",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileIngestDetails",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "Metadata to associate with any created video file"
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the video. If not provided, the video will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      }, {
        "fieldName" : "markingRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MarkingRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "The markings to apply to the created video.\nIf not provided, the video will be visible to all users in the same workspace.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NoTimestampManifest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "startingTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "scaleParameter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScaleParameter",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ParquetOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampMetadata",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "channelPrefix",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelPrefix",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "tagKeysFromColumns",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Deprecated in favor of tagColumns."
      }, {
        "fieldName" : "tagColumns",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "A map of tag names to column names to derive the tag values from.\n"
      }, {
        "fieldName" : "additionalFileTags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Specifies a tag set to apply to all data in the file."
      }, {
        "fieldName" : "isArchive",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, the file is an archive. Supported archive formats include\n.tar, .tar.gz, and .zip. Only files ending in .parquet\nwithin the archive will be ingested. If field not provided, defaults to false.\n"
      } ],
      "docs" : "Options for ingesting parquet files.\nSupported file formats include .parquet, .parquet.gz \nand archives such as .tar, .tar.gz, and .zip (must set the isArchive flag).\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Part",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "partNumber",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "etag",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PartWithSize",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "partNumber",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "etag",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "size",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PresignedFileIngestSource",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "url",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PublicAuthentication",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RegisterContainerizedExtractorRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "image",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DockerImageSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileExtractionInput",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "payload must match input defined in containerized extraction"
      }, {
        "fieldName" : "parameters",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileExtractionParameter",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "Describes the parameters of the extractor."
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "docs" : "The workspace in which to create the extractor\n"
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampMetadata",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "Metadata about the intermediate parquet this extractor will produce\n"
      }, {
        "fieldName" : "outputFileFormat",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileOutputFormat",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "The format of the output file. Currently only \"parquet\", \"csv\", \"parquet.tar\" are supported\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RegisterContainerizedExtractorResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "extractorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ContainerizedExtractorRid",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ReingestDatasetsRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "sourceDatasets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DatasetRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The datasets to reingest data from. Can only include tagless, non-streaming datasets (V1).\nThe datasets must be of the same granularity and must only include CSV or Parquet files.\nWill attempt to reingest from datasets in list order.\n"
      }, {
        "fieldName" : "targetDataset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "The dataset to ingest data into. Can either be a new dataset or an existing dataset RID.\n"
      }, {
        "fieldName" : "ingestMetadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DatasetRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestMetadata",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "docs" : "Mapping of dataset to ingest metadata.\nIngest metadata only needs to be provided in request if it cannot be recovered from prior ingests.\nSee documentation on each field to determine what metadata can be auto-recovered.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ReingestDatasetsResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "datasets",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DatasetRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ReingestFilesMapping",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ],
      "docs" : "The response to a reingest request.\nMaps the source dataset RID and file ID to the destination dataset RID and file ID.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ReingestFilesMapping",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "fileMap",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DatasetFileId",
                "package" : "io.nominal.datasource"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestDetails",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ],
      "docs" : "Maps the source dataset file ID to the destination dataset and file ID.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RelativeTimestamp",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "Starting timestamp to use when indexing the file. This field is required when uploading a new file to an existing dataset.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RerunIngestRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "ingestJobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRid",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "S3IngestSource",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "path",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ScaleParameter",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "trueFrameRate",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "endingTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        },
        "docs" : "the timestamp corresponding to absolute starting timestamp plus absolute duration of the video."
      }, {
        "fieldName" : "scaleFactor",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "the scale factor can be used to calculate whether media duration differs from a video's | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchContainerizedExtractorsQuery",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchContainerizedExtractorsQuery",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchContainerizedExtractorsQuery",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchContainerizedExtractorsRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchContainerizedExtractorsQuery",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SignPartResponse",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "url",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "headers",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TagDetails",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "tags",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "defaultTag",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimeOffsetSpec",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "nanos",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestampManifest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "sources",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestSource",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ],
      "docs" : "The timestamp manifest files will contain a list of absolute timestamps, in nanoseconds, that correspond to\neach frame in a video. Each file should be of type JSON and store a single list, the length of which equals\nthe number of frames in its corresponding video.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestampMetadata",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "seriesName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampType",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimestampType",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "relative",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RelativeTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "absolute",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AbsoluteTimestamp",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateContainerizedExtractorRequest",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "inputs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "FileExtractionInput",
                    "package" : "io.nominal.ingest.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "parameters",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "FileExtractionParameter",
                    "package" : "io.nominal.ingest.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputFileFormat",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileOutputFormat",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "registry",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "repository",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "defaultTag",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "authentication",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Authentication",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "command",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UserAndPasswordAuthentication",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "username",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Username for registry authentication.\n"
      }, {
        "fieldName" : "passwordSecretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        },
        "docs" : "The RID of the secret containing the password for registry authentication.\n"
      } ],
      "docs" : "Username and password authentication.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UtcTimestamp",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "secondsSinceEpoch",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "offsetNanoseconds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoFileIngestDetails",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "fileDescription",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Description that is applied to the newly created video file.\nIf not provided, defaults to the description used to create the video.\n"
      }, {
        "fieldName" : "fileProperties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Key-Value properties that are applied to the newly created video file.\n",
        "deprecated" : "Field is ignored as video files do not have properties.\nWill be removed after 4/5/2025\n"
      }, {
        "fieldName" : "fileLabels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Labels that are applied to the newly created video file.\n",
        "deprecated" : "Field is ignored as video files do not have labels.\nWill be removed after 4/5/2025\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VideoIngestTarget",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "new",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NewVideoIngestDestination",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "existing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExistingVideoIngestDestination",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoOpts",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "timestampManifest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoOptsV2",
        "package" : "io.nominal.ingest.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "target",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetIngestTarget",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "timestampManifest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VideoTimestampManifest",
        "package" : "io.nominal.ingest.api"
      },
      "union" : [ {
        "fieldName" : "noManifest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NoTimestampManifest",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "timestampManifests",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampManifest",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractorManifest",
        "package" : "io.nominal.ingest.manifest"
      },
      "fields" : [ {
        "fieldName" : "outputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ManifestOutput",
                "package" : "io.nominal.ingest.manifest"
              }
            }
          }
        },
        "docs" : "List of output files produced by the extractor"
      } ],
      "docs" : "Manifest file produced by containerized extractors to describe their outputs.\nThis is written as manifest.json in the OUTPUT_DIR by the container.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractorUploadMetadata",
        "package" : "io.nominal.ingest.manifest"
      },
      "fields" : [ {
        "fieldName" : "uploads",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UploadMetadata",
                "package" : "io.nominal.ingest.manifest"
              }
            }
          }
        },
        "docs" : "List of uploaded files with their S3 locations and manifest metadata"
      } ],
      "docs" : "Metadata file created by yeeter after uploading extractor outputs to S3.\nThis is uploaded to S3 by yeeter and read by the Temporal activity to orchestrate ingestion.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ManifestIngestType",
        "package" : "io.nominal.ingest.manifest"
      },
      "values" : [ {
        "value" : "TABULAR"
      }, {
        "value" : "AVRO_STREAM"
      }, {
        "value" : "JSON_L"
      } ],
      "docs" : "Supported ingest types for containerized extractor outputs.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ManifestOutput",
        "package" : "io.nominal.ingest.manifest"
      },
      "fields" : [ {
        "fieldName" : "ingestType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManifestIngestType",
            "package" : "io.nominal.ingest.manifest"
          }
        },
        "docs" : "The type of ingestion for this output file"
      }, {
        "fieldName" : "relativePath",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Relative path to the output file within OUTPUT_DIR.\nExample: \"telemetry.csv\" or \"data/sensor_readings.parquet\"\n"
      }, {
        "fieldName" : "tagColumns",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Optional mapping of tag names to column names for CSV/Parquet ingestion.\nExample: {\"vehicle_id\": \"veh_id\", \"mission_id\": \"msn_id\"}\n"
      }, {
        "fieldName" : "channelPrefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Optional prefix to prepend to channel names during ingestion.\nExample: \"telemetry/\" would create channels like \"telemetry/speed\", \"telemetry/altitude\"\n"
      } ],
      "docs" : "Describes a single output file from a containerized extractor.\nThis is written by the container in manifest.json.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UploadMetadata",
        "package" : "io.nominal.ingest.manifest"
      },
      "fields" : [ {
        "fieldName" : "s3Key",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Full S3 key where the file was uploaded"
      }, {
        "fieldName" : "s3Bucket",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "S3 bucket name where the file was uploaded"
      }, {
        "fieldName" : "manifestOutput",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManifestOutput",
            "package" : "io.nominal.ingest.manifest"
          }
        },
        "docs" : "The original manifest entry from the container's manifest.yaml"
      } ],
      "docs" : "Metadata about a single file uploaded to S3 by yeeter.\nEnriches the original manifest entry with S3 upload information.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Empty",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnsureExtractorJobCreatedRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "bearerToken",
        "type" : {
          "type" : "primitive",
          "primitive" : "BEARERTOKEN"
        }
      }, {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "ingestJobUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "containerizedExtractor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ContainerizedExtractor",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "tag",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "validatedFileInputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValidatedFileInput",
                "package" : "io.nominal.ingest.workflow.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "multipartUploadDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MultipartUploadDetails",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      }, {
        "fieldName" : "imagePullSecretName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Name of the Kubernetes secret to use for pulling the image, if authentication is required."
      }, {
        "fieldName" : "arguments",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnvironmentVariable",
                "package" : "io.nominal.ingest.api"
              }
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Additional arguments to pass as environment variables to the container."
      } ],
      "docs" : "Ensure that the extractor job exists in the control plane. Runs in the namespace given by workspaceRid.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnsureExtractorJobCreatedResponse",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnsureImagePullSecretCreatedRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "imageSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DockerImageSource",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "authentication",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserAndPasswordAuthentication",
            "package" : "io.nominal.ingest.api"
          }
        }
      }, {
        "fieldName" : "ingestJobUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "bearerToken",
        "type" : {
          "type" : "primitive",
          "primitive" : "BEARERTOKEN"
        }
      } ],
      "docs" : "Ensures a Kubernetes secret of type kubernetes.io/dockerconfigjson exists\nfor the given registry credentials.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnsureImagePullSecretCreatedResponse",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "secretName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnsureWorkspaceConfigMapCreatedRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ],
      "docs" : "For a given workspace rid, ensures there is a log4j2 config map defined in the namespace.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnsureWorkspaceNamespaceCreatedRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ],
      "docs" : "For a given workspace rid, ensures that there is a corresponding K8s namespace created.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnsureWorkspaceServiceAccountCreatedRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ],
      "docs" : "For a given workspace rid, ensures that there is a service account in the proper K8s Namespace.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ExtractorJobState",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "values" : [ {
        "value" : "PENDING"
      }, {
        "value" : "RUNNING"
      }, {
        "value" : "FAILED"
      }, {
        "value" : "SUCCEEDED"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FetchExtractorJobLogsRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "logDatasetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "ingestJobUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "bearerToken",
        "type" : {
          "type" : "primitive",
          "primitive" : "BEARERTOKEN"
        }
      }, {
        "fieldName" : "extractorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ContainerizedExtractorRid",
            "package" : "io.nominal.ingest.api"
          }
        }
      } ],
      "docs" : "Request to fetch logs for all containers in a completed extractor job's pod."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FetchExtractorJobLogsResponse",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetExtractorJobStateRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "ingestJobUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetExtractorJobStateResponse",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "state",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtractorJobState",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestDataflashRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ObjectLocator",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestDataflashResponse",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "units",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "parquetObjectLocators",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ObjectLocator",
                "package" : "io.nominal.ingest.workflow.api"
              }
            }
          }
        },
        "docs" : "Azure or S3-style blob locators of parquet files. Currently\nonly a single file is supported, the list type is used for future compatibility.\n"
      }, {
        "fieldName" : "timestampSeriesName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The name of the column in the generated parquet file that contains the timestamp."
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnitSeconds",
            "package" : "io.nominal.ingest.workflow.api"
          }
        },
        "docs" : "The unit of time for the timestamp column. Can only be seconds."
      }, {
        "fieldName" : "avroLocator",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ObjectLocator",
                "package" : "io.nominal.ingest.workflow.api"
              }
            }
          }
        },
        "docs" : "Azure or S3-style blob locator of avro file when avro processing is configured.\nThis field is only set when the workflow is configured to write avro stream.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestMcapProtobufRequest",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ObjectLocator",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      }, {
        "fieldName" : "channels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapProtoChannels",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestMcapProtobufResponse",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "timestampColumnName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "parquetObjectLocators",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ObjectLocator",
                "package" : "io.nominal.ingest.workflow.api"
              }
            }
          }
        },
        "docs" : "Azure or S3-style blob locators of parquet files. Currently\nonly a single file is supported, the list type is used for future compatibility.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "McapProtoChannels",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "union" : [ {
        "fieldName" : "all",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      }, {
        "fieldName" : "includeTopics",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "McapTopicName",
                "package" : "io.nominal.ingest.workflow.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "excludeTopics",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "McapTopicName",
                "package" : "io.nominal.ingest.workflow.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "McapTopicName",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MultipartUploadDetails",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "uploadId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "s3Handle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Handle",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ObjectLocator",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "bucket",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "objectName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Locator for files in an object store. \nClients are expected to have auth and origin/region configured independently.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PresignedFileInput",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "url",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PresignedUrl",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      }, {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValidatedFileInput",
            "package" : "io.nominal.ingest.workflow.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "PresignedUrl",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimeUnitSeconds",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "values" : [ {
        "value" : "SECONDS"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValidatedFileInput",
        "package" : "io.nominal.ingest.workflow.api"
      },
      "fields" : [ {
        "fieldName" : "handle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Handle",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "docs" : "Path to the input file in S3."
      }, {
        "fieldName" : "fileName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Name of the file that will be placed on disk."
      }, {
        "fieldName" : "envVar",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Environment variable that will store the path to the file."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchArchiveModulesRequest",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ModuleRid",
                "package" : "io.nominal.modules.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchArchiveModulesResponse",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "archivedModuleRids",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ModuleRid",
                "package" : "io.nominal.modules.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetModulesRequest",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RequestModuleRef",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUnarchiveModulesRequest",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ModuleRid",
                "package" : "io.nominal.modules.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUnarchiveModulesResponse",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "unarchivedModuleRids",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ModuleRid",
                "package" : "io.nominal.modules.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateModuleRequest",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "apiName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The API name for the module. This string will uniquely identify the module within the organization.\n"
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "definition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersionDefinition",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Function",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The name of the function. This should be unique to the function in the current module.\n"
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "parameters",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FunctionParameter",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      }, {
        "fieldName" : "functionNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FunctionNode",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "isExported",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FunctionNode",
        "package" : "io.nominal.module"
      },
      "union" : [ {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FunctionParameter",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ParameterName",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueType",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LatestVersionStrategy",
        "package" : "io.nominal.module"
      },
      "fields" : [ ],
      "docs" : "This strategy refers to the latest version of the module.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Module",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleMetadata",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "versionMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersionMetadata",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "definition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersionDefinition",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ModuleMetadata",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleRid",
            "package" : "io.nominal.modules.api"
          }
        }
      }, {
        "fieldName" : "apiName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "This uniquely identifies the module within the org.\nNote that this cannot be changed after creation.\n"
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "archivedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "The time at which the module was archived. Unset if the module is not archived.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ModuleRef",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleRid",
            "package" : "io.nominal.modules.api"
          }
        }
      }, {
        "fieldName" : "apiName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "version",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersion",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ModuleSummary",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleMetadata",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "latest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersionMetadata",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ModuleVersion",
        "package" : "io.nominal.module"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ModuleVersionDefinition",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "functions",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Function",
                "package" : "io.nominal.module"
              }
            }
          }
        },
        "docs" : "The list of functions that resolve to derived series that appear in channel search after applying to an\nasset. Limited to 100.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ModuleVersionMetadata",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "version",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersion",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ParameterName",
        "package" : "io.nominal.module"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PinnedVersionStrategy",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "version",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersion",
            "package" : "io.nominal.module"
          }
        }
      } ],
      "docs" : "This strategy refers to a specific version of the module.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RequestModuleNameRef",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "apiName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "versionStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VersionStrategy",
            "package" : "io.nominal.module"
          }
        }
      } ],
      "docs" : "This is used to refer to modules in requests by name.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RequestModuleRef",
        "package" : "io.nominal.module"
      },
      "union" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RequestModuleNameRef",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RequestModuleRidRef",
            "package" : "io.nominal.module"
          }
        }
      } ],
      "docs" : "Request reference to a module. This is used to refer to modules in requests.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RequestModuleRidRef",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleRid",
            "package" : "io.nominal.modules.api"
          }
        }
      }, {
        "fieldName" : "versionStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VersionStrategy",
            "package" : "io.nominal.module"
          }
        }
      } ],
      "docs" : "This is used to refer to modules in requests by rid.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchModulesQuery",
        "package" : "io.nominal.module"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "lastUpdatedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchModulesQuery",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchModulesQuery",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchModulesQuery",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchModulesRequest",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchModulesQuery",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "sort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchModulesSortOptions",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Default search status is NOT_ARCHIVED if none are provided. Allows for including archived modules in search."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchModulesResponse",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ModuleSummary",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SearchModulesSortField",
        "package" : "io.nominal.module"
      },
      "values" : [ {
        "value" : "NAME"
      }, {
        "value" : "LAST_UPDATED_AT"
      }, {
        "value" : "CREATED_AT"
      }, {
        "value" : "ARCHIVED_AT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchModulesSortOptions",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchModulesSortField",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateModuleRequest",
        "package" : "io.nominal.module"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "definition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersionDefinition",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ValueType",
        "package" : "io.nominal.module"
      },
      "values" : [ {
        "value" : "NUMERIC_SERIES"
      }, {
        "value" : "ENUM_SERIES"
      }, {
        "value" : "RANGES_SERIES"
      }, {
        "value" : "STRING_CONSTANT"
      }, {
        "value" : "DURATION_CONSTANT"
      }, {
        "value" : "TIMESTAMP_CONSTANT"
      }, {
        "value" : "INTEGER_CONSTANT"
      }, {
        "value" : "DOUBLE_CONSTANT"
      }, {
        "value" : "ASSET_RID"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "VariableName",
        "package" : "io.nominal.module"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VersionStrategy",
        "package" : "io.nominal.module"
      },
      "union" : [ {
        "fieldName" : "pinned",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PinnedVersionStrategy",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "latest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatestVersionStrategy",
            "package" : "io.nominal.module"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetUnresolvedModuleDefinitionsRequest",
        "package" : "io.nominal.module.internal"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RequestModuleNameRef",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetUnresolvedModuleDefinitionsResponse",
        "package" : "io.nominal.module.internal"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ModuleComputeDefinition",
                "package" : "io.nominal.module.internal"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ModuleComputeDefinition",
        "package" : "io.nominal.module.internal"
      },
      "fields" : [ {
        "fieldName" : "moduleApiName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "moduleRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleRid",
            "package" : "io.nominal.modules.api"
          }
        }
      }, {
        "fieldName" : "version",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersion",
            "package" : "io.nominal.module"
          }
        }
      }, {
        "fieldName" : "functions",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Function",
                "package" : "io.nominal.module"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ModuleApplicationRid",
        "package" : "io.nominal.modules.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Module Application.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ModuleRid",
        "package" : "io.nominal.modules.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      },
      "docs" : "Unique resource identifier for a Module.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AppendResult",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The start of the time range that the append result covers"
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The end of the time range that the append result covers"
      }, {
        "fieldName" : "result",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeAppendResponse",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ],
      "docs" : "An append result won't cover the full `StreamingComputeNodeRequest#windowWidth` but rather just a smaller \nwindow. The end of the window that the append covers is guaranteed to be later than previously sent results.\nThe start, however, can and most likely will overlap with previous results. That allows us to support \nout-of-order points. The client will have to merge this new `AppendResult` with previous results.\nExample of time windows that might be covered by results for a subscription: \nWe send a full result for window [0s, 120s] followed by an append result for [116s, 121s] and another \nappend result for [117s, 122s].\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ClientMessage",
        "package" : "io.nominal.persistent.compute.api"
      },
      "union" : [ {
        "fieldName" : "subscribe",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SubscriptionId",
                "package" : "io.nominal.persistent.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StreamingComputeNodeSubscription",
                "package" : "io.nominal.persistent.compute.api"
              }
            }
          }
        },
        "docs" : "Subscribes to all of the given `StreamingComputeNodeSubscription`s. For identifying the subscriptions and\ntheir results a `SubscriptionId` has to be passed, which should be a unique identifier.\nA `ServerMessage::subscriptionCreation` will be sent back for each subscription which shows whether the \nsubscription was successfully created. If it was, updated results for the subscription will be  sent \nperiodically via `ServerMessage::subscriptionUpdate`.\n"
      }, {
        "fieldName" : "unsubscribe",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SubscriptionId",
                "package" : "io.nominal.persistent.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "ping",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Ping",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "pong",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Pong",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ClientMessageError",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SerializableError",
            "package" : "io.nominal.api"
          }
        }
      } ],
      "docs" : "This will be sent if there is an error processing a `ClientMessage`. Note: This won't automatically close \nthe connection. The client can continue sending `ClientMessage`s after receiving this error.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputeNodeAppendResponse",
        "package" : "io.nominal.persistent.compute.api"
      },
      "union" : [ {
        "fieldName" : "range",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Merging can be done via dropping any old ranges (possibly truncating the last one) and adding these new \nranges, possibly merging them if they overlap or are adjacent.\n"
      }, {
        "fieldName" : "enumPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Merging can be done by keeping track of the applicable point present within the current window"
      }, {
        "fieldName" : "numericPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Merging can be done by keeping track of the applicable point present within the current window"
      }, {
        "fieldName" : "singlePoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SinglePoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Merging can be done by keeping track of the applicable point present within the current window"
      }, {
        "fieldName" : "logPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Merging can be done by keeping track of the applicable point present within the current window"
      }, {
        "fieldName" : "rangeValue",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Merging can be done by keeping track of the applicable range present within the current window, possibly\nmerging ranges if they are overlap or are adjacent\n"
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old points and adding the new ones, accounting for overlaps"
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old points and adding the new ones, accounting for overlaps"
      }, {
        "fieldName" : "bucketedNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedNumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old buckets and adding the new ones. Overlapping buckets are\nguaranteed to align (same bucket end timestamp) and the older version of the bucket can be replaced\nwith the newer ones.\n"
      }, {
        "fieldName" : "bucketedEnum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedEnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old buckets and adding the new ones. Overlapping buckets are\nguaranteed to align (same bucket end timestamp) and the older version of the bucket can be replaced\nwith the newer ones.\n"
      }, {
        "fieldName" : "arrowNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowNumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old points and adding the new ones, accounting for overlaps"
      }, {
        "fieldName" : "arrowEnum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowEnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old points and adding the new ones, accounting for overlaps"
      }, {
        "fieldName" : "arrowBucketedNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowBucketedNumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old buckets and adding the new ones. Overlapping buckets are\nguaranteed to align (same bucket end timestamp) and the older version of the bucket can be replaced\nwith the newer ones.\n"
      }, {
        "fieldName" : "arrowBucketedEnum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowBucketedEnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Merging can be done by dropping any old buckets and adding the new ones. Overlapping buckets are\nguaranteed to align (same bucket end timestamp) and the older version of the bucket can be replaced\nwith the newer ones.\n"
      }, {
        "fieldName" : "grouped",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GroupedComputeNodeAppendResponses",
            "package" : "io.nominal.persistent.compute.api"
          }
        },
        "docs" : "Appends can be done by doing an append individually for each contained `ComputeNodeAppendResponse`."
      } ],
      "docs" : "These cover the subset of the union type in `ComputeNodeResponse` for which we support append results.\nAppend results will have the same subtype as the previous full result for the same `SubscriptionId`. \nIf the subtype were to change (e.g., we start doing bucketing because data frequency increased) we will send \na new full result with that new type. The results will also have the same units as the previous `FullResult`.\nNotably, we currently don't support appends for bucketed results as merging buckets is not trivial, especially \nwhen accounting for out-of-order points.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FullResult",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "result",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeResponse",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GroupedComputeNodeAppendResponse",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "grouping",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Grouping",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "response",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeAppendResponse",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GroupedComputeNodeAppendResponses",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GroupedComputeNodeAppendResponse",
                "package" : "io.nominal.persistent.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Contains a `GroupedComputeNodeAppendResponse` for each applicable grouping along with metadata describing the \ngrouping. All the contained `GroupedComputeNodeAppendResponse`s are guaranteed to be of the same type.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "HealthMessage",
        "package" : "io.nominal.persistent.compute.api"
      },
      "union" : [ {
        "fieldName" : "ping",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Ping",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "pong",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Pong",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "shutdownNotice",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ShutdownNotice",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "clientMessageError",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ClientMessageError",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "InvalidComputationType",
        "package" : "io.nominal.persistent.compute.api"
      },
      "values" : [ {
        "value" : "POINT_PERSISTENCE"
      }, {
        "value" : "CUMULATIVE_SUM"
      }, {
        "value" : "INTEGRAL"
      }, {
        "value" : "STALENESS_DETECTION"
      }, {
        "value" : "TIME_RANGE_FILTER"
      }, {
        "value" : "FREQUENCY_DOMAIN"
      }, {
        "value" : "CURVE_FITTING"
      }, {
        "value" : "PAGE_SUMMARIZATION_STRATEGY"
      }, {
        "value" : "TRUNCATE_SUMMARIZATION_STRATEGY"
      }, {
        "value" : "LOG_SERIES"
      }, {
        "value" : "LITERAL_RANGES"
      }, {
        "value" : "ARRAY"
      }, {
        "value" : "STRUCT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IsEnabledResponse",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Milliseconds",
        "package" : "io.nominal.persistent.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Ping",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "sentAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ],
      "docs" : "A ping can be sent by both client and server to keep the connection open and check that it is still working.\nThe receiving end should send back a pong immediately.\nWe also include the times that pings and pongs are sent so that we can track latency and/or discover clock\ndrift between server and client.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Pong",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "pingOriginallySentAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "sentAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ServerMessage",
        "package" : "io.nominal.persistent.compute.api"
      },
      "union" : [ {
        "fieldName" : "subscriptionUpdate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionUpdateMessage",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "subscriptionCreation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionCreationMessage",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "health",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HealthMessage",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ShutdownNotice",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ ],
      "docs" : "Indicates that the websocket will shut down in the near future. Until it is, SubscriptionUpdates will \nstill be sent to the client. Clients that want to avoid downtime or latency spikes should initiate a new \nwebsocket and recreate all their subscriptions there but still keep this websocket open until the new \nwebsockets starts sending SubscriptionUpdates. \nNote: The initial updates that the new websocket sends might be somewhat stale because of server and \nconnection pools warm up. The client might want to wait with fully switching to the new subscription until \nthe updates aren't very stale anymore.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingComputeNodeRequest",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "node",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputableNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "windowWidth",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "A templatized version of `ComputeNodeRequest` where the end of the range will track the current time and\nthe start of the range tracks `windowWidth` time ago.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingComputeNodeSubscription",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "computeRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StreamingComputeNodeRequest",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "subscriptionOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionOptions",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SubscriptionCreation",
        "package" : "io.nominal.persistent.compute.api"
      },
      "union" : [ {
        "fieldName" : "success",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionCreationSuccess",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionCreationError",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubscriptionCreationError",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "serializableError",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SerializableError",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "A serialized version of the error. Should match the errors defined below."
      } ],
      "docs" : "This will be sent if there is an error while creating a subscription. This means that the subscription was\nnever created and the client will have to re-try creating it if warranted.\nThis can also be sent after a subscription was first successfully started and sent result. In that case it\nmeans that the subscription encountered an unrecoverable error at runtime and will be stopped.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubscriptionCreationMessage",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "subscriptionId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionId",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "creation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionCreation",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubscriptionCreationSuccess",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "unitResult",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeUnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Will be returned once a subscriptions has been successfully created."
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SubscriptionId",
        "package" : "io.nominal.persistent.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "UUID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubscriptionOptions",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minDelay",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Milliseconds",
            "package" : "io.nominal.persistent.compute.api"
          }
        },
        "docs" : "The minimum delay between `SubscriptionUpdate`s sent for this subscription."
      }, {
        "fieldName" : "allowAppends",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Can be set to `false` by the client to indicate that it doesn't support appends for this subscription\nand always wants to receive full results. Defaults to `false` if not set.\nThe expectation is that clients should implement support for appends for any of the results covered in\n`ComputeNodeAppendResponse` and set this to `true` as quickly as possible. However, in order to support \nadding new sub-types to `ComputeNodeAppendResponse` without breaking clients that haven't upgraded yet \nand haven't yet added support for them, we default this to `false` and make clients opt-in as soon as they\nimplement support.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SubscriptionUpdate",
        "package" : "io.nominal.persistent.compute.api"
      },
      "union" : [ {
        "fieldName" : "full",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FullResult",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "append",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AppendResult",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionUpdateError",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubscriptionUpdateError",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "serializableError",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SerializableError",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "A serialized version of the error. Should match the errors defined below."
      } ],
      "docs" : "This will be sent if there is an error while updating a subscription. Note: This won't automatically cancel \nthe subscription. The client will have to call `ClientMessage::unsubscribe` to do that if warranted.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubscriptionUpdateMessage",
        "package" : "io.nominal.persistent.compute.api"
      },
      "fields" : [ {
        "fieldName" : "subscriptionId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionId",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      }, {
        "fieldName" : "update",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubscriptionUpdate",
            "package" : "io.nominal.persistent.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelLocator",
        "package" : "io.nominal.scout.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRef",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRefName",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "run",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRefName",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ClosedWithFurtherActionDispositionState",
        "package" : "io.nominal.scout.api"
      },
      "fields" : [ {
        "fieldName" : "closedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ClosedWithIgnoreDispositionState",
        "package" : "io.nominal.scout.api"
      },
      "fields" : [ {
        "fieldName" : "closedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Color",
        "package" : "io.nominal.scout.api"
      },
      "union" : [ {
        "fieldName" : "hexCode",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DataSourceRefName",
        "package" : "io.nominal.scout.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DispositionState",
        "package" : "io.nominal.scout.api"
      },
      "union" : [ {
        "fieldName" : "pendingReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PendingReviewDispositionState",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "closedWithFurtherAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ClosedWithFurtherActionDispositionState",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "closedWithIgnore",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ClosedWithIgnoreDispositionState",
            "package" : "io.nominal.scout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "HexColor",
        "package" : "io.nominal.scout.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PendingReviewDispositionState",
        "package" : "io.nominal.scout.api"
      },
      "fields" : [ {
        "fieldName" : "openedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Priority",
        "package" : "io.nominal.scout.api"
      },
      "values" : [ {
        "value" : "P0"
      }, {
        "value" : "P1"
      }, {
        "value" : "P2"
      }, {
        "value" : "P3"
      }, {
        "value" : "P4"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Symbol",
        "package" : "io.nominal.scout.api"
      },
      "union" : [ {
        "fieldName" : "icon",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Icon name (e.g. castle)"
      }, {
        "fieldName" : "emoji",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Emoji name (e.g. :castle:)"
      }, {
        "fieldName" : "image",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Image url (e.g. https://example.com/image.png)"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AddDataScopesToAssetRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "dataScopes",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateAssetDataScope",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        },
        "docs" : "The data scopes to add to the asset.\n\nThrows if any existing data scopes have data scope names that conflict with the data scope names\nin the request.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Asset",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Labels associated with the asset. These labels do not have a time dimension.\nTo associate labels with a range of time, create a time range on the asset with labels.\n"
      }, {
        "fieldName" : "links",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Link",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "Links associated with the asset. These links do not have a time dimension.\nTo associate links with a range of time, create a time range on the asset with links.\n"
      }, {
        "fieldName" : "dataScopes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataScope",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        },
        "docs" : "The data scopes associated with the asset."
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TypeRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isStaged",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Auto created assets are considered staged by default.\n"
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "AssetSortField",
        "package" : "io.nominal.scout.asset.api"
      },
      "values" : [ {
        "value" : "NAME"
      }, {
        "value" : "CREATED_AT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetSortOptions",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetSortField",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        },
        "deprecated" : "use SortKey with SortField union type instead"
      }, {
        "fieldName" : "sortKey",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortKey",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        },
        "docs" : "Field to sort by. Includes both field and property-based sorting.\nMust be supplied if field is not provided separately.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetTypeDataScopeConfig",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "suggestedRefName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagConfig",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "docs" : "Tag names that should be supplied to downscope data for an asset of the asset type. These are not \nenforced.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetTypesFilter",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "assetTypes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TypeRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ],
      "docs" : "returns runs that match any of the provided assetTypes."
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Channel",
        "package" : "io.nominal.scout.asset.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelMetadata",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      }, {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSource",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "dataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesDataType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateAssetDataScope",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "dataScopeName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.scout.api"
          }
        },
        "docs" : "The name of the data scope. The name is guaranteed to be be unique within the context of an asset.\n"
      }, {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSource",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "seriesTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Filters the data source to series matching these tag values. The filtered set of series should be\nthe ones that belong to the asset.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateAssetRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "links",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Link",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "dataScopes",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateAssetDataScope",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        },
        "docs" : "The data scopes associated with the asset."
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TypeRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the asset. If not provided, the asset will be created in\nthe default workspace for the user's organization, if the default workspace for the\norganization is configured.\nAll data scopes, attachments, and the optional asset type must be in the same workspace.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateTypeRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "propertyConfigs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyConfig",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "iconName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the asset type. If not provided, the asset type will be created in\nthe default workspace for the user's organization, if the default workspace for the\norganization is configured.\n"
      }, {
        "fieldName" : "datasourceConfigs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRid",
                    "package" : "io.nominal.api.rids"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetTypeDataScopeConfig",
                    "package" : "io.nominal.scout.asset.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "The configuration outlines what a data scope should provide when added to an asset of this type. It is \nreferenced at data scope creation time, but does not actively modify existing data scopes.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataScope",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "dataScopeName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.scout.api"
          }
        },
        "docs" : "The name of the data scope. The name is guaranteed to be be unique within the context of an asset.\n"
      }, {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSource",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WeakTimestampType",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "seriesTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Filters the data source to series matching these tag values. The filtered set of series should be\nthe ones that belong to the asset.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PropertyConfig",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "isRequired",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RemoveType",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ ],
      "docs" : "The request to remove the type from the asset."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchAssetChannelsRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "dataScopeNameFilter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRefName",
                    "package" : "io.nominal.scout.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "If not empty, will filter to channels from the selected data scope names.\n"
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 1000. Will throw if larger than 10000. Default pageSize is 100."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchAssetChannelsResponse",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelMetadata",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchAssetsQuery",
        "package" : "io.nominal.scout.asset.api"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "exactSubstring",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "An case-insensitive substring match of the title or description of the asset."
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use labels instead"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LabelsFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use properties"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertiesFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "typeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "deprecated" : "use assetTypes"
      }, {
        "fieldName" : "assetTypes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetTypesFilter",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      }, {
        "fieldName" : "isStaged",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "deprecated" : "staged assets are no longer returned in the search endpoint"
      }, {
        "fieldName" : "archived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchAssetsQuery",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchAssetsQuery",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchAssetsRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetSortOptions",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Page sizes greater than 10_000 will be rejected. Default pageSize is 100."
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchAssetsQuery",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Default search status is NOT_ARCHIVED if none are provided. Allows for including archived assets in search."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchAssetsResponse",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Asset",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchTypesQuery",
        "package" : "io.nominal.scout.asset.api"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertyName",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchTypesQuery",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchTypesQuery",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "configuredDatasource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchTypesRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeSortOptions",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Page sizes greater than 10_000 will be rejected. Default pageSize is 100."
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchTypesQuery",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Use the isArchived search query option instead. If no filter is applied and this field is empty, the \ndefault search status is NOT_ARCHIVED.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchTypesResponse",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Type",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SortKey",
        "package" : "io.nominal.scout.asset.api"
      },
      "union" : [ {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetSortField",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortProperty",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortProperty",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertyName",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TagConfig",
        "package" : "io.nominal.scout.asset.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Type",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "propertyConfigs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyConfig",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "iconName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "The name of the icon to display for the type. This name maps to a Lucide icon in the frontend.\n"
      }, {
        "fieldName" : "datasourceConfigs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetTypeDataScopeConfig",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        },
        "docs" : "The configuration outlines what a data scope should provide when added to an asset of this type. It is \nreferenced at data scope creation time, but does not actively modify existing data scopes.\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TypeSortField",
        "package" : "io.nominal.scout.asset.api"
      },
      "values" : [ {
        "value" : "CREATED_AT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TypeSortOptions",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeSortField",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateAssetRefNamesRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "dataScopeRefNameUpdates",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateAssetRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "links",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Link",
                    "package" : "io.nominal.scout.run.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "dataScopes",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CreateAssetDataScope",
                    "package" : "io.nominal.scout.asset.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "The data scopes for the asset. This will replace all existing data scopes with the scopes specified."
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateOrRemoveAssetType",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isStaged",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateAttachmentsRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "attachmentsToAdd",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "attachmentsToRemove",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateOrRemoveAssetType",
        "package" : "io.nominal.scout.asset.api"
      },
      "union" : [ {
        "fieldName" : "typeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "removeType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RemoveType",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      } ],
      "docs" : "The request to update the type of the asset. The request will replace the existing type with the type\nspecified in the request if a typeRID is provided. Otherwise, the type will be removed from the asset.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateTypeRequest",
        "package" : "io.nominal.scout.asset.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "propertyConfigs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyConfig",
                    "package" : "io.nominal.scout.asset.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "iconName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "datasourceConfigs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRid",
                    "package" : "io.nominal.api.rids"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetTypeDataScopeConfig",
                    "package" : "io.nominal.scout.asset.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "The configuration outlines what a data scope should provide when added to an asset of this type. It is \nreferenced at data scope creation time, but does not actively modify existing data scopes.\n"
      } ],
      "docs" : "The request to update a type. The request will replace all existing properties with the properties\nspecified in the request.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AbsoluteTimestamp",
        "package" : "io.nominal.scout.catalog"
      },
      "union" : [ {
        "fieldName" : "iso8601",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Iso8601Timestamp",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "epochOfTimeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EpochTimestamp",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "customFormat",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CustomTimestamp",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AddFileToDataset",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "handle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "fileSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        },
        "docs" : "The size of the file in bytes.\n"
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "ingestTagMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestTagMetadata",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "originFileHandles",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "S3Handle",
                    "package" : "io.nominal.scout.catalog"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "ingestJobRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestJobRid",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AllPropertiesAndLabelsResponse",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Bounds",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampType",
            "package" : "io.nominal.datasource"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Channel",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "uuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "datasetUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelConfig",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "prefixTreeDelimiter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "If set, will construct a prefix tree for channels of the dataset using the given delimiter."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelDetails",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "uuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "csvIndex",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "datasetUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "handle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateDataset",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "handle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Handle",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        },
        "deprecated" : "Handles should only be specified when adding files to datasets"
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "deprecated" : "Deprecated in favor of properties"
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetOriginMetadata",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Granularity",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Granularity of dataset timestamps. Defaults to nanoseconds."
      }, {
        "fieldName" : "isV2Dataset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, the dataset should be ingested to the v2 tables and is compatible with streaming.\n",
        "deprecated" : "Regardless of what value is specified, this flag is treated as true by the service."
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the dataset. If not provided, the dataset will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      }, {
        "fieldName" : "markingRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MarkingRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "The markings to apply to the created dataset.\nIf not provided, the dataset will be visible to all users in the same workspace.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CustomTimestamp",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "format",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The format string should be in the format of the `DateTimeFormatter` class in Java."
      }, {
        "fieldName" : "defaultYear",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided."
      }, {
        "fieldName" : "defaultDayOfYear",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Dataset",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "handle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Handle",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        },
        "deprecated" : "Deprecated. Use DatasetFile#handle"
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetOriginMetadata",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Bounds",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WeakTimestampType",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "allowStreaming",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Granularity",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DatasetFile",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileId",
            "package" : "io.nominal.datasource"
          }
        }
      }, {
        "fieldName" : "datasetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "handle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Bounds",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "uploadedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "Timestamp that the file was received and stored, but not processed or made available to consumers."
      }, {
        "fieldName" : "ingestedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "Timestamp that the file is ingested at and made available for processing. If the file has failed to be\ningested for any reason or is still being processed, then this value will be empty.\n"
      }, {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatusV2",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "ingestTagMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestTagMetadata",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "originFilePaths",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "ingestJobRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestJobRid",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "deletedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "Timestamp that the file is deleted at, only present if the file has been deleted.\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "DatasetFileSortField",
        "package" : "io.nominal.scout.catalog"
      },
      "values" : [ {
        "value" : "UPLOADED_AT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DatasetFileSortOptions",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileSortField",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DatasetFileUri",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "uri",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Pre-signed URI that can be used to download the original file directly. Expires if the download has\nnot been initiated within 1 minute.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DatasetFilesPage",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "files",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DatasetFile",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPage",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DatasetOriginMetadata",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "path",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Deprecated in favor of FileOriginMetadata"
      }, {
        "fieldName" : "xSeriesIsAbsolute",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Deprecated in favor of FileOriginMetadata"
      }, {
        "fieldName" : "schemaDirectivePath",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Deprecated in favor of FileOriginMetadata"
      }, {
        "fieldName" : "xSeriesColumnName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Deprecated in favor of FileOriginMetadata"
      }, {
        "fieldName" : "xSeriesTimeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Deprecated in favor of FileOriginMetadata"
      }, {
        "fieldName" : "timestampMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampMetadata",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        },
        "docs" : "Deprecated in favor of FileOriginMetadata"
      }, {
        "fieldName" : "channelConfig",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelConfig",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnrichedDataset",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "uuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "displayName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                },
                "valueType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "deprecated" : "Deprecated in favor of properties."
      }, {
        "fieldName" : "handle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Handle",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        },
        "deprecated" : "Deprecated. Use DatasetFile#handle"
      }, {
        "fieldName" : "ingestDate",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestStatus",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        },
        "deprecated" : "Deprecated. Use lastIngestStatus."
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetOriginMetadata",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "lastIngestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatusV2",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "retentionPolicy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RetentionPolicy",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "source",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Bounds",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WeakTimestampType",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Granularity",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "allowStreaming",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EpochTimestamp",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetChannelsForDatasetsRequest",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "datasetUuids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetDatasetsRequest",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "datasetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetDetailsForChannelsRequest",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "channelUuids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetHandlesForDatasetsRequest",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "datasetUuids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Handle",
        "package" : "io.nominal.scout.catalog"
      },
      "union" : [ {
        "fieldName" : "s3",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Handle",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestProgressV2",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "Timestamp at start of ingest"
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "Timestamp at end of ingest, empty if still in progress"
      }, {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatusV2",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Status of ingest, contains error if failed"
      }, {
        "fieldName" : "incalculable",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Whether ingest duration can be reliably calculated"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "IngestStatus",
        "package" : "io.nominal.scout.catalog"
      },
      "values" : [ {
        "value" : "IN_PROGRESS"
      }, {
        "value" : "COMPLETED"
      }, {
        "value" : "FAILED"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestTagMetadata",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "tagColumns",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnName",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "A map of tag names to column names to derive the tag values from.\n"
      }, {
        "fieldName" : "additionalFileTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ],
      "docs" : "The tags used when ingesting the dataset file.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Iso8601Timestamp",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MarkFileIngestError",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "errorResult",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorResult",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MarkFileIngestSuccessful",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "bounds",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Bounds",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "ingestedAt",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The ingestion timestamp is produced by CSV splitter and stored directly in the clickhouse table.\nIt's produced externally and passed here to handle retries and failures, and must be nanosecond precision.\nTwo files cannot have the same ingested at timestamp.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OriginFileUri",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "uri",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "path",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Pre-signed URI that can be used to download an origin file directly. Expires if the download has\nnot been initiated within 1 minute.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RelativeTimestamp",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RetentionPolicy",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RetentionPolicyType",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "expiryDays",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "RetentionPolicyType",
        "package" : "io.nominal.scout.catalog"
      },
      "values" : [ {
        "value" : "KEEP_UNTIL_EXPIRY"
      }, {
        "value" : "KEEP_FOREVER"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "S3Handle",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "bucket",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "key",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchDatasetFilesQuery",
        "package" : "io.nominal.scout.catalog"
      },
      "union" : [ {
        "fieldName" : "timeRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeRangeFilter",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "fileTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchDatasetFilesQuery",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchDatasetFilesQuery",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchDatasetFilesRequest",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "datasetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchDatasetFilesQuery",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1000."
      }, {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "sortOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileSortOptions",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchDatasetFilesResponse",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DatasetFile",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchDatasetsQuery",
        "package" : "io.nominal.scout.catalog"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Performs case insensitive exact match search on the name."
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatus",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "ingestedBeforeInclusive",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "ingestedAfterInclusive",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "archiveStatus",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchDatasetsQuery",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchDatasetsQuery",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchDatasetsRequest",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchDatasetsQuery",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1000."
      }, {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "sortOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortOptions",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchDatasetsResponse",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnrichedDataset",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SkipRowsConfig",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "headerRowIndex",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "dataStartRowIndex",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortField",
        "package" : "io.nominal.scout.catalog"
      },
      "values" : [ {
        "value" : "INGEST_DATE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortOptions",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortField",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeRangeFilter",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.catalog"
              }
            }
          }
        }
      } ],
      "docs" : "searches for files that intersect with the specified range."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestampMetadata",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "seriesName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampType",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimestampType",
        "package" : "io.nominal.scout.catalog"
      },
      "union" : [ {
        "fieldName" : "relative",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RelativeTimestamp",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "absolute",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AbsoluteTimestamp",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnitConfig",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "unitMetadataKey",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "If set, will extract the series unit from the column metadata of the ingested file."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateBoundsRequest",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "bounds",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Bounds",
            "package" : "io.nominal.scout.catalog"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateDatasetMetadata",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateIngestStatus",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatus",
            "package" : "io.nominal.scout.catalog"
          }
        }
      }, {
        "fieldName" : "datasetUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateIngestStatusV2",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatusV2",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "datasetUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UtcTimestamp",
        "package" : "io.nominal.scout.catalog"
      },
      "fields" : [ {
        "fieldName" : "secondsSinceEpoch",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "WeakTimestampType",
        "package" : "io.nominal.scout.catalog"
      },
      "values" : [ {
        "value" : "ABSOLUTE"
      }, {
        "value" : "RELATIVE"
      }, {
        "value" : "PENDING"
      } ],
      "docs" : "If a CSV dataset is still being split, the timestamp type is not known.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelVariable",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "fields" : [ {
        "fieldName" : "displayName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "computeSpec",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeSpec",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "computeSpecV2",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeNodeWithContext",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        },
        "docs" : "optional for backcompatibility. If empty, fall back to computeSpec."
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ChannelVariableName",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeNodeWithContext",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "fields" : [ {
        "fieldName" : "computeNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookContext",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputeSpec",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeSpecV1",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ComputeSpecV1",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VariableLocator",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "union" : [ {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelLocator",
            "package" : "io.nominal.scout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "WorkbookChannelVariableMap",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "alias" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ChannelVariableName",
              "package" : "io.nominal.scout.channelvariables.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ChannelVariable",
              "package" : "io.nominal.scout.channelvariables.api"
            }
          }
        }
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookContext",
        "package" : "io.nominal.scout.channelvariables.api"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableLocator",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DeprecatedDefinitionAndSchemaVersion",
        "package" : "io.nominal.scout.chart.api"
      },
      "fields" : [ {
        "fieldName" : "schemaVersion",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "definition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JsonString",
            "package" : "io.nominal.scout.chart.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "JsonString",
        "package" : "io.nominal.scout.chart.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AlwaysConnectDisconnectedValues",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ ],
      "docs" : "This option indicates that disconnected values will always be connected with a line."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AxisDisplayOptions",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "showTitle",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "axisWidth",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "scaleType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AxisScaleType",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "The scale type of the axis. If not specified, the default is LINEAR.\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "AxisDomainType",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "NUMERIC"
      }, {
        "value" : "CATEGORICAL"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "AxisId",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "AxisPosition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "LEFT"
      }, {
        "value" : "RIGHT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AxisRange",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "AxisScaleType",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "LINEAR"
      }, {
        "value" : "LOG"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AxisThresholdGroup",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "lineThresholds",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LineThresholdGroup",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AxisThresholdVisualization",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "axisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "visibility",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Determines it's current visibility in the time series chart."
      }, {
        "fieldName" : "thresholds",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisThresholdGroup",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitFlag",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "position",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "The settings for a bit flag mapping. Each position should be unique. Position 0 represents the least significant bit \nand position 31 represents the most significant bit.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitFlagMapCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BitFlagMapVisualisation",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitFlagMapRawVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "highColor",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        },
        "docs" : "The color when any bit is high\n"
      }, {
        "fieldName" : "lowColor",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        },
        "docs" : "The color when all bits are low\n"
      }, {
        "fieldName" : "bitFlags",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BitFlag",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ],
      "docs" : "The settings for a raw bit flag map visualisation.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "BitFlagMapVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitFlagMapRawVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CartesianChartDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CartesianChartDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianChartDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CartesianPlot",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "events",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Event",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Please use the workbook's eventRefs field instead."
      }, {
        "fieldName" : "comparisonRunGroups",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonRunGroup",
                "package" : "io.nominal.scout.comparisonrun.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "valueAxes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueAxis",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "connectPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If toggled true, will visually connect the points of the series"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianPlot",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "xVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "yVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "xAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "yAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChecklistChartDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistChartDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistChartDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "selectedChecklistRids",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ColorStyle",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "mapped",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        },
        "docs" : "Defines specific colors for specific values\n"
      }, {
        "fieldName" : "single",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        },
        "docs" : "A single color to apply to the whole plot\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DataSourceRefName",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DecimalPlaces",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "fixed",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FixedDecimalPlaces",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "max",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MaxDecimalPlaces",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DefaultFill",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DisconnectedValueVisualization",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "alwaysConnect",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AlwaysConnectDisconnectedValues",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "never",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NeverConnectDisconnectedValues",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdDisconnectedValues",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumArrayCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumArrayVisualisation",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumArrayRawVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ ],
      "docs" : "A raw enum array visualisation with optional coloring based on enum thresholds.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumArrayVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumArrayRawVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumValueVisualisation",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "groupBySort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumGroupBySort",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Sorting configuration for grouped data rendering in a cell.\nIf undefined, will sort alphabetically by grouping.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumGroupBySort",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "custom",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumGroupBySortCustom",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "alphabetical",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueSort",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumGroupBySortCustom",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "order",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Specify the values in the order they should appear.\nUnspecified values will be sorted to the bottom.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumRawVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "colorMap",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "HexColor",
                    "package" : "io.nominal.scout.api"
                  }
                }
              }
            }
          }
        }
      } ],
      "docs" : "The settings for a raw enum visualisation.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumValueChannel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumValueVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumValueVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumRawVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Event",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "displayName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "eventUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "isPinned",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Figure",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "data",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Trace",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Layout",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "plotlyConfig",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The json config definition according to plotly's schema\nhttps://plotly.com/python/figure-structure/#the-toplevel-config-attribute\n"
      } ],
      "docs" : "The root figure definition for a plotly instance\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FixedDecimalPlaces",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "places",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ],
      "docs" : "Format the number to a fixed number of decimal places, padding with zeroes or rounding as needed.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyChartDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyChartDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "v2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyChartDefinitionV2",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyChartDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FrequencyPlot",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "events",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Event",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Please use the workbook's eventRefs field instead."
      }, {
        "fieldName" : "comparisonRunGroups",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonRunGroup",
                "package" : "io.nominal.scout.comparisonrun.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "valueAxes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueAxis",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "plotType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FrequencyPlotType",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "The type of plot to display. If not specified, the default is FFT.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyChartDefinitionV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FrequencyPlotV2",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "events",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Event",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Please use the workbook's eventRefs field instead."
      }, {
        "fieldName" : "comparisonRunGroups",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonRunGroup",
                "package" : "io.nominal.scout.comparisonrun.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "valueAxes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueAxis",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "plotType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FrequencyPlotType",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "The type of plot to display. If not specified, the default is FFT.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlot",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "yAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "lineStyle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LineStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ],
      "docs" : "A frequency plot that displays a real value against the frequency domain.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlotMultivariate",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "variableNames",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "axesIds",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AxisId",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "lineStyle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LineStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ],
      "docs" : "A plot that performs an analysis on an multiple signals and returns\ndata mapped to the frequency domain.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyPlotType",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "fft",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlotTypeFft",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "periodogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlotTypePeriodogram",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "psd",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlotTypePsd",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "cpsd",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlotTypeCpsd",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "nyquist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlotTypeNyquist",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "bode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlotTypeBode",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlotTypeBode",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "unwrapPhase",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "displayMode",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeAndPhaseDisplayMode",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Whether to the magnitude or phase of the output. Defaults to MAGNITUDE if not specified."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlotTypeCpsd",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "unwrapPhase",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "outputPhaseUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputPhaseUnit",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "displayMode",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeAndPhaseDisplayMode",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Whether to the magnitude or phase of the output. Defaults to MAGNITUDE if not specified."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlotTypeFft",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "window",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FftWindow",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlotTypeNyquist",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlotTypePeriodogram",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "method",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PeriodogramMethod",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyPlotTypePsd",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyPlotV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "single",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlot",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "multivariate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyPlotMultivariate",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Geo3dCustomModel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "attachmentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "fileExtension",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Geo3dDefaultModel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "QUADCOPTER"
      }, {
        "value" : "FIXEDWING"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Geo3dDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Geo3dDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoPlot3d",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Geo3dModel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "default",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dDefaultModel",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "custom",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dCustomModel",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Geo3dOrientation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "principalAxes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dOrientationPrincipalAxes",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Geo3dOrientationPrincipalAxes",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "headingVariableName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pitchVariableName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "rollVariableName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Geo3dPosition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "wgs84",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dPositionWgs84",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "ecef",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dPositionEcef",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Geo3dPositionEcef",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "ecefXVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "ecefYVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "ecefZVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Geo3dPositionWgs84",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "latitudeVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "longitudeVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "heightVariableName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "GeoAdditionalTileset",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "VFR"
      }, {
        "value" : "BATHYMETRY"
      } ],
      "docs" : "A standard tileset to overlay on the base map.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoAdditionalVariable",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "visualizationOption",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoSecondaryPlotVisualizationOption",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "GeoBaseTileset",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "STREET"
      }, {
        "value" : "SATELLITE"
      } ],
      "docs" : "The base map style. Default STREET if unspecified.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoCustomFeature",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "point",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoPoint",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ],
      "docs" : "Additional static objects on the map, such as a point representing a tower"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "GeoLine3dStyle",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "SOLID"
      }, {
        "value" : "DASH"
      }, {
        "value" : "NONE"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "GeoLineStyle",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "POINTS",
        "deprecated" : "Use SOLID instead."
      }, {
        "value" : "SOLID"
      }, {
        "value" : "DASH"
      }, {
        "value" : "NONE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoPlot3d",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plotId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "visualizationOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoPlot3dVisualizationOptions",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "position",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dPosition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "orientation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dOrientation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoPlot3dVisualizationOptions",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "lineStyle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoLine3dStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "model",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Geo3dModel",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoPlotFromLatLong",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "latitudeVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "longitudeVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "secondaryVariables",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "GeoAdditionalVariable",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "optional for backcompatibility"
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "visualizationOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoPlotVisualizationOptions",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoPlotSecondaryVisibilityConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visible",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "variableName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoPlotVisualizationOptions",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "lineStyle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoLineStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "secondaryColorVisualization",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoPlotSecondaryVisibilityConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "If visible, overwrites any existing visualization options on the geo plot."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoPoint",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "icon",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "latitude",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "longitude",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoAdditionalVariable",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ],
      "docs" : "A static coordinate on the map"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoSecondaryPlotVisualizationOption",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "asColors",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueToColorMap",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ],
      "docs" : "Specifies how values of a secondary channel should be visualized."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoVizDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoVizDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoVizDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoPlotFromLatLong",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "customFeatures",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoCustomFeature",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "baseTileset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoBaseTileset",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "additionalTileset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoAdditionalTileset",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "HistogramChartDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramChartDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramChartDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramPlot",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "displaySettings",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramDisplaySettings",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "numericBucketStrategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericHistogramBucketStrategy",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "valueAxis",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueAxis",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramDisplaySettings",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "stacked",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "sort",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramSortOrder",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramPlot",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "HistogramSortOrder",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "VALUE_ASCENDING"
      }, {
        "value" : "VALUE_DESCENDING"
      }, {
        "value" : "FREQUENCY_ASCENDING"
      }, {
        "value" : "FREQUENCY_DESCENDING"
      } ],
      "docs" : "The order in which the histogram should be sorted.\nDefault is VALUE_ASCENDING.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Layout",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plotlyLayout",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The json layout definition according to plotly's schema\nhttps://plotly.com/python/figure-structure/#the-toplevel-layout-attribute\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LineStyle",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LineStyleV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "LineStyleV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "SOLID"
      }, {
        "value" : "DASH"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LineThreshold",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "lineStyle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdLineStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LineThresholdGroup",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "shadingConfig",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdShadingConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "lines",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LineThreshold",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "defaultFill",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DefaultFill",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "To supplement a set of line thresholds, the default fill configures how the remaining space (either\nabove or below) should be colored. Transparent if empty.\n"
      } ],
      "docs" : "Line thresholds are used to mark values or demarcate regions along a single axis.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogChannel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "logChannelVariableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "visibleLogColumnNames",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogColumnName",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "tagFilters",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogTagFilter",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ],
      "docs" : "A field to save additional column names on log panels with support for multiple variables\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LogColumnName",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LogPanelDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogPanelDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogPanelDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "logChannels",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "logChannelsV2",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "LogChannel",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LogTagFilter",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "alias" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "primitive",
            "primitive" : "STRING"
          },
          "valueType" : {
            "type" : "list",
            "list" : {
              "itemType" : {
                "type" : "primitive",
                "primitive" : "STRING"
              }
            }
          }
        }
      },
      "docs" : "Tag field to filter log series data by. Although the tag values is an array,\nwe currently only support a single string key value pair to filter logs.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "MagnitudeAndPhaseDisplayMode",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "MAGNITUDE"
      }, {
        "value" : "PHASE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MaxDecimalPlaces",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "places",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ],
      "docs" : "Format the number to a maximum number of decimal places, rounding numbers that have greater precision.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NeverConnectDisconnectedValues",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ ],
      "docs" : "This option indicates that disconnected values are never connected with a line."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumberFormat",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "sigFigs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Include the specified number of significant figures, rounding if needed.\n"
      }, {
        "fieldName" : "displayOption",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumberFormatDisplayOption",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "The base display format for the number.\n"
      }, {
        "fieldName" : "fixedDecimalPlaces",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "deprecated" : "use decimalPlaces instead"
      }, {
        "fieldName" : "decimalPlaces",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DecimalPlaces",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Options for formatting the decimal part of number.\n"
      } ],
      "docs" : "Number format for numeric cells, eg 1e4 | 10000 | 10,000.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NumberFormatDisplayOption",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "SCIENTIFIC"
      }, {
        "value" : "SUCCINCT"
      }, {
        "value" : "LOCALE"
      }, {
        "value" : "PLAIN"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericArrayCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericArrayVisualisation",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "numberFormat",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumberFormat",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericArrayRawVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ ],
      "docs" : "A raw numeric array visualisation with optional coloring based on numeric thresholds.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericArrayVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericArrayRawVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericBarGaugeVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "lowThreshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "highThreshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ],
      "docs" : "The settings for a bar gauge visualisation.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericBarVisualisationV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "thresholds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Threshold",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Modifies the visualisation based on the highest threshold value that\nthe computed value equals or surpasses. The lowest and highest value will determine\nthe 0% and 100% values of the bar.\n"
      } ],
      "docs" : "A numeric visualisation that will fill the cell from left to right with a colored background\nrepresenting where the value falls inside a set range. \nThe lowest and highest values in the thresholds determine the start and end of the range. \nMiddle threshold values will still affect the cell's coloration.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericValueVisualisationV2",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "numberFormat",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumberFormat",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "groupBySort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericGroupBySort",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Sorting configuration for grouped data rendering in a cell.\nIf undefined, will sort alphabetically by grouping.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericGroupBySort",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueSort",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericRawVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericRawVisualisationV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "thresholds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Threshold",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Modifies the visualisation based on the highest threshold value that\nthe computed value surpasses.\n"
      } ],
      "docs" : "A raw numeric visualisation with optional coloring based on numeric thresholds.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericValueChannel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericValueVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericValueVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericRawVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "barGauge",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericBarGaugeVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericValueVisualisationV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericRawVisualisationV2",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "bar",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericBarVisualisationV2",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "OverlayScope",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "ROW"
      }, {
        "value" : "PANEL"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PersistAll",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PersistByValue",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "PersistValueOverlay",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "byValue",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PersistByValue",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "all",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PersistAll",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "PlotlyPanelDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PlotlyPanelDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PlotlyPanelDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "preset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PlotlyPreset",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "A preset that will render a nominal-defined plotly figure with minimum necessary inputs\n"
      }, {
        "fieldName" : "figure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Figure",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "The plotly instance definition, with extra fields for nominal-specific inputs\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "PlotlyPreset",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "SCATTER_3D"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Position",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "TOP"
      }, {
        "value" : "BOTTOM"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ProcedureVizDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureVizDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "v2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureVizDefinitionV2",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ProcedureVizDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "executionRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ProcedureExecutionRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ProcedureVizDefinitionV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "procedure",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ProcedureVizId",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "A workbook can save either an execution or a template. Workbook templates should only use the latter."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ProcedureVizId",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "executionRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureExecutionRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeValueVisualisation",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "groupBySort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeGroupBySort",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Sorting configuration for grouped data rendering in a cell.\nIf undefined, will sort alphabetically by grouping.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RangeGroupBySort",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueSort",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeRawVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "rangeColor",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "rangeLabel",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "The string to display when the condition defined by the variable's function spec is met.\n"
      }, {
        "fieldName" : "noRangeColor",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "noRangeLabel",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "The string to display when the condition defined by the variable's function spec is not met.\n"
      } ],
      "docs" : "The settings for a raw range visualisation.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeValueChannel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeValueVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RangeValueVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeRawVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Scatter3dDecimationStrategy",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "SPATIAL"
      }, {
        "value" : "TEMPORAL"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Scatter3dTraceComputeConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "decimationStrategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Scatter3dDecimationStrategy",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Bucket computed data points by their proximity in space or in time\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StalenessCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StalenessVisualisation",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "groupBySort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericGroupBySort",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Sorting configuration for grouped data rendering in a cell.\nIf undefined, will sort alphabetically by grouping.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StalenessConfiguration",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "The duration above which points are considered stale. By default this is 1 second."
      }, {
        "fieldName" : "connectStalePoints",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether or not to visually connect stale points, i.e. points whose distance exceeds that of the configured threshold. By default this is true."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "StalenessVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericRawVisualisationV2",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "bar",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericBarVisualisationV2",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StructCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "visualisation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StructVisualisation",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StructRawVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ ],
      "docs" : "A raw struct visualisation (renders the JSON as-is)\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "StructVisualisation",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructRawVisualisation",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Threshold",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The minimum value a number must be to trigger the threshold color. If used in a staleness cell, this value is in milliseconds.\n"
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        },
        "docs" : "The color to apply to the cell when the threshold is active.\n"
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "A name for this threshold to display while editing.\n"
      }, {
        "fieldName" : "latch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ThresholdLatch",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Options for pinning an indicator that data was within the threshold range \nwhile streaming.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ThresholdDisconnectedValues",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ],
      "docs" : "NOTE this is deprecated and will be translated to NeverConnectDisconnectedValues by the frontend.\nThis option indicates the duration below which disconnected values will always be connected with a line.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ThresholdLatch",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "enabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ThresholdLineStyle",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "DOTTED"
      }, {
        "value" : "SOLID"
      }, {
        "value" : "NONE"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ThresholdShadingConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "values" : [ {
        "value" : "ABOVE"
      }, {
        "value" : "BELOW"
      }, {
        "value" : "NONE"
      } ],
      "docs" : "Specifies how areas of a plot should be shaded in relation to the defined threshold lines. Will eventually\ninclude other shading configurations, like a buffer zone.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimeSeriesChartDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesChartDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesChartDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "rows",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeSeriesRow",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "comparisonRunGroups",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonRunGroup",
                "package" : "io.nominal.scout.comparisonrun.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "events",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Event",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Please use the workbook's eventRefs field instead."
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "valueAxes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueAxis",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "thresholds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AxisThresholdVisualization",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "disconnectedValues",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DisconnectedValueVisualization",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Determines when disconnected values should be connected. By default, they are always connected.",
        "deprecated" : "Use stalenessConfiguration instead"
      }, {
        "fieldName" : "stalenessConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StalenessConfiguration",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Determines when to draw lines between points. By default, the staleness threshold is 1s and stale points are connected."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesEnumPlot",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColorStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "How to color the value ranges\n"
      }, {
        "fieldName" : "position",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Position",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "Where to place the plot within the row\n"
      }, {
        "fieldName" : "persistValueOverlays",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PersistValueOverlay",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "Render certain values' full-row/full-panel color overlays\neven when not interacting with the plot\n"
      }, {
        "fieldName" : "overlayScope",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OverlayScope",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "How far to extend the overlay\n"
      }, {
        "fieldName" : "displayInline",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to display the value ranges on the same line or stagger them\nsuch that each value gets a line to itself\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesNumericPlot",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "lineStyle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LineStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesPlot",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "yAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "lineStyle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LineStyle",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimeSeriesPlotConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesNumericPlot",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "range",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesRangePlot",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesEnumPlot",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesPlotV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "yAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesPlotConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesRangePlot",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.scout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesRow",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "plots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeSeriesPlot",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "plotsV2",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TimeSeriesPlotV2",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "rowFlexSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Trace",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "plotlyTrace",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The json trace definition according to plotly's schema\nhttps://plotly.com/python/figure-structure/#the-toplevel-data-attribute\n"
      }, {
        "fieldName" : "compute",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TraceCompute",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Information needed to substitute computed data arrays into the trace\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TraceCompute",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "traceChannelVariables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelVariableName",
                "package" : "io.nominal.scout.channelvariables.api"
              }
            }
          }
        },
        "docs" : "A map of plotly trace variables to the channel variables that should load into them\n"
      }, {
        "fieldName" : "config",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TraceComputeConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TraceComputeConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "scatter3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Scatter3dTraceComputeConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueAxis",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "displayOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisDisplayOptions",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "range",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisRange",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "limit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisRange",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "position",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisPosition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "domainType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisDomainType",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "tickNumberFormat",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumberFormat",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "tooltipNumberFormat",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumberFormat",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueSort",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "If true, numerics sort high to low, enums sort alphabetically descending, and ranges sort inRange groupings first.\nIf false, the opposite is true for each.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableCell",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "variableName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "uuid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      }, {
        "fieldName" : "config",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ValueTableCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "range",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "bitFlagMap",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitFlagMapCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "staleness",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StalenessCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "numericArray",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericArrayCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "enumArray",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumArrayCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "struct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ValueTableChannel",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericValueChannel",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumValueChannel",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "range",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeValueChannel",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ValueTableDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "v2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableDefinitionV2",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "channels",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueTableChannel",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Each channel to be displayed. Based on the data type, the visualisation\noptions and settings will be different.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableDefinitionV2",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "The display title of the panel.\n"
      }, {
        "fieldName" : "showUnits",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, display units in the cells when available.\n"
      }, {
        "fieldName" : "showStalenessIndicator",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, display staleness indicator in the cells when available.\n"
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableLayout",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "stalenessIndicator",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueTableStalenessConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Configuration for showing staleness of values in the value table while streaming.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableGridRowColumnConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "position",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "The index of the row or column to apply this configuration to.\n"
      }, {
        "fieldName" : "header",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "cellConfig",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueTableMultiCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableGridValueTableCell",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "row",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "column",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "cell",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableCell",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ValueTableLayout",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "grid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableLayoutGrid",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableLayoutGrid",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "showRowHeaders",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, display row headers.\n"
      }, {
        "fieldName" : "showColumnHeaders",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, display column headers.\n"
      }, {
        "fieldName" : "showCellLabels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, display channel names in the cells.\n"
      }, {
        "fieldName" : "gridDefaultCellConfigs",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableMultiCellConfig",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "Panel-level defaults for cell visualisations\n"
      }, {
        "fieldName" : "columnConfigs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueTableGridRowColumnConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Column-level configurations.\n"
      }, {
        "fieldName" : "rowConfigs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueTableGridRowColumnConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "Row-level configurations.\n"
      }, {
        "fieldName" : "rowCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "columnCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "cells",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueTableGridValueTableCell",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "An array of cells to display in the table.\n"
      } ],
      "docs" : "A 2D grid layout for the value table where cells are laid out in specific\nrows and columns. Supports hierarchical cell visualisation configurations, favoring when present:\nthe cell's own definition, then the column's, then the row's, then the panel's.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableMultiCellConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "range",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "staleness",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StalenessCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "numericArray",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericArrayCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "enumArray",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumArrayCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "struct",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StructCellConfig",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ],
      "docs" : "Configurations for each type of cell in a grouping of heterogenous cells, such as\nfor a row, for a column, or for the entire grid.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueTableStalenessConfig",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "hideStaleness",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, will not show any indication of staleness. Defaults to false\n"
      } ],
      "docs" : "Configuration for showing staleness of values while streaming\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ValueToColorMap",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "numeric",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ],
      "docs" : "Specifies an assignment of colors across several values."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoPanelDataSource",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "refName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ],
      "docs" : "Enhanced video panel data source to be compatible with multiple assets\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VideoVizDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoVizDefinitionV1",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoVizDefinitionV1",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "fields" : [ {
        "fieldName" : "events",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Event",
                    "package" : "io.nominal.scout.chartdefinition.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Please use the workbook's eventRefs field instead."
      }, {
        "fieldName" : "comparisonRunGroups",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonRunGroup",
                "package" : "io.nominal.scout.comparisonrun.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "refName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "deprecated" : "Datasource field will be preferred over refName field to support multiple assets.\n"
      }, {
        "fieldName" : "datasource",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoPanelDataSource",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VizDefinition",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "union" : [ {
        "fieldName" : "cartesian",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CartesianChartDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "checklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistChartDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "frequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyChartDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "geo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoVizDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "geo3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Geo3dDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "histogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramChartDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "log",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogPanelDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "plotly",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PlotlyPanelDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "timeSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesChartDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "valueTable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueTableDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "video",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoVizDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "procedure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureVizDefinition",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "WorkbookVizDefinitionMap",
        "package" : "io.nominal.scout.chartdefinition.api"
      },
      "alias" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VizId",
              "package" : "io.nominal.scout.rids.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VizDefinition",
              "package" : "io.nominal.scout.chartdefinition.api"
            }
          }
        }
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetStreamConfiguration",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "notificationConfigurations",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotificationConfiguration",
                "package" : "io.nominal.scout.integrations.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "evaluationDelay",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "recoveryDelay",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchChecklistLiveStatusRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistLiveStatusRequest",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchChecklistLiveStatusResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistLiveStatusResponses",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistLiveStatusResponse",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetStreamingChecklistRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetStreamingChecklistResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "streamingChecklistInfos",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StreamingChecklistInfo",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchValidateChecklistResolutionRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValidateChecklistResolutionRequest",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchValidateChecklistResolutionResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistResults",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValidateChecklistResolutionResponse",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelLocatorWithStatus",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "channelLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelLocator",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "resolutionStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelResolutionStatus",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ChannelResolutionStatus",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "values" : [ {
        "value" : "RESOLVED"
      }, {
        "value" : "UNRESOLVED"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckLiveStatusResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckStatus",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        }
      }, {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkParameterIndex",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Checks can define a single range computation which can evaluate over multiple implementations of a context.\nThe check implementation index will correspond to the implementation index of the check condition.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CheckStatus",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "union" : [ {
        "fieldName" : "pass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Pass",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The check was evaluated and is currently in state PASS."
      }, {
        "fieldName" : "fail",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Fail",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The check was evaluated and is currently in state FAIL."
      }, {
        "fieldName" : "invalid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Invalid",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The check was evaluated and is currently in state INVALID.\nThis signifies that the check could not be evaluated due to an internal error or\nif an overly expensive computation was attempted.\n"
      }, {
        "fieldName" : "skipped",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Skipped",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The check was skipped and was not evaluated.\nThis typically occurs when the check performs operations that are not supported in the streaming context,\nor if the required channels could not be resolved.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChecklistLiveStatus",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "union" : [ {
        "fieldName" : "running",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StreamingChecklistRunning",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The streaming checklist is currently executing against the asset."
      }, {
        "fieldName" : "initializing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StreamingChecklistInitializing",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The streaming checklist is currently initializing against the asset."
      }, {
        "fieldName" : "failed",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StreamingChecklistFailed",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The streaming checklist failed unexpectedly. Please contact support."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistLiveStatusRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistLiveStatusResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistLiveStatus",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Computing",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ],
      "docs" : "The result is currently being computed."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExecuteChecklistForAssetsRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "notificationConfigurations",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotificationConfiguration",
                "package" : "io.nominal.scout.integrations.api"
              }
            }
          }
        },
        "docs" : "Checklist violations will be sent to the specified integrations. At least one integration must be specified."
      }, {
        "fieldName" : "evaluationDelay",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "Delays the evaluation of the streaming checklist. This is useful for when data is delayed.\n"
      }, {
        "fieldName" : "recoveryDelay",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "Specifies the minimum amount of time that must pass before a check can recover from a failure.\nMinimum value is 15 seconds.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Fail",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Failure",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "startInclusive",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endExclusive",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ],
      "docs" : "The time range where a check was failing."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Invalid",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "InvalidStreamingComputeNode",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "values" : [ {
        "value" : "POINT_PERSISTENCE"
      }, {
        "value" : "CUMULATIVE_SUM"
      }, {
        "value" : "INTEGRAL"
      }, {
        "value" : "STALENESS_DETECTION"
      }, {
        "value" : "LITERAL_RANGES"
      }, {
        "value" : "TIME_RANGE_FILTER"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LastFailure",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "union" : [ {
        "fieldName" : "notComputed",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotComputed",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The last failure time has not been computed, and is not currently being computed.\n"
      }, {
        "fieldName" : "computing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Computing",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The last failure time is currently being computed. This may require evaluating the history\nof data for the check, so could be slow depending on the data frequency and lookback period.\n"
      }, {
        "fieldName" : "noPreviousFailure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NoPreviousFailure",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "No previous failure was found for the check."
      }, {
        "fieldName" : "failure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Failure",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "docs" : "The most recent failure for the check."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListStreamingChecklistForAssetRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Page sizes greater than 10_000 will be rejected. Default pageSize is 100."
      }, {
        "fieldName" : "pageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListStreamingChecklistForAssetResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklists",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListStreamingChecklistRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Page sizes greater than 10_000 will be rejected. Default pageSize is 100."
      }, {
        "fieldName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListStreamingChecklistResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklists",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NoPreviousFailure",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ],
      "docs" : "No previous failure was computed for the check."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NotComputed",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ],
      "docs" : "The result has not been computed, and is not currently being computed."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Pass",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ResolvedCheckStatus",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkParameterIndex",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Checks can define a single range computation which can evaluate over multiple implementations of a context.\nThe check implementation index will correspond to the implementation index of the check condition.\n"
      }, {
        "fieldName" : "invalidStreamingComputeNodes",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InvalidStreamingComputeNode",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "channels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelLocatorWithStatus",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ],
      "docs" : "Provides the resolution status for the required channels for a check and the set of invalid streaming compute nodes present within the check's compute graph.\nUniqueness between checkRid and checkParameterIndex pairs is guaranteed.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Skipped",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StopStreamingChecklistForAssetsRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingChecklistFailed",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingChecklistInfo",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assetConfigurations",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetStreamConfiguration",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingChecklistInitializing",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StreamingChecklistRunning",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "commitId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "docs" : "The commitId of the checklist that is currently executing."
      }, {
        "fieldName" : "checkResults",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckLiveStatusResponse",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValidateChecklistResolutionRequest",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "commitId",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ],
      "docs" : "Validates that the channels referenced by the checklist can be resolved against the data sources.\nIf commit is not provided, the latest commit on main will be used.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValidateChecklistResolutionResponse",
        "package" : "io.nominal.scout.checklistexecution.api"
      },
      "fields" : [ {
        "fieldName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "resolutionStatus",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResolvedCheckStatus",
                "package" : "io.nominal.scout.checklistexecution.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArchiveChecklistsRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetChecklistMetadataRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetChecklistMetadataResponse",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "metadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistMetadata",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetJobReportsRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "jobRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "JobRid",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetJobReportsResponse",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "jobRidsToJobReports",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "JobRid",
                "package" : "io.nominal.scout.checks.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "JobReport",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Check",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkLineageRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckLineageRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "autoGeneratedTitle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "autoGeneratedDescription",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Priority",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "generatedEventType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventType",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "chart",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VersionedVizId",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources."
      }, {
        "fieldName" : "condition",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckCondition",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "If omitted, this check represents a manual check.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CheckCondition",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "numRanges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumRangesConditionV1",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "numRangesV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumRangesConditionV2",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "numRangesV3",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumRangesConditionV3",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "parameterizedNumRangesV1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ParameterizedNumRangesConditionV1",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckContext",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableLocator",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "subFunctionVariables",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "FunctionReference",
                    "package" : "io.nominal.scout.compute.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckContext",
                    "package" : "io.nominal.scout.checks.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "This field is deprecated and will be removed in a future version.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckJobResult",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Status",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "failures",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "areFailuresDecimated",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckJobSpec",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "runRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "checkImplementationIndex",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Checks can define a single range computation which can evaluate over multiple implementations of a context.\nThe check implementation index will correspond to the implementation index of the check condition.\n"
      }, {
        "fieldName" : "checkEvaluationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "checkCondition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckCondition",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChecklistEntry",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "check",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Check",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistMetadata",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "authorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assigneeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "lastUsed",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistRef",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      } ],
      "docs" : "A reference to a checklist that may be pinned to a specific commit.\nIf commit is empty, this refers to \"the latest commit on main\".\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChecklistSearchQuery",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistSearchQuery",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistSearchQuery",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use labels instead"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LabelsFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use properties"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertiesFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "authorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assigneeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistSearchQuery",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "authorIsCurrentUser",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "authorRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistVariable",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "displayName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableLocator",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CommitChecklistRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "commitMessage",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "checks",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateChecklistEntryRequest",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "checklistVariables",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedChecklistVariable",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "Variables that can be used in checks. Variables are resolved in order of declaration.\nIf variable `a` depends on variable `b`, then `b` must be defined before `a` in the list.\n"
      }, {
        "fieldName" : "latestCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, will validate that the latest commit matches this id,\nand otherwise throw CommitConflict.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Completed",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "result",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobResult",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "executionStartTime",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "executionEndTime",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeNodeWithContext",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "seriesNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckContext",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateCheckRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "checkLineageRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        },
        "docs" : "Identifies the lineage of checks this check belongs to. If not specified, a new lineage will be created.\nThis is named checkLineageRid for historical reasons but is actually a UUID.\n"
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "autoGeneratedTitle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "autoGeneratedDescription",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Priority",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "generatedEventType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventType",
                "package" : "io.nominal.event"
              }
            }
          }
        }
      }, {
        "fieldName" : "condition",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedCheckCondition",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "This field should not be omitted.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CreateChecklistEntryRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "createCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateCheckRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateChecklistRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "commitMessage",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "assigneeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "checks",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateChecklistEntryRequest",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "checklistVariables",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedChecklistVariable",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "Variables that can be used in checks. Variables are resolved in order of declaration.\nIf variable `a` depends on variable `b`, then `b` must be defined before `a` in the list.\n"
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Default value is true."
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the checklist. If not provided, the checklist will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DeprecatedCheckJobSpec",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkEvaluationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "checkCondition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckCondition",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Failed",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "failureMessage",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "executionStartTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        }
      }, {
        "fieldName" : "executionEndTime",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Function",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FunctionRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "functionLineageRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FunctionLineageRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "autoGeneratedTitle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "autoGeneratedDescription",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "functionNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FunctionNode",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ],
      "docs" : "This function type is unsupported.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FunctionNode",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAllLabelsAndPropertiesResponse",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InProgress",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "JobReport",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "jobStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobStatus",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "submittedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "JobResult",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "checkJobResult",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckJobResult",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "JobRid",
        "package" : "io.nominal.scout.checks.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "JobSpec",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "check",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DeprecatedCheckJobSpec",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "checkV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckJobSpec",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "JobStatus",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "inProgress",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InProgress",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "completed",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Completed",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "failed",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Failed",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MergeToMainRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "docs" : "If \"main\", the request will throw.\n"
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "latestCommitOnMain",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, will validate that the latest commit matches this id,\nand otherwise throw CommitConflict.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumRangesConditionV1",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "functionSpec",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelLocator",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumRangesConditionV2",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "functionSpec",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableLocator",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumRangesConditionV3",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "functionSpec",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableLocator",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "functionVariables",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "FunctionReference",
                    "package" : "io.nominal.scout.compute.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckContext",
                    "package" : "io.nominal.scout.checks.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "This field is deprecated and will be removed in a future version.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ParameterizedNumRangesConditionV1",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "implementations",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckContext",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "Each permutation of check context in the list will be executed as a new a stand-alone check. Violations\nproduced will be associated with the context of the index.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PinnedChecklistRef",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ],
      "docs" : "A reference to a checklist that is pinned to a specific commit.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SaveChecklistRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "checks",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateChecklistEntryRequest",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "checklistVariables",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedChecklistVariable",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "Variables that can be used in checks. Variables are resolved in order of declaration.\nIf variable `a` depends on variable `b`, then `b` must be defined before `a` in the list.\n"
      }, {
        "fieldName" : "latestCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, will validate that the latest commit matches this id,\nand otherwise throw CommitConflict.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchChecklistsRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistSearchQuery",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "sortBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortOptions",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "If not present, will sort by LAST_USED in descending order.\n"
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1000."
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "Use search filters instead. If no archive search filters are provided, the search will default to \nreturning NOT_ARCHIVED.\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortField",
        "package" : "io.nominal.scout.checks.api"
      },
      "values" : [ {
        "value" : "CREATED_AT"
      }, {
        "value" : "LAST_USED"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortOptions",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortField",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubmitJobsRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "jobsToExecute",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "JobSpec",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubmitJobsResponse",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "jobs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SubmittedJob",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SubmittedJob",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "jobSpec",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobSpec",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimestampLocator",
        "package" : "io.nominal.scout.checks.api"
      },
      "values" : [ {
        "value" : "RUN_START"
      }, {
        "value" : "RUN_END"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnarchiveChecklistsRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UnresolvedCheckCondition",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "numRangesV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnresolvedNumRangesConditionV2",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "numRangesV3",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnresolvedNumRangesConditionV3",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "parameterizedNumRangesV1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnresolvedParameterizedNumRangesConditionV1",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnresolvedChecklistVariable",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "displayName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnresolvedVariableLocator",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnresolvedComputeNodeWithContext",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "seriesNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnresolvedVariables",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnresolvedNumRangesConditionV2",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "functionSpec",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedVariableLocator",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnresolvedNumRangesConditionV3",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "functionSpec",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedVariableLocator",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "Default overrides for the variables used in the check condition. These variables can be overridden\nat checklist execution time.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnresolvedParameterizedNumRangesConditionV1",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "implementations",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedVariables",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "Each permutation of check context in the list will be executed as a new a stand-alone check. Violations\nproduced will be associated with the context of the index.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UnresolvedVariableLocator",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "checklistVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "A pointer to a variable in the checklist."
      }, {
        "fieldName" : "computeNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnresolvedComputeNodeWithContext",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelLocator",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampLocator",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnresolvedVariables",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnresolvedVariableLocator",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateChecklistEntryRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "createCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateCheckRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "check",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateChecklistMetadataRequest",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "assigneeRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VariableLocator",
        "package" : "io.nominal.scout.checks.api"
      },
      "union" : [ {
        "fieldName" : "checklistVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "A pointer to a checklist level variable."
      }, {
        "fieldName" : "computeNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeWithContext",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelLocator",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampLocator",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VersionedChecklist",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistMetadata",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Commit",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "functions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Function",
                    "package" : "io.nominal.scout.checks.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "The functions field is deprecated and will be removed in a future version.\n"
      }, {
        "fieldName" : "checks",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistEntry",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "checklistVariables",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistVariable",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "docs" : "Variables that can be used in checks. Variables are resolved in order of declaration.\nIf variable `a` depends on variable `b`, then `b` must be defined before `a` in the list.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VersionedChecklistPage",
        "package" : "io.nominal.scout.checks.api"
      },
      "fields" : [ {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VersionedChecklist",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AggregationType",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "max",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Max",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "min",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Min",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "mean",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Mean",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "standardDeviation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StandardDeviation",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Count",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "rootMeanSquare",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RootMeanSquare",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelVariable",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "displayName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "variableName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeWithContext",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "dataScope",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonWorkbookDataScope",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ColorByVariableConfiguration",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableLocator",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "aggregationType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregationType",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "lowerBound",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "upperBound",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ComparisonChannelVariableMap",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "alias" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VariableName",
              "package" : "io.nominal.scout.comparisonnotebook.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ChannelVariable",
              "package" : "io.nominal.scout.comparisonnotebook.api"
            }
          }
        }
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComparisonScatterPlotColoringOption",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "byVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColorByVariableConfiguration",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComparisonScatterPlotDefinition",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonScatterPlotDefinitionV1",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonScatterPlotDefinitionV1",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "rangeAggregation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeAggregationDefinition",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonScatterPlotVariable",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "axes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScatterPlotValueAxes",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "visualizationOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonScatterPlotVizOptions",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        },
        "docs" : "optional for backcompatibility."
      } ],
      "docs" : "an n x n array of scatter plots"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonScatterPlotVariable",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "xAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "the axisId when the variable is used as the x variable."
      }, {
        "fieldName" : "yAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "the axisId when the variable is used as the y variable."
      }, {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableLocator",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "aggregationType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregationType",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonScatterPlotVizOptions",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "coloring",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonScatterPlotColoringOption",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonTableColumn",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableLocator",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "visualizationOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTableColumnVisualizationOptions",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "aggregationType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AggregationType",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        },
        "docs" : "optional for backcompatibility."
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ComparisonTableColumnOptions",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "values" : [ {
        "value" : "AXIS"
      }, {
        "value" : "BARS"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonTableColumnVisualizationOptions",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "format",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTableColumnOptions",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComparisonTableDefinition",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTableDefinitionV1",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "v2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTableDefinitionV2",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonTableDefinitionV1",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "rangeAggregations",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "visualizationOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTableVisualizationOptions",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "columns",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonTableColumn",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonTableDefinitionV2",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "rangeAggregation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeAggregationDefinition",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "columns",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonTableColumn",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonTableVisualizationOptions",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "aggregationColors",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ComparisonTimeSeriesDisplayOption",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "values" : [ {
        "value" : "CAROUSEL"
      }, {
        "value" : "MULTIROW"
      } ],
      "docs" : "The display option for the time series plot. A CAROUSEL display option means that each plot grouping \nis displayed one at a time, while a MULTIROW display option means that multiple plot groupings are displayed\nsimultaneously on different rows.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ComparisonTimeSeriesGroupBy",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "values" : [ {
        "value" : "RANGE"
      }, {
        "value" : "VARIABLE"
      } ],
      "docs" : "The group by option for the time series plot. A RANGE group by option means that all channels on the\nsame time range are plotted together, while a VARIABLE group by option means that all time ranges \nfor the same channel are plotted together.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComparisonTimeSeriesPlotDefinition",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTimeSeriesPlotDefinitionV1",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonTimeSeriesPlotDefinitionV1",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "rangeAggregation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeAggregationDefinition",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "variables",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonTimeSeriesPlotVariable",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "valueAxes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ValueAxis",
                "package" : "io.nominal.scout.chartdefinition.api"
              }
            }
          }
        },
        "docs" : "a list of value ranges, where each variable is assigned to a y-axis"
      }, {
        "fieldName" : "groupBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTimeSeriesGroupBy",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "displayOption",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTimeSeriesDisplayOption",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ],
      "docs" : "a cross-range time series plot with \nconfigurable range and channel groupings\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonTimeSeriesPlotVariable",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "yAxisId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AxisId",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "the axisId when the variable is used as the y variable."
      }, {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableLocator",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ComparisonVizDefinitionMap",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "alias" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VizId",
              "package" : "io.nominal.scout.rids.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VizDefinition",
              "package" : "io.nominal.scout.comparisonnotebook.api"
            }
          }
        }
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonWorkbookContent",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "channelVariables",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonChannelVariableMap",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "charts",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonVizDefinitionMap",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        },
        "docs" : "visualizations. Charts is a legacy term."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonWorkbookContext",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableLocator",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComparisonWorkbookDataScope",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "runs",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeNodeWithContext",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "computeNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonWorkbookContext",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "supplementalContext",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SupplementalComparisonWorkbookContext",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        },
        "deprecated" : "migrated into visualization definitions."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Count",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Max",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Mean",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Min",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeAggregationContext",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "variablesToAggregate",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableWithAggregation",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeAggregationDefinition",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "dataScope",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonWorkbookDataScope",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "condition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeWithContext",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "timeWindow",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeWindow",
                "package" : "io.nominal.scout.comparisonnotebook.api"
              }
            }
          }
        },
        "docs" : "determines the window of data included in the visualization. Currently only applied on assets."
      } ],
      "docs" : "Every range aggregation must be defined by a data scope and set of conditions. This type should be used by\nevery comparison workbook viz definition.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RootMeanSquare",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScatterPlotValueAxes",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "xAxis",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueAxis",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      }, {
        "fieldName" : "yAxis",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueAxis",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        }
      } ],
      "docs" : "specifies the axes configurations for a given x and y axis."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StandardDeviation",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SupplementalComparisonWorkbookContext",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "none",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "rangeAggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeAggregationContext",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ],
      "docs" : "This is used to allow variables to specify additional context that does not fit well into the general shape of\na compute node. For example, a range aggregation variable represents a bulk computation across several inputs,\nwhose context is specified here instead.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimeWindow",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "relative",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "fixed",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampedRange",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestampedRange",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VariableLocator",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "comparisonWorkbookVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelLocator",
            "package" : "io.nominal.scout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "VariableName",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VariableWithAggregation",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "fields" : [ {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableLocator",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "aggregationType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregationType",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VizDefinition",
        "package" : "io.nominal.scout.comparisonnotebook.api"
      },
      "union" : [ {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTableDefinition",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonScatterPlotDefinition",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      }, {
        "fieldName" : "timeSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonTimeSeriesPlotDefinition",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonRun",
        "package" : "io.nominal.scout.comparisonrun.api"
      },
      "fields" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "enabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "offsetOverride",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Offset",
                "package" : "io.nominal.scout.comparisonrun.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComparisonRunGroup",
        "package" : "io.nominal.scout.comparisonrun.api"
      },
      "fields" : [ {
        "fieldName" : "uuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Offset",
            "package" : "io.nominal.scout.comparisonrun.api"
          }
        }
      }, {
        "fieldName" : "offsetAnchor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OffsetAnchor",
            "package" : "io.nominal.scout.comparisonrun.api"
          }
        }
      }, {
        "fieldName" : "runs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComparisonRun",
                "package" : "io.nominal.scout.comparisonrun.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HexColor",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Offset",
        "package" : "io.nominal.scout.comparisonrun.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "OffsetAnchor",
        "package" : "io.nominal.scout.comparisonrun.api"
      },
      "union" : [ {
        "fieldName" : "run",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OffsetRunAnchor",
            "package" : "io.nominal.scout.comparisonrun.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OffsetSeriesAnchor",
            "package" : "io.nominal.scout.comparisonrun.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OffsetRunAnchor",
        "package" : "io.nominal.scout.comparisonrun.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OffsetSeriesAnchor",
        "package" : "io.nominal.scout.comparisonrun.api"
      },
      "fields" : [ {
        "fieldName" : "seriesVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelVariableName",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AbsoluteThreshold",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Threshold defined as a real number corresponding the unit of a series.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AbsoluteTimestampSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The time unit used to define the output values. Throws an error if nanosecond or finer."
      } ],
      "docs" : "Replaces values in a series with the absolute timestamps.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AfterPersistenceWindow",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The first point in the output range will be the first point after the condition has been true\nfor the min duration and min points.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AggregateEnumSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "function",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumAggregationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Aggregates values with duplicate timestamps in the input series values into a single value using the specified aggregation function.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AggregateNumericSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "function",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericAggregationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "groupByTags",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Tags to group by for the aggregation.\nIf left empty, the tags to group by will be equivalent to those in the input series.\nIf specified, the result will be grouped ONLY by the specified tags.\nThe tags specified here MUST be a (non-strict) subset of the input series's group by tags.\n"
      }, {
        "fieldName" : "aggregateByAllGroupings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "This field's purpose is to distinguish between the two flavors of groupByTags being empty. It has no\neffect when groupByTags is non-empty.\nWhen true and groupByTags is empty, aggregate across all series in the input.\nWhen false and groupByTags is empty, the result will be grouped by the same tags as the input series.\n"
      } ],
      "docs" : "Aggregates values with duplicate timestamps in the input series values into a single value using the specified aggregation function.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AggregateUnderRangesSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericAggregationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Aggregates the input series under the ranges in the provided ranges series, and outputs a new series with one \npoint at the start of each range, where the value is the aggregation result. If a range has no points, no \npoint will be produced for it. If a range has no start, the point produced for it will be at the\nstart of the compute request range.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AllowNegativeValues",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ApproximateThresholdOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "EQUAL_TO"
      }, {
        "value" : "NOT_EQUAL_TO"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ApproximateThresholdRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "tolerance",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApproximateThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Produces a list of ranges for which the threshold condition is satisfied.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArithmeticSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LocalVariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "expression",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ArraySeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "numeric1d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Numeric1dArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enum1d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Enum1dArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ArrowArrayPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "bucketedNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedNumericArrayPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bucketedEnum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedEnumArrayPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArrowBucketedEnumPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "arrowBinary",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "docs" : "The raw binary containing Arrow IPC stream for BucketedEnumPlot"
      }, {
        "fieldName" : "groupByKeys",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "This field specifies the tags that the final output is grouped by. When you combine multiple channels, \nthis list represents the superset of all group by keys used across every individual channel.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArrowBucketedNumericPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "arrowBinary",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "docs" : "The raw binary containing Arrow IPC stream for BucketedNumericPlot"
      }, {
        "fieldName" : "groupByKeys",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "This field specifies the tags that the final output is grouped by. When you combine multiple channels, \nthis list represents the superset of all group by keys used across every individual channel.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArrowEnumPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "arrowBinary",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "docs" : "The raw binary containing Arrow IPC stream for EnumPlot"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArrowFullResolutionPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "arrowBinary",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "docs" : "The raw binary containing Arrow IPC stream for the first n rows of a full resolution plot sorted by timestamp."
      }, {
        "fieldName" : "groupByKeys",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "This field specifies the tags that the final output is grouped by. When you combine multiple channels, \nthis list represents the superset of all group by keys used across every individual channel.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArrowNumericPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "arrowBinary",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "docs" : "The raw binary containing Arrow IPC stream for NumericPlot"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetChannel",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "dataScopeName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Used to disambiguate when multiple data scopes within this asset contain channels with the same name.\n"
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "additionalTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "deprecated" : "Use additionalTagFilters"
      }, {
        "fieldName" : "additionalTagFilters",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagFilters",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Tags to filter the channel by, in addition to tag filters defined for a given Asset data scope. Throws on \ncollisions with tag keys already defined for the given Asset data scope. Only returns points that match \nboth sets of tag filters. For log series, include arg filters here in addition to tag filters.\n"
      }, {
        "fieldName" : "tagsToGroupBy",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "deprecated" : "Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.\n"
      }, {
        "fieldName" : "groupByTags",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Tags that the channel should be grouped by. If this is non-empty a grouped result will be returned\nwith an entry for each grouping. Only one of tagsToGroupBy and groupByTags should be specified.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Average",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "A average that gives the same weight to each observation inside the time window"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BandPassConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "lowPassbandFrequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "highPassbandFrequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BandStopConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "lowStopbandFrequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "highStopbandFrequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchComputeUnitResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeUnitResult",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchComputeUnitsRequest",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeUnitsRequest",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchComputeWithUnitsRequest",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeNodeRequest",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchComputeWithUnitsResponse",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeWithUnitsResult",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "BinaryArithmeticOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "ATAN2",
        "docs" : "Calculates the angle measure between the x-axis and a ray from the origin to a point (input2, input1) \nin radians.\nNote the order of arguments.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BinaryArithmeticSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "input2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BinaryArithmeticOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "Applies a point-wise transformation to a pair of series.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitAndFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "operand",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "BitOperationFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "and",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitAndFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitOrFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "xor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitXorFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "shiftRight",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitShiftRightFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "shiftLeft",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitShiftLeftFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bitTest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitTestFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitOperationSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "function",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitOperationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Casts input series values to long before applying the bitwise operation.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitOrFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "operand",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitShiftLeftFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "operand",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ],
      "docs" : "Shifts the bits in each value left according to the given operand."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitShiftRightFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "operand",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ],
      "docs" : "Right shifts the bits in each value right according to the given operand."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitTestFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "index",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ],
      "docs" : "Returns the bit at the specified index, where the right-most bit has index 0."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitXorFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "operand",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Bode",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "output",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The scaling to apply to the output magnitude. Defaults to MAGNITUDE_DB_20 if not specified."
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The type of the output frequency. Defaults to LINEAR if not specified."
      }, {
        "fieldName" : "unwrapPhase",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Unwrap the phase of the output. Defaults to true if not specified."
      } ],
      "docs" : "Returns the bode magnitude and phase of a system's frequency response."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BucketedCartesian3dPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Cartesian3dBucket",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BucketedCartesianPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CartesianBucket",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BucketedEnumArrayPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "arrowBinary",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "docs" : "The raw binary containing Arrow IPC stream for a bucketed N-dimensional enum array plot."
      }, {
        "fieldName" : "groupByKeys",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "This field specifies the tags that the final output is grouped by. When you combine multiple channels, \nthis list represents the superset of all group by keys used across every individual channel.\n"
      } ],
      "docs" : "The array is flattened out into a an arrow stream of bucketed primitive results, with an extra column to\nindicate the index of the array that the bucket corresponds to.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BucketedEnumPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "The end of the bucket, exclusive."
      }, {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumBucket",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "categories",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "BucketedGeoPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "timeBased",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeBucketedGeoPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BucketedNumericArrayPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "arrowBinary",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "docs" : "The raw binary containing Arrow IPC stream for a bucketed N-dimensional numeric array plot."
      }, {
        "fieldName" : "groupByKeys",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "This field specifies the tags that the final output is grouped by. When you combine multiple channels, \nthis list represents the superset of all group by keys used across every individual channel.\n"
      } ],
      "docs" : "The array is flattened out into a an arrow stream of bucketed primitive results, with an extra column to\nindicate the index of the array that the bucket corresponds to.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BucketedNumericPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "The end of the bucket, exclusive."
      }, {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericBucket",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Cartesian",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Scatter",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Cartesian3d",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "scatter3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Scatter3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Cartesian3dBounds",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minZ",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxZ",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Min/max bounds of an XYZ Cartesian plot, inclusive."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Cartesian3dBucket",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "deprecated" : "Switching to point-based min/maxes"
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "deprecated" : "Switching to point-based min/maxes"
      }, {
        "fieldName" : "meanX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "deprecated" : "Switching to point-based min/maxes"
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "deprecated" : "Switching to point-based min/maxes"
      }, {
        "fieldName" : "meanY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minZ",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "deprecated" : "Switching to point-based min/maxes"
      }, {
        "fieldName" : "maxZ",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "deprecated" : "Switching to point-based min/maxes"
      }, {
        "fieldName" : "meanZ",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minXPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Point3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxXPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Point3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minYPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Point3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxYPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Point3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minZPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Point3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxZPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Point3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "maxTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Cartesian3dUnitResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "z",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianBounds",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Min/max bounds of an XY Cartesian plot, inclusive."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianBucket",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "maxTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "xValues",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "yValues",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianUnitResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChannelSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceChannel",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetChannel",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "run",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunChannel",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CompactEnumPoint",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputableNode",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectValue",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "cartesian",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeCartesian",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "cartesian3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeCartesian3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "frequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomain",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "frequencyV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainV2",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "histogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Histogram",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "geo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeGeo",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "curve",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFit",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputeNode",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "log",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "array",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "struct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "curveFit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFit",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "deprecated" : "wrap raw references in a typed compute node."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeNodeFromReferenceRequest",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "node",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputableNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "referenceTs",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeNodeRequest",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "node",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputableNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputeNodeResponse",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "range",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "rangesSummary",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesSummary",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "rangeValue",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bucketedNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedNumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numericPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "singlePoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SinglePoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "arrowNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowNumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "arrowBucketedNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowBucketedNumericPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enumPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "bucketedEnum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedEnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "arrowEnum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowEnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "arrowBucketedEnum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowBucketedEnumPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "pagedLog",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PagedLogPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "logPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "cartesian",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CartesianPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bucketedCartesian",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedCartesianPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bucketedCartesian3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedCartesian3dPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bucketedGeo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketedGeoPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "frequencyDomain",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "frequencyDomainV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainPlotV2",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numericHistogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericHistogramPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enumHistogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumHistogramPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "curveFit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "grouped",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GroupedComputeNodeResponses",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "array",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowArrayPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "fullResolution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrowFullResolutionPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputeNodeResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "success",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeResponse",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeNodeWithContext",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "seriesNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputeUnitResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "single",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "cartesian",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CartesianUnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "cartesian3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Cartesian3dUnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeUnitsRequest",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "node",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputableNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ComputeWithUnitsRequest",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "reference",
        "reference" : {
          "name" : "ComputeNodeRequest",
          "package" : "io.nominal.scout.compute.api"
        }
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeWithUnitsResponse",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "computeResult",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeResponse",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "computeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeUnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeWithUnitsResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "computeResult",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "unitResult",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeUnitResult",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Context",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableValue",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "functionVariables",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "FunctionReference",
                    "package" : "io.nominal.scout.compute.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "FunctionVariables",
                    "package" : "io.nominal.scout.compute.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "This field is deprecated and will be removed in a future version.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Count",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The number of points inside the time window."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Cpsd",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The scaling to apply to the output magnitude. Defaults to MAGNITUDE_DB_10 if not specified."
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The type of the output frequency. Defaults to LINEAR if not specified. Changing the output frequency type\nmay also rescale the magnitude of the output in order to ensure the density of the output is consistent.\n"
      }, {
        "fieldName" : "unwrapPhase",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Unwrap the phase of the output. Defaults to true if not specified."
      }, {
        "fieldName" : "outputPhaseUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputPhaseUnit",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The unit of the output phase. Defaults to RADIANS if not specified."
      } ],
      "docs" : "Returns the cross-spectral density magnitude and phase of the two input series."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CumulativeSumSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Calculates the running total of the series values.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CurveFit",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "curveFitPlotType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitPlotType",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "curveFitDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitDetails",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "curveFitOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitOptions",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CurveFitDetails",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "exponential",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExponentialCurve",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "logarithmic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogarithmicCurve",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "polynomial",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PolynomialCurve",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "power",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PowerCurve",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CurveFitOptions",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CurveFitPlotType",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "timeSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesCurveFit",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterCurveFit",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CurveFitResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "r2",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "R^2 (coefficient of determination) for the fit curve, a normalized measure of how well the curve fits the data.\nUsually ranges from 0 to 1, with higher indicating better fit (points closer to fit line).\n"
      }, {
        "fieldName" : "curveResultDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveResultDetails",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Description of the fit curve."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CurveResultDetails",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "exponential",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExponentialResultDetails",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "logarithmic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogarithmicResultDetails",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "polynomial",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PolynomialResultDetails",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "power",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PowerResultDetails",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataSourceAndChannel",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataSourceChannel",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "deprecated" : "Use tagFilters"
      }, {
        "fieldName" : "tagFilters",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagFilters",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Tags to filter the channel by. Only returns points from the channel where tag values match the provided\nexpression. For log series, include arg filters here in addition to tag filters.\n"
      }, {
        "fieldName" : "tagsToGroupBy",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "deprecated" : "Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.\n"
      }, {
        "fieldName" : "groupByTags",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Tags that the channel should be grouped by. If this is non-empty a grouped result will be returned\nwith an entry for each grouping. Only one of tagsToGroupBy and groupByTags should be specified.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DecimateStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "resolution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DecimateWithResolution",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "buckets",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DecimateWithBuckets",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DecimateWithBuckets",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Number of points to generate in the output series.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DecimateWithResolution",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "resolution",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        },
        "docs" : "Resolution of the output series specifying time interval between decimated points.\nPicoseconds for picosecond-granularity dataset, nanoseconds otherwise.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DerivativeSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Time unit used to calculate the derivative. Defaults to seconds if not specified."
      }, {
        "fieldName" : "negativeValuesConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NegativeValueConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defines the strategy for handling negative output values. Defaults to allowNegativeValues if not specified.\n"
      } ],
      "docs" : "Calculates the rate of change between subsequent points.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DerivedSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "function",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FunctionDerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Represents a derived series within a compute graph.\nThis is a series that is derived from a function within a module.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "DetrendType",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "CONSTANT",
        "docs" : "Removes the mean value of the signal."
      }, {
        "value" : "LINEAR",
        "docs" : "Removes a best-fit linear trend from the signal."
      }, {
        "value" : "NO_OP",
        "docs" : "Does not perform any detrending."
      } ],
      "docs" : "The type of detrending to apply to the signal. When absent, will default to the detrend behavior for that function."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DoubleConstant",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "literal",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "DriverSeries3d",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "X"
      }, {
        "value" : "Y"
      }, {
        "value" : "Z"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DurationConstant",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "literal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DurationFilterRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "unboundedBehavior",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnboundedBehavior",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Filters a list of ranges down to only those satisfying a threshold condition on the range's duration.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Enum1dArraySeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EnumAggregationFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "MIN"
      }, {
        "value" : "MAX"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumBucket",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "histogram",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        },
        "docs" : "The map of values within the bucket to their frequency."
      }, {
        "fieldName" : "firstPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CompactEnumPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "lastPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CompactEnumPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Will be empty if the bucket only has a single point."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumConstantResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "constant",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Fills all empty resample intervals with a single constant value.\n\nIf a resampled time interval (bucket) contains no data points from the input, it will\nbe assigned the specified 'constant' as a default value. This applies to gaps at the start of the \nseries, between data points, and at the end.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumCountDuplicateSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Counts the number of points along each timestamp in the input series.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EnumFilterOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "IS_IN"
      }, {
        "value" : "IS_NOT_IN"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumFilterRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringSetConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Produces a list of ranges for which the filter condition is satisfied.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumFilterTransformationSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "filter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Outputs the values of the enum plot value within the ranges specified by a ranges node\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumHistogramBucket",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The value of the enum as a string"
      }, {
        "fieldName" : "countsByChannel",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramChannelCount",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "A bucket in an enum histogram representing all the counts\nfor a specific enumerated value, across all input series.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumHistogramNode",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumHistogramPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumHistogramBucket",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      }, {
        "fieldName" : "categories",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumPoint",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumResampleConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "interval",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Interval between resampled points"
      }, {
        "fieldName" : "interpolation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumResampleInterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Interpolation strategy to use (defaults to forward fill)."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "forwardFillResampleInterpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ForwardFillResampleInterpolationConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "constantResampleInterpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumConstantResampleInterpolationConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumResampleSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "resampleConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumResampleConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The interval at which to resample the series and interpolation strategy"
      } ],
      "docs" : "Resamples the input series to a new resolution using interpolation.\nOutputs data for timestamps corresponding to the defined frequency. Based on interpolation strategy,\ndetermines range of timestamps to output data for and interpolates values where necessary.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "aggregate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregateEnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "resample",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumResampleSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeRangeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumTimeRangeFilterSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumTimeShiftSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumUnionSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "filterTransformation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterTransformationSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "valueMap",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueMapSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "select1dArrayIndex",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectIndexFrom1dEnumArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "extractFromStruct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtractEnumFromStructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "eventAggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventsEnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumSeriesEqualityRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "equalityOperator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EqualityOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "Produces a list of ranges for which provided enum series are all equal (or are not all equal).\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumTimeRangeFilterSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Represents the start time (inclusive) of the time range."
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Represents the end time (inclusive) of the time range."
      } ],
      "docs" : "Filters the series to points within the specified time range.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumTimeShiftSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumToNumericSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "mapping",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The mapping from enum values to doubles.\n"
      }, {
        "fieldName" : "defaultValue",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The value to use for enum values not present in the mapping. If not specified, points with unmapped\nenum values will be dropped.\n"
      } ],
      "docs" : "Maps an enumerated series to a numeric series by mapping each string value to a double.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EnumUnionOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "THROW",
        "docs" : "Throws an exception if two series contain points with a duplicate timestamp."
      }, {
        "value" : "MAX",
        "docs" : "Aggregates duplicates by String MAX."
      }, {
        "value" : "MIN",
        "docs" : "Aggregates duplicates by String MIN."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumUnionSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The strategy to merge points with duplicate timestamps."
      } ],
      "docs" : "Combines multiple enum series together and outputs a single series. The strategy to merge input values\nwith the same timestamp together is specified in the operation field.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EqualityOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "ALL_EQUAL"
      }, {
        "value" : "NOT_ALL_EQUAL"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ErrorCode",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ErrorResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "errorType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorType",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "code",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorCode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ErrorType",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "Should be of the format Namespace:ErrorType"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventsEnumSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeEventQuery",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "valueSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventsEnumValueSource",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Queries events and emits an enum series where each data point corresponds to an event and the enum value is\nderived from a single event field (property, label, etc).\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EventsEnumValueSource",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Name of the event property whose value should be used as the enum value."
      }, {
        "fieldName" : "level",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The event level (INFO, FLAG, VIOLATION, SUCCESS). This field corresponds to the event type."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventsSearchRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeEventQuery",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ],
      "docs" : "Produces a range series with a range for each event matching the query.\nThrows if there are more than 1,000 results.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExcludeNegativeValues",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExponentialCurve",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExponentialResultDetails",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "a",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "b",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ],
      "docs" : "y = a * e^(b * x)"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractEnumFromStructSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "fieldPath",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Path to the field to extract as an enum series. Nested fields are separated by periods and field names cannot contain periods.\nWill filter out invalid paths and paths to sub structures.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractNumericFromStructSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "fieldPath",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Path to the field to extract as a numeric series. Nested fields are separated by periods and field names cannot contain periods.\nWill filter out invalid paths and values that cannot be converted to the specified type.\n"
      }, {
        "fieldName" : "dataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericDataType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The type the numeric data will be cast to, defaults to FLOAT64\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractStructFromStructSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "fieldPath",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Path to the field to extract as a struct. Nested fields are separated by periods and field names cannot contain periods.\nReturns an empty struct if the path is invalid or does not resolve to a valid JSON struct.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Fft",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "window",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FftWindow",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Window function applied to the input series. Defaults to RECT is not specified."
      } ],
      "docs" : "Returns the single sided amplitude spectrum of the input series."
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "FftWindow",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "BLACKMAN"
      }, {
        "value" : "HANN"
      }, {
        "value" : "HAMMING"
      }, {
        "value" : "RECT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FilterByExpressionSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "base",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LocalVariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The variable name for the series that will be returned by this filter. The expression can filter points \nconditional on multiple series. The base defines which series' points will be returned after applying all the filters.\n"
      }, {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LocalVariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "A map containing all the numeric series present in the expression."
      }, {
        "fieldName" : "expression",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "An expression that evaluates to a boolean. For example - a > 5."
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "Keeps points from the base series where the boolean expression evaluates to true. Only outputs timestamps \nwhere all input series have an entry for that timestamp, or a value can be filled using the interpolation \nconfiguration.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FirstPointMatchingCondition",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The first point in the output range will be the first point where the condition evaluates to true.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ForwardFillInterpolation",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "interpolationRadius",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ForwardFillResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "Forward fill interpolation for resampling. Rounds the earliest and latest timestamp up to the nearest interval\nmultiple and generates timestamps at the given interval between the new earliest and latest timestamps.\nFor every timestamp in the resampled timestamps, takes the last known value before the timestamp as the value.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyDomain",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "fft",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Fft",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "periodogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Periodogram",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyDomainPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "frequencies",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "amplitudes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyDomainPlotComplex",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "frequencies",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "real",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "imaginary",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FrequencyDomainPlotMagnitudeAndPhase",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "frequencies",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "magnitudes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "phases",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyDomainPlotV2",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "real",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainPlot",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "complex",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainPlotComplex",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "magnitudeAndPhase",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainPlotMagnitudeAndPhase",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyDomainV2",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "fft",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Fft",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "psd",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Psd",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "cpsd",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Cpsd",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "nyquist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Nyquist",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Bode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FunctionDerivedSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "moduleName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "functionName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "versionReference",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleVersionReference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "functionArgs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FunctionParameterName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FunctionParameterValue",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Map of function input names to their values. The function inputs must match the function's parameter\nnames and types. An input must be specified for each of the referenced function's parameters.\n"
      } ],
      "docs" : "A reference to a derived series resulting from applying a function to a set of arguments.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "FunctionParameterName",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FunctionParameterValue",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableValue",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "FunctionReference",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "Functions are deprecated and will be removed in a future version."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FunctionVariables",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableValue",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "subFunctionVariables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FunctionReference",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FunctionVariables",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoPoint",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "latLong",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatLongPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Represents a geographic point. Flexible to handle multiple types of geographic coordinate systems.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoPointWithTimestamp",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "latLongGeoNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatLongGeo",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoSummaryStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "temporal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoTemporalSummary",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoTemporalSummary",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "resolution",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoTimeBucket",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "mean",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The mean value of the GeoPoints in the bucket."
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        },
        "docs" : "The number of GeoPoints in the bucket."
      }, {
        "fieldName" : "firstPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoPointWithTimestamp",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The first GeoPoint in the bucket."
      }, {
        "fieldName" : "lastPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoPointWithTimestamp",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The last GeoPoint in the bucket. Will be empty if the bucket only has a single point."
      } ],
      "docs" : "Summary of a time-based bucket of geo points."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GroupedComputeNodeResponse",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "grouping",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Grouping",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "response",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeResponse",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GroupedComputeNodeResponses",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GroupedComputeNodeResponse",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Contains a `ComputeNodeResponse` for each applicable grouping along with metadata describing the grouping.\nAll the contained `ComputeNodeResponse`s are guaranteed to be of the same type.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Grouping",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "tagsWithValues",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "A grouping identified by a specific instantiation of tag keys and values."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HighPassConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "cutoffFrequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Histogram",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericHistogramNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumHistogramNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramChannelCount",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ],
      "docs" : "The count of the value in the bucket for the specific channel.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IncompatibleUnitOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "units",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitSymbol",
                "package" : "io.nominal.scout.units.api"
              }
            }
          }
        }
      } ],
      "docs" : "Attempted an incompatible operation of units."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IntegerConstant",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "literal",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IntegralSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Time unit used to calculate the integral. Defaults to seconds if not specified."
      } ],
      "docs" : "Calculates the running sum of the area underneath a series using the trapezoidal rule.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "InterpolationConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "forwardFillInterpolation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ForwardFillInterpolation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IntersectRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "The FE should try to pass in inputs in the order in which they should be\nevaluated for optimization's sake. Alternatively, we can let the user select\npreconditions which they know to be cheaper to compute, which we will evaluate\nfirst.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LatLongBounds",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "southWest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatLongPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "northEast",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatLongPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "The bounds of a lat long geographic area. Represented by the southwest and northeast corners \nof a rectangle, inclusive.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LatLongGeo",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "latitude",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "longitude",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LatLongBounds",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "A geo node derived from a lat and long series."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LatLongPoint",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "latitude",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "longitude",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LiteralRange",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "A literal range of values."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LiteralRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "literalRanges",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LiteralRange",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "A list of literal ranges."
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LocalVariableName",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogExactMatchCaseInsensitiveFilter",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "token",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Filters points such that the log message in each point contains an exact case-insensitive match of the\nprovided token.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LogFilterOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "regexFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogRegexFilterOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "exactMatchCaseInsensitiveFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogExactMatchCaseInsensitiveFilter",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogFilterSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogFilterOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Outputs only values of the log plot that satisfy the filter.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogPoint",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogValue",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogRegexFilterOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "regex",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Filters points such that the log message in each point matches the given re2 regular expression.\nRegular expression syntax: https://github.com/google/re2/wiki/Syntax.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LogSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogUnionSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "filter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogFilterSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogTimeShiftSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogTimeShiftSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "LogUnionOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "KEEP_ALL",
        "docs" : "Keeps all points if multiple series contain points with a duplicate timestamp."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogUnionSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The strategy to merge points with duplicate timestamps."
      } ],
      "docs" : "Combines multiple log series together and outputs a single series. The strategy to merge input values with the\nsame timestamp together is specified in the operation field.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogValue",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "args",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "id",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogarithmicCurve",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogarithmicResultDetails",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "a",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "b",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ],
      "docs" : "y = a * ln(x) + b"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LowPassConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "cutoffFrequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "MagnitudeScaling",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "LINEAR",
        "docs" : "Linear scaling of the magnitude."
      }, {
        "value" : "MAGNITUDE_DB_10",
        "docs" : "Scales the magnitude via 10 * log10(magnitude)."
      }, {
        "value" : "MAGNITUDE_DB_20",
        "docs" : "Scales the magnitude via 20 * log10(magnitude)."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MaxSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "For every timestamp specified in the input series, outputs a value that is the maximum for that timestamp\nacross all input series.\nOnly outputs timestamps where all input series have an entry for that timestamp, or a value can be filled\nusing the interpolation configuration.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Maximum",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The maximum value of points inside the time window."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MeanSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "For every timestamp specified in the input series, outputs a value that is the mean for that timestamp\nacross all input series.\nOnly outputs timestamps where all input series have an entry for that timestamp, or a value can be filled\nusing the interpolation configuration.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "MinMaxThresholdOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "OUTSIDE_BOUNDS"
      }, {
        "value" : "OUTSIDE_OR_EQUAL_TO_BOUNDS"
      }, {
        "value" : "INSIDE_BOUNDS"
      }, {
        "value" : "INSIDE_OR_EQUAL_TO_BOUNDS"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MinMaxThresholdRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "lowerBound",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "upperBound",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MinMaxThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Produces a list of ranges for which the threshold condition is satisfied.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MinSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "For every timestamp specified in the input series, outputs a value that is the minimum for that timestamp\nacross all input series.\nOnly outputs timestamps where all input series have an entry for that timestamp, or a value can be filled\nusing the interpolation configuration.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Minimum",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The minimum value of points inside the time window."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ModuleVersionReference",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "pinned",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PinnedModuleVersionReference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NegativeValueConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "allowNegativeValues",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AllowNegativeValues",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Include negative output values"
      }, {
        "fieldName" : "setNegativeValuesToZero",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetNegativeValuesToZero",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Set negative output values to zero"
      }, {
        "fieldName" : "excludeNegativeValues",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExcludeNegativeValues",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Exclude points with negative output values"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NotRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "The not ranges node will invert the ranges, filling the negative space in time.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Numeric1dArraySeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NumericAggregationFunction",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "SUM"
      }, {
        "value" : "MEAN"
      }, {
        "value" : "MIN"
      }, {
        "value" : "MAX"
      }, {
        "value" : "COUNT"
      }, {
        "value" : "STANDARD_DEVIATION"
      }, {
        "value" : "ROOT_MEAN_SQUARE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericApproximateFilterSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "tolerance",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApproximateThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Outputs the values of the numeric plot value that are approximately equal to the threshold value.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericBucket",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "min",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "max",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "mean",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "variance",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The population variance of the bucket. If the bucket has only one value, this will be 0."
      }, {
        "fieldName" : "firstPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "lastPoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericPoint",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Will be empty if the bucket only has a single point."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericConstantResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "constant",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Fills all empty resample intervals with a single constant value.\n\nIf a resampled time interval (bucket) contains no data points from the input, it will\nbe assigned the specified 'constant' as a default value. This applies to gaps at the start of the \nseries, between data points, and at the end.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NumericDataType",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "INT64"
      }, {
        "value" : "FLOAT64"
      }, {
        "value" : "UINT64"
      } ],
      "docs" : "Supported numeric data types for value casting."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericFilterTransformationSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "filter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Outputs the values of the numeric plot value within the ranges specified by a ranges node\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericHistogramBucket",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "lowerBound",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The lower bound of the bucket, inclusive"
      }, {
        "fieldName" : "upperBound",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The upper bound of the bucket, exclusive"
      }, {
        "fieldName" : "countsByChannel",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramChannelCount",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "buckets",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramChannelCount",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "deprecated" : "Use countsByChannel instead"
      } ],
      "docs" : "A bucket in a numeric histogram representing a range of values,\nand the counts of values in that range across all input series.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericHistogramBucketStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "bucketCount",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegerConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The number of buckets to use in the histogram. Width is automatically calculated from the range\nof the input series, with the lower and upper bounds of the histogram being multiples of the width.\n"
      }, {
        "fieldName" : "bucketWidthAndOffset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericHistogramBucketWidthAndOffset",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericHistogramBucketWidthAndOffset",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "width",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The width of each bucket. If offset is not specified, the left and right bounds of each bucket\nare multiples of the width. If offset is specified, the left and right bounds of each bucket are\nshifted right by the offset value.\n"
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The rightward shift to apply to the left and right bounds of each bucket. If not specified, \nthe offset will be 0. The offset must be non-negative.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericHistogramNode",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "bucketStrategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericHistogramBucketStrategy",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericHistogramPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericHistogramBucket",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NumericOutputField",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "MIN"
      }, {
        "value" : "MAX"
      }, {
        "value" : "MEAN"
      }, {
        "value" : "COUNT"
      }, {
        "value" : "VARIANCE"
      }, {
        "value" : "FIRST_POINT"
      }, {
        "value" : "LAST_POINT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericPoint",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericResampleConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "interval",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Interval between resampled points"
      }, {
        "fieldName" : "interpolation",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericResampleInterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Interpolation strategy to use (defaults to forward fill)."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "forwardFillResampleInterpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ForwardFillResampleInterpolationConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "constantResampleInterpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericConstantResampleInterpolationConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericResampleSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "resampleConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericResampleConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The interpolation strategy and interval at which to resample the series"
      } ],
      "docs" : "Resamples the input series to a new resolution using interpolation.\nOutputs data for timestamps corresponding to the defined frequency. Based on interpolation strategy,\ndetermines range of timestamps to output data for and interpolates values where necessary.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "aggregate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregateNumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "arithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArithmeticSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bitOperation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitOperationSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "countDuplicate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumCountDuplicateSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "cumulativeSum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CumulativeSumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derivative",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivativeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "integral",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegralSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "max",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MaxSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "mean",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeanSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "min",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MinSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OffsetSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "product",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProductSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "resample",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericResampleSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "rollingOperation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RollingOperationSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "signalFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SignalFilterSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "sum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "scale",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScaleSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeDifference",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeDifferenceSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "absoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AbsoluteTimestampSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeRangeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericTimeRangeFilterSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericTimeShiftSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "unaryArithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnaryArithmeticSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "binaryArithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BinaryArithmeticSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericUnionSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "unitConversion",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitConversionSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "valueDifference",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueDifferenceSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "filterTransformation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericFilterTransformationSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "thresholdFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericThresholdFilterSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "approximateFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericApproximateFilterSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "select1dArrayIndex",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectIndexFrom1dNumericArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "selectNewestPoints",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectNewestPointsSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "aggregateUnderRanges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregateUnderRangesSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "filterByExpression",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FilterByExpressionSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enumToNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumToNumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "refprop",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "extractFromStruct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtractNumericFromStructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericThresholdFilterSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Outputs only the values of the numeric plot value that satisfy the threshold condition.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericTimeRangeFilterSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Represents the start time (inclusive) of the time range."
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Represents the end time (inclusive) of the time range."
      } ],
      "docs" : "Filters the series to points within the specified time range.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericTimeShiftSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NumericUnionOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "MIN",
        "docs" : "Combines multiple points by taking the minimum value"
      }, {
        "value" : "MAX",
        "docs" : "Combines multiple points by taking the maximum value"
      }, {
        "value" : "MEAN",
        "docs" : "Combines multiple points by taking the mean of the values"
      }, {
        "value" : "SUM",
        "docs" : "Combines multiple points by taking the sum of the values"
      }, {
        "value" : "COUNT",
        "docs" : "Combines multiple points by taking the count of the values"
      }, {
        "value" : "STANDARD_DEVIATION",
        "docs" : "Combines multiple points by taking the standard deviation of the values"
      }, {
        "value" : "ROOT_MEAN_SQUARE",
        "docs" : "Combines multiple points by taking the root mean square of the values"
      }, {
        "value" : "THROW",
        "docs" : "Throws a DuplicateTimestamp error if two series contain points with a duplicate timestamp."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericUnionSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The strategy to merge points with duplicate timestamps."
      } ],
      "docs" : "Combines multiple numeric series together and outputs a single series. If the same timestamp is duplicated in\nmultiple input series, the output series will contain a single point with this timestamp. The strategy to\nmerge input values with the same timestamp together is specified in the operation field.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Nyquist",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "output",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Returns a complex-valued frequency response, H(f), of the input series to the output series."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OffsetSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "scalar",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The constant to add to each point"
      } ],
      "docs" : "For every timestamp specified in the input series, offset it by a constant factor."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OnChangeRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Produces a list of ranges for each point that has a different value to the previous point.\nA range will have identical start and end times.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "OutputFormat",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "ARROW_V3"
      }, {
        "value" : "LEGACY"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "OutputFrequencyType",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "LINEAR",
        "docs" : "Frequency in Hertz."
      }, {
        "value" : "ANGULAR",
        "docs" : "Frequency in radians per second."
      }, {
        "value" : "NORMALIZED_LINEAR",
        "docs" : "Normalized frequency, in the range [0, 0.5] for real-valued signals."
      }, {
        "value" : "NORMALIZED_ANGULAR",
        "docs" : "Normalized angular frequency, in the range [0, π] for real-valued signals."
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "OutputPhaseUnit",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "RADIANS"
      }, {
        "value" : "DEGREES"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "OutputRangeStart",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "firstPointMatchingCondition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FirstPointMatchingCondition",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The first point in the output range will be the first point where the condition evaluates to true.\n"
      }, {
        "fieldName" : "afterPersistenceWindow",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AfterPersistenceWindow",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The output range will contain points where the condition has been true\nfor at least the min duration and min points.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PaddedRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "padding",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "paddingConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangePaddingConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Configuration for how to apply padding to the ranges. Defaults to PAD_START_AND_END if not specified."
      } ],
      "docs" : "Expands ranges durations by adding temporal padding to the start, end, or both sides. Note that if the input\nranges contain a RangeValue, it will be dropped.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PageInfo",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "pageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PageToken",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ],
      "docs" : "Specification of a page for a series. Returns raw undecimated points beginning nearest to the given page\ntoken, advancing pageSize points in the time direction specified by the sign of the page size.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "PageStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "pageInfo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PageInfo",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "PageToken",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "timestampAndId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampAndId",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PagedLogPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogValue",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PageToken",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The token to retrieve the next page of logs in the direction originally requested (exclusive - not\nincluded in these results). May be empty if there are no further logs in the requested time range in the\ndirection originally requested.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ParameterInput",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableValue",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "timeRange",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Range",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Overrides the start and end time of the compute request. If either the start or end are not present, we\ndefault back to the start/end specified in the request.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ParameterizedComputeNodeRequest",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "node",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputableNode",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "parameterizedContext",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ParameterizedContext",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Specifies how certain variables should be parameterized. If a variable name appears in both the context\nand the parameterized context, it will be treated as parameterized.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ParameterizedComputeNodeResponse",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeNodeResult",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ParameterizedContext",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "parameterInputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ParameterInput",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Each parameter input provides a satisfying set of values for the parameterized compute node.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PeakRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "returnsPeaks",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "True if returning peaks, else troughs.\n",
        "deprecated" : "No longer used, use returnType instead"
      }, {
        "fieldName" : "returnType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PeakType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Optional for backcompatibility.\n"
      }, {
        "fieldName" : "minimumProminence",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The minimum topographic prominence for an extrema to be returned.\nProminence is the minimum vertical distance needed to travel from an extrema to one of greater magnitude.\n"
      } ],
      "docs" : "Produces a list of ranges for each point that is greater than its neighbors.\nPeaks at edges are discarded, and continuous, multivalue, flat peaks will return all values.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "PeakType",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "PEAK"
      }, {
        "value" : "TROUGH"
      }, {
        "value" : "BOTH"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PercentageThreshold",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Threshold defined as the percentage of a given value.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Periodogram",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "method",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PeriodogramMethod",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Returns the spectral density estimate (i.e. PSD) of the input series."
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "PeriodogramMethod",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "WELCH_BLACKMAN"
      }, {
        "value" : "WELCH_HANN"
      }, {
        "value" : "WELCH_HAMMING"
      }, {
        "value" : "WELCH_RECT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PersistenceWindowConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IntegerConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The minimum number of points for which this condition be must satisfied to include the time range in the\noutput. Must be non-negative. If not present, will default to 1.\n"
      }, {
        "fieldName" : "minDuration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DurationConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The minimum number of points for which this condition must be satisfied to include the time range in the\noutput. Must be non-negative. If not present, will default to 1 nanosecond.\n"
      }, {
        "fieldName" : "outputRangeStart",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OutputRangeStart",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Which point to use as the start of the output range. Defaults to firstPointMatchingCondition if not specified.\n"
      } ],
      "docs" : "Configures how long a condition has to be true for to output a time range, and what to use as the\nstart of the output range. For a point to be included in the output time range, both the minPoints and\nminDuration conditions must be satisfied.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PinnedModuleVersionReference",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "version",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Point3d",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "z",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PolynomialCurve",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "degree",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegerConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The highest allowable degree of the fit polynomial."
      }, {
        "fieldName" : "intercept",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PolynomialResultDetails",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "a",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ],
      "docs" : "y = sum( a_i * x^i ) for i in 0...len(a)"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PowerCurve",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PowerResultDetails",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "a",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "b",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ],
      "docs" : "y = a * x^b"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ProductSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "For every timestamp specified in the input series, outputs a value that is the product for that timestamp\nacross all input series.\nOnly outputs timestamps where all input series have an entry for that timestamp, or a value can be filled\nusing the interpolation configuration.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Psd",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The scaling to apply to the output magnitude. Defaults to MAGNITUDE_DB_10 if not specified."
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The type of the output frequency. Defaults to LINEAR if not specified. Changing the output frequency unit\nmay also rescale the magnitude of the output in order to ensure the density of the output is consistent.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Range",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeValue",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "The end represents the first timestamp that does not belong to the range. If absent, there is no known\nend to the range.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeAggregation",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "average",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "min",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "max",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "standardDeviation",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "sum",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "rootMeanSquare",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ],
      "docs" : "An aggregation value representing combined aggregation metrics for data over a range.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RangeAggregationOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "sum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Summation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "rootMeanSquare",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RootMeanSquare",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "average",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Average",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "min",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Minimum",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "max",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Maximum",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "standardDeviation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StandardDeviation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Count",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "all",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeMap",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Inclusive start value. If not specified, the start is the prior range's end value, or negative infinity."
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Exclusive end value. If not specified, the end value is the next range's start value, or positive infinity."
      }, {
        "fieldName" : "output",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The value to map to if the input value is within the range."
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "RangePaddingConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "PAD_START"
      }, {
        "value" : "PAD_END"
      }, {
        "value" : "PAD_START_AND_END"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RangeSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "approximateThreshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApproximateThresholdRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "durationFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationFilterRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enumFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enumSeriesEqualityRangesNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesEqualityRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "eventsSearch",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventsSearchRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "intersectRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntersectRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "literalRanges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LiteralRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minMaxThreshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MinMaxThresholdRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Computes ranges where the input time series matches a filter defined by lower and upper bounds, and an operator."
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "onChange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OnChangeRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "peak",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PeakRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "rangeNumericAggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNumericAggregation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "seriesCrossoverRangesNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesCrossoverRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "seriesEqualityRangesNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesEqualityRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "stabilityDetection",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StabilityDetectionRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "staleRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StaleRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdingRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Computes ranges where the input time series matches a filter defined by a single threshold and an operator."
      }, {
        "fieldName" : "unionRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnionRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "paddedRanges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PaddedRanges",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeSummary",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "range",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Range",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The range representing the minimum start and maximum end times of the ranges."
      }, {
        "fieldName" : "subRangeCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "The number of ranges found within this time range."
      } ],
      "docs" : "Summary of a set of ranges\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RangeValue",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "double",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "aggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeAggregation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "noPointsInRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ],
      "docs" : "A value attached to a range. If there are no relevant data points in the range, this will be noPointsInRange\nfor the range; otherwise, an Aggregation will be returned if this is produced by getting multiple aggregation\nvalues over a range (i.e. aggregating for all metrics over a range), and will be a double otherwise for\nsingular values (i.e. aggregating for just the sum of data values over a range).\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangesNumericAggregation",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeAggregationOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Aggregates the values of a numeric series at each range specified by the input ranges."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangesSummary",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "rangesSummary",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeSummary",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "A summary of the ranges returned from a SummarizeRanges request. Returned when the number of ranges\nfound is above a threshold.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Reference",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "RefpropProperty",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "TEMPERATURE"
      }, {
        "value" : "PRESSURE"
      }, {
        "value" : "MASS_DENSITY"
      }, {
        "value" : "MASS_SPECIFIC_ENTHALPY"
      }, {
        "value" : "MASS_SPECIFIC_INTERNAL_ENERGY"
      }, {
        "value" : "MASS_SPECIFIC_ENTROPY"
      } ],
      "docs" : "Supported properties for REFPROP calculations"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RefpropSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RefpropProperty",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "A map that maps a REFPROP property to its numeric series."
      }, {
        "fieldName" : "outputProperty",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropProperty",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The desired output property. This should not be one of the input properties."
      }, {
        "fieldName" : "substance",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropSubstance",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The substance for REFPROP calculations."
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Computes the output property given input properties for the substance using REFPROP. Initial implementation\nonly expects two input properties.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "RefpropSubstance",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "NITROGEN"
      }, {
        "value" : "OXYGEN"
      }, {
        "value" : "HELIUM"
      }, {
        "value" : "HYDROGEN"
      }, {
        "value" : "METHANE"
      }, {
        "value" : "PROPANE"
      }, {
        "value" : "BUTANE"
      }, {
        "value" : "WATER"
      }, {
        "value" : "XENON"
      }, {
        "value" : "AIR"
      } ],
      "docs" : "Supported substances for REFPROP calculations"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RollingOperationSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "window",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Window",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RollingOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RollingOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "average",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Average",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Count",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "min",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Minimum",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "max",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Maximum",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "standardDeviation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StandardDeviation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "sum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Sum",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RootMeanSquare",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The root mean square of points inside the time window."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunChannel",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Used to disambiguate when multiple assets within this run contain data scopes with the same name.\nIf not specified for a run with multiple assets, an error will be thrown.\n"
      }, {
        "fieldName" : "dataScopeName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Used to disambiguate when multiple data scopes within this run contain channels with the same name.\n"
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "additionalTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "deprecated" : "Use additionalTagFilters"
      }, {
        "fieldName" : "additionalTagFilters",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagFilters",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Tags to filter the channel by, in addition to tag filters defined for a given Run data scope. Throws on \ncollisions with tag keys already defined for the given Run data scope. Only returns points that match \nboth sets of tag filters. For log series, include arg filters here in addition to tag filters.\n"
      }, {
        "fieldName" : "tagsToGroupBy",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "deprecated" : "Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.\n"
      }, {
        "fieldName" : "groupByTags",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Tags that the channel should be grouped by. If this is non-empty a grouped result will be returned\nwith an entry for each grouping. Only one of tagsToGroupBy and groupByTags should be specified.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScaleSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "scalar",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The constant to multiply each point by"
      }, {
        "fieldName" : "scalarUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitSymbol",
                "package" : "io.nominal.scout.units.api"
              }
            }
          }
        },
        "docs" : "The units of the scalar to multiply by. If empty, the scalar is considered unit-less."
      } ],
      "docs" : "For every timestamp specified in the input series, multiply it by a constant factor."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Scatter",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "A scatter plot comprised of the values from one input series on the x-axis\nand values from another input series on the y-axis, for all points within a requested time range.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Scatter3d",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "z",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "driverSeries",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DriverSeries3d",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScatterCurveFit",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Scatter",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The x and y series to fit to."
      }, {
        "fieldName" : "options",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterFitOptions",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Fits a curve to the scatter between two series."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScatterFitOptions",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Inclusive lower bound on the x values to fit to. If omitted, does not set a bound\n(equivalent to setting this to the minimum x value among all points in the time range).\n"
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Inclusive upper bound on the x values to fit to. If omitted, does not set a bound\n(equivalent to setting this to the maximum x value among all points in the time range).\n"
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Inclusive lower bound on the y values to fit to. If omitted, does not set a bound\n(equivalent to setting this to the minimum y value among all points in the time range).\n"
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Inclusive upper bound on the y values to fit to. If omitted, does not set a bound\n(equivalent to setting this to the maximum y value among all points in the time range).\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ScatterSummarizationStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "spatial",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SpatialDecimateStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "temporal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemporalDecimateStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ScatterTemporalAggregation",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "MEAN"
      }, {
        "value" : "MIN"
      }, {
        "value" : "MAX"
      }, {
        "value" : "FIRST"
      }, {
        "value" : "LAST"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SelectIndexFrom1dEnumArraySeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Enum1dArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "index",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegerConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "For each timestamp, selects a single enum value from the 1D enum array at the specified index. If the index\nis out of bounds for an array at a given timestamp, it is omitted.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SelectIndexFrom1dNumericArraySeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Numeric1dArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "index",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegerConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "For each timestamp, selects a single numeric value from the 1D numeric array at the specified index. If the \nindex is out of bounds for an array at a given timestamp, it is omitted.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SelectNewestPointsSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numPoints",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegerConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Select the most recent N points from the input series by timestamp.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SelectValue",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "firstPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "firstValuePoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "firstRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "lastPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "lastValuePoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "lastRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Series",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "deprecated" : "use typed value of series instead."
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "log",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "array",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArraySeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "struct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SeriesCrossoverRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputA",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "inputB",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Produces a list of zero-duration ranges at the first point where two series cross over one another\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SeriesEqualityRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "equalityOperator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EqualityOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "tolerance",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "Produces a list of ranges for which provided series are all equal (or are not all equal).\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SeriesName",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SeriesSpec",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "The offset of this series relative to the time scale in which the computation is performed.\n"
      }, {
        "fieldName" : "tagsToGroupBy",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SetNegativeValuesToZero",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SignalFilterConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "lowPass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LowPassConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "highPass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HighPassConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bandPass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BandPassConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bandStop",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BandStopConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SignalFilterSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "signalFilterConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SignalFilterConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Filter type and cutoff frequencies.\n"
      }, {
        "fieldName" : "order",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegerConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Order of filter. Must be a positive integer, and is effectively doubled for bidirectional filters.\n"
      }, {
        "fieldName" : "samplingFrequency",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The sampling frequency of the input series. Used to calculate normalized frequency for cutoff frequencies.\n"
      } ],
      "docs" : "Applies IIR-based signal filtering to input series. Includes low-pass, high-pass, band-pass, and band-stop\nfilters. Currently supports variable-order bidirectional Butterworth filters, with fixed-size padding based\non SciPy output.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SinglePoint",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Value",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "precisionLoss",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Returns true if the result required downcasting to a type with less precision, \nfor example if the input series was Int64 and the result is a Float64.\n"
      } ],
      "docs" : "Return type representing a single point value."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SpatialDecimateStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "Decimate by spatial trees.\nCreates buckets by bisecting on each dimension, creating quadrants for 2d scatter and octants for 3d scatter.\nContinues subdividing by prioritizing larger undivided buckets until reaching the max amount of buckets.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StabilityDetectionRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "windowConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StabilityWindowConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Threshold",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Outputs a set of ranges where the input series is stable. For each point, the min and max are calculated over \nthe specified lookback window, including the current point. A point is considered stable if its value does \nnot deviate from the calculated min and the max by more than the threshold and the total number of points\nwithin the window is at least the specified amount. The threshold can be either fixed values or percentages \nof the value. The lookback window must be strictly positive. The minimum points threshold defaults to 2.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StabilityWindowConfiguration",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "minPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IntegerConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The minimum number of points within the window to create a stable range. Must be non-negative. If not \npresent, will default to 2.\n"
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StaleRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The start timestamp of the range. If not specified, staleness will automatically use view range start.\n"
      }, {
        "fieldName" : "endTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestampConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "deprecated" : "No longer used and will be removed"
      } ],
      "docs" : "Produces a list of ranges for which data does not exist for the specified duration or longer. Increases \nwindow size by the specified staleness threshold on both ends to capture edge cases of data not currently \nin view.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StandardDeviation",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The standard deviation of points inside the time window."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StftOptions",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "window",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FftWindow",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Window function type to use"
      }, {
        "fieldName" : "windowSymmetry",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WindowSymmetry",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Either DFT_EVEN or SYMMETRIC"
      }, {
        "fieldName" : "samplingFrequency",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "docs" : "Sampling frequency of the series in Hz. If absent, will calculate using the input series."
      }, {
        "fieldName" : "nperseg",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Number of points per window segment."
      }, {
        "fieldName" : "noverlap",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Number of points of overlap between windows. Must be less than nperseg."
      }, {
        "fieldName" : "nfft",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Number of points to use in the FFT. Must be greater than or equal to nperseg."
      }, {
        "fieldName" : "detrend",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DetrendType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Detrend the points in each window segment. If absent, will use the default detrend for that function."
      } ],
      "docs" : "Options for frequency analyses that are backed by short-time Fourier transforms.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "StringConstant",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "literal",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "StringSetConstant",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "literal",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "StructSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "extractFromStruct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtractStructFromStructSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Sum",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The sum of point values inside the time window."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SumSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InterpolationConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defaults to forward fill interpolation with a 1s interpolation radius"
      } ],
      "docs" : "For every timestamp specified in the input series, outputs a value that is the sum for that timestamp\nacross all input series.\nOnly outputs timestamps where all input series have an entry for that timestamp, or a value can be filled\nusing the interpolation configuration.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SummarizationStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "decimate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DecimateStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "page",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PageStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Paging is only valid for log series.\n"
      }, {
        "fieldName" : "truncate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TruncateStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeCartesian",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Cartesian",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CartesianBounds",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "summarizationStrategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScatterSummarizationStrategy",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The summarization strategy to use when there are more than `maxPoints`. Defaults to spatial.\n"
      }, {
        "fieldName" : "maxPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum number of points to return in the response. If more points are found, a BucketedCartesianPlot\nwill be returned. Maximum is 10,000. Defaults to 2,000 if not specified.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeCartesian3d",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Cartesian3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Cartesian3dBounds",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "maxPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum number of points to return in the response.\nIf more points are found, a BucketedCartesian3dPlot will be returned.\nMaximum is 10,000. Defaults to 2,000 if not specified.\n"
      }, {
        "fieldName" : "summarizationStrategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScatterSummarizationStrategy",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The strategy to use when summarizing the series. Only spatial decimation is supported.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeGeo",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "summaryStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoSummaryStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "maxRanges",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum number of ranges to return in the response. If more ranges are found, a RangesSummary\nwill be returned. Defaults to 2000 if not specified.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "outputFormat",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFormat",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The output format of the response. Defaults to LEGACY."
      }, {
        "fieldName" : "numericOutputFields",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "NumericOutputField",
                    "package" : "io.nominal.scout.compute.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "The fields to output from the summarization. Applies only to Arrow format numeric series.\n"
      }, {
        "fieldName" : "resolution",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        },
        "docs" : "Resolution of the output series specifying time interval between decimated points.\nPicoseconds for picosecond-granularity dataset, nanoseconds otherwise.\n",
        "deprecated" : "Use summarizationStrategy instead.\n"
      }, {
        "fieldName" : "buckets",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Number of points to generate in the output series.\n",
        "deprecated" : "Use summarizationStrategy instead.\n"
      }, {
        "fieldName" : "summarizationStrategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SummarizationStrategy",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The strategy to use when summarizing the series.\n"
      } ],
      "docs" : "Summarizes the output of a series node. The output can be a numeric, enum, log, or cartesian series.\nSummarization strategy should be specified.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Summation",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ ],
      "docs" : "The sum of points inside the time window."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TagFilter",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "key",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagFilterOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "A filter on a single tag key and set of values. For an IN operator, the tag key must match at least one of the\nvalues in the set. For a NOT_IN operator, it must not match any of the values in the set.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TagFilterOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "IN"
      }, {
        "value" : "NOT_IN"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TagFilterValidationErrorType",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "BOTH_TAGS_AND_TAG_FILTERS_PROVIDED"
      }, {
        "value" : "EMPTY_FILTER_LIST"
      }, {
        "value" : "EMPTY_TAG_VALUE_SET"
      }, {
        "value" : "NESTED_AND_OPERATIONS"
      }, {
        "value" : "DUPLICATE_TAG_KEY"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TagFilters",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "single",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagFilter",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagFilters",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "A set of tag filters to apply to a channel. Allows for combining filters on multiple tag keys, but throws if\nany one tag key is specified in more than one filter.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TemporalDecimateStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "xAggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterTemporalAggregation",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The strategy to use for aggregating the x values in each bucket."
      }, {
        "fieldName" : "yAggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterTemporalAggregation",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The strategy to use for aggregating the y values in each bucket."
      } ],
      "docs" : "Buckets the input by time range into equally sized buckets.\nThe number of buckets is determined by the maxPoints parameter.\nReturns a CartesianPlot.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Threshold",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "absolute",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AbsoluteThreshold",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "percentage",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PercentageThreshold",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ThresholdOperator",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "GREATER_THAN"
      }, {
        "value" : "GREATER_THAN_OR_EQUAL_TO"
      }, {
        "value" : "LESS_THAN"
      }, {
        "value" : "LESS_THAN_OR_EQUAL_TO"
      }, {
        "value" : "EQUAL_TO"
      }, {
        "value" : "NOT_EQUAL_TO"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ThresholdingRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DoubleConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "Produces a list of ranges for which the threshold condition is satisfied.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeBucketedGeoPlot",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "The end of the bucket, exclusive."
      }, {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GeoTimeBucket",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeDifferenceSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "The time unit used to define the output values. Defaults to seconds if not specified."
      } ],
      "docs" : "Outputs a new series where each value is the difference between the time of the current and previous points.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesCurveFit",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The series to fit. Timestamps will be used as x values and data as y values. The leftmost (earliest)\ntimestamp will be used as the value of 0, and all other timestamps will be relative to that.\n"
      }, {
        "fieldName" : "options",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesFitOptions",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Fits a curve to a series vs its timestamps."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesFitOptions",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Time unit used for the timestamps to fit against. Defaults to seconds if not specified."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestampAndId",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "id",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimestampConstant",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "literal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "variable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TruncateStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "maxPointsToReturn",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Maximum number of points to return before truncating, ordered by timestamp. Throws if greater than 10,000\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "UnaryArithmeticOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "COS",
        "docs" : "Calculates the trigonometric cosine"
      }, {
        "value" : "SIN",
        "docs" : "Calculates the trigonometric sine"
      }, {
        "value" : "TAN",
        "docs" : "Calculates the trigonometric tangent"
      }, {
        "value" : "ABS",
        "docs" : "Calculates the absolute value"
      }, {
        "value" : "ASIN",
        "docs" : "Calculates the arcsin in radians"
      }, {
        "value" : "ACOS",
        "docs" : "Calculates the arccos in radians"
      }, {
        "value" : "LOG",
        "docs" : "Calculates the base 10 logarithm"
      }, {
        "value" : "LN",
        "docs" : "Calculates the natural logarithm"
      }, {
        "value" : "SQRT",
        "docs" : "Calculates the square root"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnaryArithmeticSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnaryArithmeticOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Applies a point-wise transformation to a series. The transformation function is applied to every\nindividual data point.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "UnboundedBehavior",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "INFINITY"
      }, {
        "value" : "WINDOW_BOUND"
      } ],
      "docs" : "Dictates how empty range bounds should be handled by the compute node. Defaults to INFINITY.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnionRanges",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeSeries",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UnitComputationError",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "incompatibleUnitsOperation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IncompatibleUnitOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "unitsMissing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitsMissing",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SerializableError",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnitConversionSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "outputUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSymbol",
            "package" : "io.nominal.scout.units.api"
          }
        }
      } ],
      "docs" : "Convert the given series to a different unit."
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "UnitOperation",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "UNIT_AS_EXPONENT"
      }, {
        "value" : "NON_INTEGER_AS_EXPONENT"
      }, {
        "value" : "FLOOR_DIVISION"
      }, {
        "value" : "MODULO"
      }, {
        "value" : "CROSSOVER_COMPARISON"
      }, {
        "value" : "MAX"
      }, {
        "value" : "MIN"
      }, {
        "value" : "MEAN"
      }, {
        "value" : "UNION"
      }, {
        "value" : "ADDITION"
      }, {
        "value" : "SUBTRACTION"
      }, {
        "value" : "UNIT_CONVERSION"
      }, {
        "value" : "COMPARISON"
      }, {
        "value" : "TERNARY_OPERATOR"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UnitResult",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "success",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSymbol",
            "package" : "io.nominal.scout.units.api"
          }
        }
      }, {
        "fieldName" : "noUnitAvailable",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitComputationError",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The resulting values have no units associated. If this is because of an error, it is listed here."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnitsMissing",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "seriesRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogicalSeriesRid",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "deprecated" : "Use channels instead.\n"
      }, {
        "fieldName" : "channels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceAndChannel",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ],
      "docs" : "At least one input is missing a unit."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Value",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "stringValue",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "float64Value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "int64Value",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "arrayValue",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "optional",
              "optional" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Value",
                    "package" : "io.nominal.scout.compute.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "structValue",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        },
        "docs" : "A JSON representation of the struct"
      } ],
      "docs" : "A single value. The type is dictated by the returned variant"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueDifferenceSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "negativeValuesConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NegativeValueConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "Defines the strategy for handling negative output values. Defaults to allowNegativeValues if not specified.\n"
      } ],
      "docs" : "Outputs a new series where each value is the difference between the values of the current and previous point.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueMapSeries",
        "package" : "io.nominal.scout.compute.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The input series to map to an enumerated series"
      }, {
        "fieldName" : "mapping",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeMap",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The output of the first capturing range will be used. Ranges are start inclusive, end exclusive, must not overlap,\nand increasing from lowest to highest. Ranges can be open ended to the edge of the next or prior range.\nThe first range can be open ended to negative infinity, and the last range can be open ended to positive infinity.\n"
      }, {
        "fieldName" : "default",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringConstant",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        },
        "docs" : "The default value if not captured by any range. If not specified, points will be filtered."
      } ],
      "docs" : "Maps a continuous numeric series to a discrete enum series using the specified value ranges.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ValueStrategy",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "FIRST"
      }, {
        "value" : "LAST"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "VariableName",
        "package" : "io.nominal.scout.compute.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VariableValue",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "double",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "computeNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeWithContext",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "integer",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "derived",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivedSeries",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesSpec",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "string",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "stringSet",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Window",
        "package" : "io.nominal.scout.compute.api"
      },
      "union" : [ {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "WindowSymmetry",
        "package" : "io.nominal.scout.compute.api"
      },
      "values" : [ {
        "value" : "DFT_EVEN",
        "docs" : "Generates dft-even/periodic window values."
      }, {
        "value" : "SYMMETRIC",
        "docs" : "Generates symmetric window values."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArithmeticSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LocalVariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      }, {
        "fieldName" : "expression",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitOperationSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "function",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitOperationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianBounds",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CartesianNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputableNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeRangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectValueNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "cartesian",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeCartesianNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "frequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ComputeNodeRequest",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "node",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputableNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Context",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "variables",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesSpec",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "variablesV2",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableValue",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CumulativeSumSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DerivativeSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "negativeValuesConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NegativeValueConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumFilterRangesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "minPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The minimum number of points for which this condition is satisfied. Must be non-negative. If not present,\nwill default to 1.\n",
        "deprecated" : "Use persistenceWindowConfiguration instead."
      }, {
        "fieldName" : "minDuration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "The minimum duration for which this condition is satisfied. Must be non-negative. If not present, will\ndefault to 1 nanosecond.\n",
        "deprecated" : "Use persistenceWindowConfiguration instead."
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timeRangeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumTimeRangeFilterSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumTimeShiftSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumUnionSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumTimeRangeFilterSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumTimeShiftSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumUnionSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeriesNode",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FftNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyDomainNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "fft",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FftNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IntersectRangesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangesNode",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "arithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArithmeticSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "bitOperation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitOperationSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "cumulativeSum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CumulativeSumSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "derivative",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivativeSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "rollingOperation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RollingOperationSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "unaryArithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnaryArithmeticSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "timeDifference",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeDifferenceSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "timeRangeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericTimeRangeFilterSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericTimeShiftSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericUnionSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "valueDifference",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueDifferenceSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericTimeRangeFilterSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericTimeShiftSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericUnionSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OnChangeRangesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PersistenceWindowConfiguration",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "minPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      }, {
        "fieldName" : "minDuration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputRangeStart",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OutputRangeStart",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RangesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "onChange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OnChangeRangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "enumFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterRangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdingRangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "unionRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnionRangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "intersectRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntersectRangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RollingOperationSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "window",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Window",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RollingOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScatterNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SelectValueNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "firstPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "firstRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reference",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeCartesianNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CartesianNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CartesianBounds",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      }, {
        "fieldName" : "maxPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeRangesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "maxRanges",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "resolution",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ThresholdingRangesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "minPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The minimum number of points for which this condition is satisfied. Must be non-negative. If not present,\nwill default to 1.\n",
        "deprecated" : "Use persistenceWindowConfiguration instead."
      }, {
        "fieldName" : "minDuration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "The minimum duration for which this condition is satisfied. Must be non-negative. If not present, will\ndefault to 1 nanosecond.\n",
        "deprecated" : "Use persistenceWindowConfiguration instead."
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeDifferenceSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnaryArithmeticSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnaryArithmeticOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnionRangesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangesNode",
                "package" : "io.nominal.scout.compute.api.deprecated"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueDifferenceSeriesNode",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.api.deprecated"
          }
        }
      }, {
        "fieldName" : "negativeValuesConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NegativeValueConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VariableValue",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesSpec",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Window",
        "package" : "io.nominal.scout.compute.api.deprecated"
      },
      "union" : [ {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AbsoluteThreshold",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AbsoluteTimestampSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AggregateEnumSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "aggregationFunction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumAggregationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AggregateNumericSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "aggregationFunction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericAggregationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "groupByTags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Present optional containing empty set means explicitly group by NO tags.\nEmpty optional means inherit tag groupings from input.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArithmeticSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LocalVariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "expression",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ArraySeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "numeric1d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericArraySeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "enum1d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumArraySeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BandPassConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "lowPassbandFrequency",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "highPassbandFrequency",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BandStopConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "lowStopbandFrequency",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "highStopbandFrequency",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BinaryArithmeticSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "input2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BinaryArithmeticOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BitOperationSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "function",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitOperationFunction",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BodeNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "output",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "unwrapPhase",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Cartesian3dBounds",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minZ",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxZ",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Cartesian3dNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "scatter3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Scatter3dNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CartesianBounds",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ],
      "docs" : "Min/max bounds of an XY Cartesian plot, inclusive."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CartesianNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ClickHouseSeriesResolutionDetails",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagFilters",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "tagsToGroupBy",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "orgRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OrgRid",
            "package" : "io.nominal.authentication.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ConstantDefaultValueResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "constant",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResampleInterpolationConstantDefaultValue",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CpsdNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "unwrapPhase",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "outputPhaseUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputPhaseUnit",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CumulativeSumSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CurveFitDetails",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "exponential",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExponentialCurve",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "logarithmic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogarithmicCurve",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "polynomial",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PolynomialCurve",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "power",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PowerCurve",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CurveFitNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "curveFitPlotType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitPlotTypeNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "curveFitDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitDetails",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "curveFitOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitOptions",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CurveFitOptions",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CurveFitPlotTypeNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "timeSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesCurveFitNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterCurveFitNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DerivativeSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "negativeValuesConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NegativeValueConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DurationFilterRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "unboundedBehavior",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnboundedBehavior",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumArraySeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolvedSeries",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumCountDuplicateSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumEqualityRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EqualityOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumFilterRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumFilterTransformationSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "filter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ],
      "docs" : "Outputs the values of the enum plot value within the ranges specified by a ranges node\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumHistogramNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumResampleSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "resampleConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResampleConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EnumSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RawEnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "resample",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumResampleSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeRangeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumTimeRangeFilterSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumTimeShiftSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumUnionSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "aggregate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregateEnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "filterTransformation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterTransformationSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "valueMap",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueMapSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "arraySelect",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectIndexFromEnumArraySeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "extractFromStruct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtractEnumFromStructSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "eventAggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventsEnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumTimeRangeFilterSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumTimeShiftSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumToNumericSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "mapping",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "defaultValue",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnumUnionSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EnumSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventSearchNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.event"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventsEnumSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.event"
          }
        }
      }, {
        "fieldName" : "valueSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventsEnumValueSource",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ],
      "docs" : "Resolved node that queries events and emits an enum series where each value comes from a single event field.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EventsEnumValueSource",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "property",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "level",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExponentialCurve",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractEnumFromStructSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "fieldPath",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractNumericFromStructSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "fieldPath",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "dataType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericDataType",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtractStructFromStructSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "fieldPath",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExtremaRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "returnsPeaks",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "minimumProminence",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FftNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "window",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FftWindow",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FilterByExpressionSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "base",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LocalVariableName",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LocalVariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "expression",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ForwardFillInterpolation",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "interpolationRadius",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ForwardFillResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyDomainNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "fft",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FftNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "psd",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PsdNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FrequencyDomainNodeV2",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "fft",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FftNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "psd",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PsdNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "cpsd",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CpsdNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "nyquist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NyquistNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "bode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BodeNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "latLongGeoNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatLongGeoNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "GeoNodeSummaryStrategy",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "temporal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoNodeTemporalSummary",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeoNodeTemporalSummary",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "resolution",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HighPassConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "cutoffFrequency",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "HistogramNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "numericHistogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericHistogramNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "enumHistogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumHistogramNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IntegralSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "InterpolationConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "forwardFillInterpolation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ForwardFillInterpolation",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IntersectRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LatLongBounds",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "southWest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatLongPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "northEast",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LatLongPoint",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LatLongGeoNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "latitude",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "longitude",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LatLongBounds",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LiteralRange",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LiteralRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "granularity",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Granularity",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "literalRanges",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LiteralRange",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogFilterSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogFilterOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LogSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RawLogSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogUnionSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "filter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogFilterSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogTimeShiftSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogTimeShiftSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogUnionSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogarithmicCurve",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LowPassConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "cutoffFrequency",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MaxSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MeanSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MinMaxThresholdRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "lowerBound",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "upperBound",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MinMaxThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MinSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NominalStorageLocator",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataType",
            "package" : "io.nominal.storage.series.api"
          }
        }
      }, {
        "fieldName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ClickHouseSeriesResolutionDetails",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "isInMemoryStreamingEnabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ],
      "docs" : "A storage locator for Nominal data in the per-org data tables.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NotRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericArraySeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolvedSeries",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericFilterTransformationSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "filter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ],
      "docs" : "Outputs the values of the numeric plot value within the ranges specified by a ranges node\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericHistogramBucketStrategy",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "bucketCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "bucketWidthAndOffset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericHistogramBucketWidthAndOffset",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericHistogramBucketWidthAndOffset",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "width",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericHistogramNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VariableName",
                "package" : "io.nominal.scout.compute.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "bucketStrategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericHistogramBucketStrategy",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericResampleSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "resampleConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResampleConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NumericSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "arithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArithmeticSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "bitOperation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BitOperationSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "countDuplicate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumCountDuplicateSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "cumulativeSum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CumulativeSumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "derivative",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DerivativeSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "integral",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegralSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "max",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MaxSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "mean",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeanSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "min",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MinSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OffsetSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "product",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProductSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RawNumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "resample",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericResampleSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "rollingOperation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RollingOperationSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "aggregate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregateNumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "signalFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SignalFilterSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "sum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "scale",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScaleSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeDifference",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeDifferenceSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeRangeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericTimeRangeFilterSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeShift",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericTimeShiftSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "unaryArithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnaryArithmeticSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "binaryArithmetic",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BinaryArithmeticSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "union",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericUnionSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "unitConversion",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitConversionSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "valueDifference",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ValueDifferenceSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "filterTransformation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericFilterTransformationSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "thresholdFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericThresholdFilterSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "arraySelect",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectIndexFromNumericArraySeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "absoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AbsoluteTimestampSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "newestPoints",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectNewestPointsSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "rangesNumericAggregationToNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNumericAggregationToNumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "filterByExpression",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FilterByExpressionSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "enumToNumeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumToNumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "refprop",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "extractFromStruct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtractNumericFromStructSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericThresholdFilterSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "thresholdOperator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ],
      "docs" : "Even though this could be implementing using a filter transformation, handling it alone gives\neasier pushdown instead of indirecting through ranges nodes\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericTimeRangeFilterSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericTimeShiftSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NumericUnionSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericUnionOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NyquistNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "output",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OffsetSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "scalar",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OnChangeRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PaddedRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "padding",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "paddingConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangePaddingConfiguration",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PercentageThreshold",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PersistenceWindowConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "minPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      }, {
        "fieldName" : "minDuration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputRangeStart",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OutputRangeStart",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PolynomialCurve",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "degree",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "intercept",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PowerCurve",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ProductSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PsdNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "stftOptions",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StftOptions",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "magnitudeScaling",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MagnitudeScaling",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "outputFrequencyType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "OutputFrequencyType",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangeMap",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "output",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "RangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "durationFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DurationFilterRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "enumEquality",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumEqualityRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "enumFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumFilterRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "extrema",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtremaRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "intersectRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntersectRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "literalRanges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LiteralRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "minMaxThreshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MinMaxThresholdRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "onChange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OnChangeRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "rangeNumericAggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNumericAggregationNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "seriesCrossoverRangesNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesCrossoverRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "staleRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StaleRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "stabilityDetection",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StabilityDetectionRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdingRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "unionRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnionRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "eventSearch",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventSearchNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "paddedRanges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PaddedRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangesNumericAggregationNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangeAggregationOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RangesNumericAggregationToNumericSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNumericAggregationNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RawEnumSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolvedSeries",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RawLogSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolvedSeries",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RawNumericSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolvedSeries",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RawUntypedSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolvedSeries",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RefpropSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "firstInput",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "secondInput",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "firstProperty",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropProperty",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "secondProperty",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropProperty",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "outputProperty",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropProperty",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "substance",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RefpropSubstance",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ResampleConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "interval",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "interpolation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResampleInterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ResampleInterpolationConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "forwardFillResampleInterpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ForwardFillResampleInterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "constantDefaultValueResampleInterpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConstantDefaultValueResampleInterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ResampleInterpolationConstantDefaultValue",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "numeric",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ResolvedNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "ranges",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeRangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SelectValueNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "cartesian",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeCartesianNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "cartesian3d",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeCartesian3dNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "frequency",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "frequencyV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FrequencyDomainNodeV2",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "histogram",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "geo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizeGeoNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "curve",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CurveFitNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ResolvedSeries",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "storageLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StorageLocator",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Granularity",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ],
      "docs" : "A resolved series is a fully-formed read on a raw set of series. The data for series may be stored in the\nNominal database or externally.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RollingOperationSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "window",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Window",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RollingOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScaleSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "scalar",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "scalarUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitSymbol",
                "package" : "io.nominal.scout.units.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Scatter3dNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "z",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "driverSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DriverSeries3d",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScatterCurveFitNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "scatter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "options",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterFitOptions",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScatterFitOptions",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "minX",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "maxX",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "minY",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "maxY",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ScatterNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "x",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "y",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SelectIndexFromEnumArraySeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumArraySeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "index",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SelectIndexFromNumericArraySeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericArraySeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "index",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SelectNewestPointsSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "numPoints",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SelectValueNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "firstPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "firstValuePoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "firstRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "lastPoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "lastValuePoint",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "lastRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SeriesCrossoverRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputA",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "inputB",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RawUntypedSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "enum",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EnumSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "numeric",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "log",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "array",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArraySeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "struct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StructSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SignalFilterConfiguration",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "lowPass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LowPassConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "highPass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HighPassConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "bandPass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BandPassConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "bandStop",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BandStopConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SignalFilterSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "signalFilterConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SignalFilterConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        },
        "docs" : "Configuration for the signal filter, including filter type, cutoff frequency, and order.\n"
      }, {
        "fieldName" : "order",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Order of filter. Must be a positive integer, and is effectively doubled for bidirectional filters.\n"
      }, {
        "fieldName" : "samplingFrequency",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "docs" : "The sampling frequency of the input series. Used to calculate normalized frequency for cutoff frequencies.\nDefaults to number of points divided by timespan of series.\n"
      } ],
      "docs" : "Applies IIR-based signal filtering to input series. Includes low-pass, high-pass, band-pass, and band-stop\nfilters. Currently supports variable-order bidirectional Butterworth filters, with fixed-size padding based\non SciPy output.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StabilityDetectionRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Threshold",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "windowConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PersistenceWindowConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StaleRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "StorageLocator",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "nominal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalStorageLocator",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "external",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeries",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "StructSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "raw",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolvedSeries",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "extractFromStruct",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExtractStructFromStructSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SumSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NumericSeriesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "interpolationConfiguration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InterpolationConfiguration",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeCartesian3dNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Cartesian3dNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Cartesian3dBounds",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "maxPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      }, {
        "fieldName" : "summarizationStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterSummarizationStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeCartesianNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CartesianNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CartesianBounds",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "maxPoints",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      }, {
        "fieldName" : "summarizationStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ScatterSummarizationStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeGeoNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "summaryStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeoNodeSummaryStrategy",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RangesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "maxRanges",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SummarizeSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "summarizationStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SummarizationStrategy",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "The strategy to use when summarizing the series.\n"
      }, {
        "fieldName" : "outputFormat",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OutputFormat",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "numericOutputFields",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "NumericOutputField",
                    "package" : "io.nominal.scout.compute.api"
                  }
                }
              }
            }
          }
        }
      } ],
      "docs" : "Summarizes the output of a series node. The output can be a numeric, enum, log, or cartesian series.\nSummarization strategy should be specified.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TagFilter",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "key",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagFilterOperator",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TagFilterOperator",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "values" : [ {
        "value" : "IN"
      }, {
        "value" : "NOT_IN"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TagFilters",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "single",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagFilter",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagFilters",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Threshold",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "union" : [ {
        "fieldName" : "absolute",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AbsoluteThreshold",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "percentage",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PercentageThreshold",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ThresholdingRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ThresholdOperator",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "persistenceWindowConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PersistenceWindowConfiguration",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeDifferenceSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesCurveFitNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "options",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesFitOptions",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesFitOptions",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeUnit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnaryArithmeticSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "operation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnaryArithmeticOperation",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnionRangesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangesNode",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnitConversionSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "inputUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSymbol",
            "package" : "io.nominal.scout.units.api"
          }
        }
      }, {
        "fieldName" : "outputUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSymbol",
            "package" : "io.nominal.scout.units.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueDifferenceSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "negativeValuesConfiguration",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NegativeValueConfiguration",
                "package" : "io.nominal.scout.compute.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ValueMapSeriesNode",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "input",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NumericSeriesNode",
            "package" : "io.nominal.scout.compute.resolved.api"
          }
        }
      }, {
        "fieldName" : "mapping",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RangeMap",
                "package" : "io.nominal.scout.compute.resolved.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "default",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Window",
        "package" : "io.nominal.scout.compute.resolved.api"
      },
      "fields" : [ {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AllTimestampsForwardFillStrategy",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ {
        "fieldName" : "lookBackPeriod",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ],
      "docs" : "All timestamps will be kept.\nThe value of a channel at a timestamp will be its latest\nvalue, within the provided look back period.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Arrow",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ ],
      "docs" : "Export settings for a stream of arrow-compatible data.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "CompressionFormat",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "values" : [ {
        "value" : "GZIP"
      }, {
        "value" : "ZIP"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Csv",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ ],
      "docs" : "Export settings for a stream of `.csv` data.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ExportChannels",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "union" : [ {
        "fieldName" : "timeDomain",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExportTimeDomainChannels",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExportDataRequest",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ {
        "fieldName" : "format",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExportFormat",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "compression",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CompressionFormat",
                "package" : "io.nominal.scout.dataexport.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "resolution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolutionOption",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "channels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExportChannels",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "context",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Context",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ExportFormat",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "union" : [ {
        "fieldName" : "arrow",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Arrow",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "csv",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Csv",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "matfile",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Matfile",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExportTimeDomainChannels",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ {
        "fieldName" : "outputTimestampFormat",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampFormat",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "mergeTimestampStrategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MergeTimestampStrategy",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "channels",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeDomainChannel",
                "package" : "io.nominal.scout.dataexport.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Iso8601TimestampFormat",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Matfile",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ ],
      "docs" : "Export settings for a `.mat` file compatible with matlab.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "MergeTimestampStrategy",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "union" : [ {
        "fieldName" : "none",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NoneStrategy",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "allTimestampsForwardFill",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AllTimestampsForwardFillStrategy",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      } ],
      "docs" : "How to handle timestamps that are not aligned.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NoneStrategy",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ ],
      "docs" : "Do nothing. The value of a channel will be empty at\ntimestamps not present in its original time series.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RelativeTimestampFormat",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ {
        "fieldName" : "relativeTo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "timeUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      } ],
      "docs" : "Returns in relative time to the supplied timestamp.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ResolutionOption",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "union" : [ {
        "fieldName" : "nanoseconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "buckets",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "undecimated",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UndecimatedResolution",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      } ],
      "docs" : "The minimum desired step between adjacent timestamps. If multiple values are available for a timestamp,\nthe mean of the values will be used for numeric types and the mode of the values will be used for enum types.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeDomainChannel",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ {
        "fieldName" : "columnName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "computeNode",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Series",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimestampFormat",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "union" : [ {
        "fieldName" : "iso8601",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Iso8601TimestampFormat",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      }, {
        "fieldName" : "relative",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RelativeTimestampFormat",
            "package" : "io.nominal.scout.dataexport.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UndecimatedResolution",
        "package" : "io.nominal.scout.dataexport.api"
      },
      "fields" : [ ],
      "docs" : "Full resolution.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArchiveDataReview",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Archive the data review which created this check alert. Only performable via the archive data review endpoint;\nnot supported by Perform Check Alert Action.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluation",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkImplementationIndex",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Checks can define a single range computation which can evaluate over multiple implementations of a context.\nThe check implementation index will correspond to the implementation index of the check condition.\n"
      }, {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "state",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationAction",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "executionFinished",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckExecutionFinished",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "executionFailedToRun",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckExecutionFailedToRun",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "executionRetriggered",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExecutionRetriggered",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "executionStarted",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckExecutionStarted",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationActionLog",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "entries",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AutomaticCheckEvaluationActionLogEntry",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationActionLogEntry",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "action",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationReviewAction",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "closeWithIgnore",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseWithIgnoreAlert",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closeWithFurtherAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseWithFurtherAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reopen",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reopen",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reassign",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reassign",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "updateNotes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateNotes",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationReviewActionLog",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "entries",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AutomaticCheckEvaluationReviewActionLogEntry",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationReviewActionLogEntry",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "performedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "action",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationReviewAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AutomaticCheckEvaluationState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "pendingExecution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PendingExecutionState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "failedToExecute",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FailedToExecuteState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "passing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PassingExecutionState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "generatedAlerts",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GeneratedAlertsState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "tooManyAlerts",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TooManyAlertsState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "executing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExecutingState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckExecutionFailedToRun",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckExecutionFinished",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Status",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AutomaticCheckExecutionStarted",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchAutomaticCheckEvaluationActionRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "checkEvaluationAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationReviewAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "checkEvaluationRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AutomaticCheckEvaluationRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchAutomaticCheckEvaluationActionResponse",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "checkEvaluations",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AutomaticCheckEvaluation",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchCheckAlertActionRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "checkAlertAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "checkAlertRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckAlertRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchCheckAlertActionResponse",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "checkAlerts",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckAlert",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchInitiateDataReviewRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateDataReviewRequest",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "notificationConfigurations",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotificationConfiguration",
                "package" : "io.nominal.scout.integrations.api"
              }
            }
          }
        },
        "docs" : "If provided, checklist violations will be sent to the specified integrations."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchInitiateDataReviewResponse",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataReviewRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ],
      "docs" : "Responses are returned in the same order as the requests.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchManualCheckEvaluationActionRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "checkAlertAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManualCheckAlertAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "checkEvaluationRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ManualCheckEvaluationRid",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlert",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "implementationIndex",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      }, {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checkEvaluationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "autogeneratedCheckTitle",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "autogeneratedCheckDescription",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "assigneeRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "state",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertState",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Priority",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "chart",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VersionedVizId",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources."
      }, {
        "fieldName" : "notes",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "notebook",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CheckAlertAction",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "closeWithIgnore",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseWithIgnoreAlert",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closeWithFurtherAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseWithFurtherAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reopen",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reopen",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reassign",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reassign",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "updateNotes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateNotes",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "linkNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LinkNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "unlinkNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnlinkNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "archiveDataReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArchiveDataReview",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "unarchiveDataReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnarchiveDataReview",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertActionLog",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "entries",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckAlertActionLogEntry",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertActionLogEntry",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "performedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "action",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "CheckAlertStatus",
        "package" : "io.nominal.scout.datareview.api"
      },
      "values" : [ {
        "value" : "PENDING_REVIEW"
      }, {
        "value" : "CLOSED_IGNORED"
      }, {
        "value" : "CLOSED_REQUIRES_FURTHER_ACTION"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CheckAlertsHistogramBuckets",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "unstacked",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertsUnstackedHistogram",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertsPriorityHistogram",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertsStatusHistogram",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertsHistogramRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "numBins",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Throws if larger than 1_000."
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Matches on check name"
      }, {
        "fieldName" : "distributionVariable",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramDistributionVariable",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "docs" : "Represents the data points on the x-axis of a histogram."
      }, {
        "fieldName" : "subGroupVariable",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramSubGroupVariable",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        },
        "docs" : "The variable that divides the data into distinct groups for comparison within the histogram."
      }, {
        "fieldName" : "startTimeAfter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Filters to start times after this time, inclusive."
      }, {
        "fieldName" : "startTimeBefore",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Filters to start times before this time, exclusive."
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckAlertStatus",
                    "package" : "io.nominal.scout.datareview.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "checkRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "dataReviewRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataReviewRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "assigneeRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "UserRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "priorities",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Priority",
                    "package" : "io.nominal.scout.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "runRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pinnedChecklistRefs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PinnedChecklistRef",
                    "package" : "io.nominal.scout.checks.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "chartRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "VersionedVizId",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources."
      }, {
        "fieldName" : "notebookRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "NotebookRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "showArchived",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "To be deprecated. Use archivedStatuses instead. If not present, will not show archived data reviews \nin search results.\n"
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Filters search on check alerts based on the archived statuses provided. \nDefault is NOT_ARCHIVED only if none are provided.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertsHistogramResponse",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertsHistogramBuckets",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertsPriorityHistogram",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramPriorityBucket",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertsStatusHistogram",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramStatusBucket",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertsUnstackedHistogram",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "buckets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HistogramBucket",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CheckEvaluation",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "automaticCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluation",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "manualCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManualCheckEvaluation",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistEvaluation",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "checklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PinnedChecklistRef",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checks",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckEvaluation",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CloseAction",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "closeWithIgnore",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseWithIgnoreAlert",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closeWithFurtherAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseWithFurtherAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CloseAllLinkedAlerts",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Close all alerts associated with the same notebook with the same comment.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CloseAndDetachFromNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Close the alert and detach it from the notebook. If the alert is linked to the same notebook as other \nalerts, those alerts will maintain the reference to the notebook and the notebook will remain unlocked.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CloseAndDuplicatePreviouslyLinkedNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Close the alert and detach it from the notebook. If the alert is linked to the same notebook as other \nalerts, the notebook will be duplicated and the alert will be linked to the new notebook. The new notebook\nwill be locked.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CloseAndLinkToNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "closeAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ],
      "docs" : "Close the alert and link to notebook. Throws if the associated notebook has open alerts.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CloseStrategy",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "closeAllLinkedAlerts",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseAllLinkedAlerts",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closeAndDetachFromNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseAndDetachFromNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closeAndDuplicatePreviouslyLinkedNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseAndDuplicatePreviouslyLinkedNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CloseWithFurtherAction",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "strategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CloseStrategy",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        },
        "docs" : "Defines the strategy for reopening the alert and any alerts linked via an associated notebook. If not \nprovided, the alert will be closed naively and throw if it leaves a linked notebook in an invalid state.\n"
      } ],
      "docs" : "Close the alert with further action. If the alert is linked to the same notebook as other alerts, the other \nalerts will also be closed with further action. This will also lock the associated notebook.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CloseWithIgnoreAlert",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "strategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CloseStrategy",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        },
        "docs" : "Defines the strategy for closing the alert and any alerts linked via an associated notebook. If not \nprovided, the default strategy is closeAllLinkedAlerts.\n"
      } ],
      "docs" : "Close the alert with ignore. If the alert is linked to the same notebook as other alerts, the other \nalerts will also be closed with ignore. This will also lock the associated notebook.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ClosedWithFurtherActionState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "closedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateDataReviewRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "Selects asset to execute data review on. Required for multi-asset runs.\n"
      }, {
        "fieldName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      } ],
      "docs" : "If commit not is provided, the latest commit on main will be used.\nAsset RID is required only for multi-asset runs.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReview",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checklist",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistEvaluation",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        },
        "deprecated" : "This field is deprecated and will be removed in a future version."
      }, {
        "fieldName" : "checklistRef",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PinnedChecklistRef",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "checkEvaluations",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AutomaticCheckEvaluation",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "archived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DataReviewCheckMetricsScope",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReviewPage",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "dataReviews",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataReview",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DuplicateAndLinkNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Duplicate the notebook and link the alert to it.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExecutingState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ExecutionRetriggered",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FailedToExecuteState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      }, {
        "fieldName" : "reviewState",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckAlertState",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "reviewNotes",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "assigneeRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FindDataReviewsRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "runRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "filterByBothRunsAndAssets",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, results are filtered to data reviews w/ both run and asset in the requested runs/assets.\nDefaults to false, where assets are converted to runs and all data reviews under the linked runs\n(including data reviews on other assets sharing the parent run) will be returned.\nIt is recommended to set this to true and pass in asset RIDs for multi-asset runs.\nToggling this option has no effect if no asset RIDs are supplied.\n"
      }, {
        "fieldName" : "checklistRefs",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChecklistRef",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 1000. Will throw if larger than 1000."
      }, {
        "fieldName" : "showArchived",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "To be deprecated. Use archivedStatuses instead. Allows for inclusion of archived data reviews \nin search results alongside non-archived ones. Defaults to false if not specified.\n"
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Filters search on data reviews based on the archived statuses provided. \nDefault is NOT_ARCHIVED only if none are provided.\n"
      } ],
      "docs" : "If both sets are empty, an empty page is returned.\nIf one set is empty, that field is not considered for filtering (like a wildcard).\nIf commitId is omitted from a ChecklistRef, it will match all commits.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GeneratedAlertsState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckAlertRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "This field is deprecated and will be removed in a future version.\nUse eventRids instead.\n"
      }, {
        "fieldName" : "eventRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetDataReviewCheckMetricsRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "scope",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewCheckMetricsScope",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetDataReviewCheckMetricsResponse",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "checksPendingExecution",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksExecuting",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksPassed",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksWithEventsPendingReview",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksWithEventsClosedWithIgnore",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksWithEventsClosedWithFurtherAction",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksWithEvents",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksWithTooManyEvents",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksFailedToExecutePendingReview",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksFailedToExecuteClosedWithIgnore",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksFailedToExecuteClosedWithFurtherAction",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksFailedToExecute",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksExecuted",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "checksTotal",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "eventsPendingReview",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "eventsClosedWithIgnore",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "eventsClosedWithFurtherAction",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "eventsTotal",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramBucket",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "startInclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endExclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "HistogramDistributionVariable",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramStartTimeVariable",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramEndTimeVariable",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramPriorityBucket",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "startInclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endExclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "counts",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Priority",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramPriorityVariable",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramStartTimeVariable",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramStatusBucket",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "startInclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endExclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "counts",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckAlertStatus",
                "package" : "io.nominal.scout.datareview.api"
              }
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "HistogramStatusVariable",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "HistogramSubGroupVariable",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramPriorityVariable",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HistogramStatusVariable",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LinkNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "strategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LinkNotebookStrategy",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        },
        "docs" : "Defines the strategy for reconciling the alert with any linked alerts via the associated notebook. If not\nprovided, the alert will be linked naively and throw if it leaves a linked notebook in an invalid state.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LinkNotebookStrategy",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "duplicateAndLinkToNewNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DuplicateAndLinkNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closeAndLink",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseAndLinkToNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reopenAndLink",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReopenAndLinkToNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ManualCheckAlertAction",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "pass",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Pass",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closeWithFurtherAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CloseWithFurtherAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reopen",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reopen",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reassign",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Reassign",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "updateNotes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateNotes",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "linkNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LinkNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ManualCheckEvaluation",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManualCheckEvaluationRid",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "checkRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "state",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManualCheckEvaluationState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "assigneeRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "chart",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VersionedVizId",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources."
      }, {
        "fieldName" : "notes",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "notebook",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ManualCheckEvaluationActionLog",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "entries",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ManualCheckEvaluationActionLogEntry",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ManualCheckEvaluationActionLogEntry",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "performedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "action",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManualCheckAlertAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ManualCheckEvaluationRid",
        "package" : "io.nominal.scout.datareview.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ManualCheckEvaluationState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "pendingReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PendingReviewState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "closedWithFurtherAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ClosedWithFurtherActionState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "passing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PassState",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Pass",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PassState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "closedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PassingExecutionState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PendingExecutionState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PendingReviewState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Reassign",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "assigneeRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Reopen",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "strategy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ReopenStrategy",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        },
        "docs" : "Defines the strategy for reopening the alert and any alerts linked via an associated notebook. If not \nprovided, the default strategy is reopenAllLinkedAlerts.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ReopenAllLinkedAlerts",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Reopen all alerts associated with the same notebook and unlock the notebook.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ReopenAndDetachFromNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Reopen the alert and detach it from the notebook. If the alert is linked to the same notebook as other \nalerts, those alerts will maintain the reference to the notebook and the notebook will remain locked.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ReopenAndDuplicatePreviouslyLinkedNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Reopen the alert and detach it from the notebook. If the alert is linked to the same notebook as other \nalerts, the notebook will be duplicated and the alert will be linked to the new notebook. The new notebook\nwill be unlocked.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ReopenAndLinkToNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Reopen the alert and link to notebook. Throws if the associated notebook has closed alerts.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ReopenStrategy",
        "package" : "io.nominal.scout.datareview.api"
      },
      "union" : [ {
        "fieldName" : "reopenAllLinkedAlerts",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReopenAllLinkedAlerts",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reopenAndDetachFromNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReopenAndDetachFromNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      }, {
        "fieldName" : "reopenAndDuplicatePreviouslyLinkedNotebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReopenAndDuplicatePreviouslyLinkedNotebook",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RerunFailedAutomaticChecksRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchCheckAlertsRequest",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1_000."
      }, {
        "fieldName" : "sortBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchCheckAlertsSortOptions",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        },
        "docs" : "If not present, will sort by start time in descending order.\n"
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Matches on check name"
      }, {
        "fieldName" : "after",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Filters to start times after this time, inclusive."
      }, {
        "fieldName" : "before",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Filters to start times before this time, exclusive."
      }, {
        "fieldName" : "status",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckAlertStatus",
                    "package" : "io.nominal.scout.datareview.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "checkRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "dataReviewRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataReviewRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "assigneeRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "UserRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "priorities",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Priority",
                    "package" : "io.nominal.scout.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "runRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pinnedChecklistRefs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PinnedChecklistRef",
                    "package" : "io.nominal.scout.checks.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "chartRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "VersionedVizId",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources."
      }, {
        "fieldName" : "notebookRids",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "NotebookRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "showArchived",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "To be deprecated. Use archivedStatuses instead. If true, includes archived check alerts in the search \nresults. If not present or false, will not show archived data reviews in search results\n"
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Filters search on check alerts based on the archived statuses provided.\nDefault is NOT_ARCHIVED only if none are provided.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchCheckAlertsResponse",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "checkAlerts",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckAlert",
                "package" : "io.nominal.scout.datareview.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SearchCheckAlertsSortField",
        "package" : "io.nominal.scout.datareview.api"
      },
      "values" : [ {
        "value" : "CHECK_NAME"
      }, {
        "value" : "START"
      }, {
        "value" : "END"
      }, {
        "value" : "STATUS"
      }, {
        "value" : "PRIORITY"
      }, {
        "value" : "DURATION"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchCheckAlertsSortOptions",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchCheckAlertsSortField",
            "package" : "io.nominal.scout.datareview.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Status",
        "package" : "io.nominal.scout.datareview.api"
      },
      "values" : [ {
        "value" : "PASS"
      }, {
        "value" : "FAIL"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TooManyAlertsState",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "The number of generated alerts is greater than the maximum. The check is likely misconfigured.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnarchiveDataReview",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ],
      "docs" : "Unarchive the data review which created this check alert. Only performable via the unarchive data review \nendpoint; not supported by Perform Check Alert Action.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnlinkNotebook",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateNotes",
        "package" : "io.nominal.scout.datareview.api"
      },
      "fields" : [ {
        "fieldName" : "notes",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AllChannelsConnectionsScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ApiConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "apiUri",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The URI to connect to hit the endpoints specified in the spec."
      }, {
        "fieldName" : "tokenSecretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "Secret Rid of token secret stored in Secrets Service."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ApiScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "allChannels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AllChannelsConnectionsScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "channelAllowList",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelAllowListConnectionsScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "channelBlockList",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelBlockListConnectionsScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      } ],
      "docs" : "This config is used to scrape data from an external connections service.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BigQueryChannelNameComponent",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "includeProject",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to include the project name in the channel name."
      }, {
        "fieldName" : "includeDataset",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to include the dataset name in the channel name."
      }, {
        "fieldName" : "includeTable",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to include the table name in the channel name."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BigQueryConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "region",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LocationName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The region of the BigQuery Project (e.g. \"us-east1\")"
      }, {
        "fieldName" : "project",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProjectName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The name of the BigQuery Project"
      }, {
        "fieldName" : "dataset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The name of the dataset within the project"
      }, {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TableName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The name of the table within the dataset"
      }, {
        "fieldName" : "serviceAccountKeySecretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "Secret Rid of service account key stored in Secrets Service."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BigQueryScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "timeColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The name of the column that holds the timestamp."
      }, {
        "fieldName" : "tagColumns",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnName",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "The name of the columns that should be interpreted as tag columns"
      }, {
        "fieldName" : "channelNameComponents",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BigQueryChannelNameComponent",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "channelNameComponents will be combined, together with separator, to form\na fully qualified channel name. By default, we don't add anything\nto the column name.\n"
      }, {
        "fieldName" : "separator",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "The separator that delimits the parts of the channel name. If\nommitted, the default is a \".\".\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "BucketName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelAllowListConnectionsScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "channelAllowList",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Channel",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Only channels in this set will be scraped. Must not be empty.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelBlockListConnectionsScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "channelBlockList",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Channel",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Only channels not in this set will be scraped. Must not be empty.\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ColumnName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Connection",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "displayName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The display name of the connection. For example: \"Nominal production TimescaleDB\""
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "connectionDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "requiredTagNames",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Additional tag names that should be supplied to construct a fully qualified series. These are suggested,\nrather than strictly required.\n"
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "scraping",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScrapingConfig",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : ""
      }, {
        "fieldName" : "shouldScrape",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "The connection will be scraped iff this flag is set and scrapingConfig is present.\n"
      }, {
        "fieldName" : "limits",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LimitsConfig",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "connectionStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionStatus",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "timescale",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimescaleConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "influx",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Influx2ConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "influx1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Influx1ConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "nominal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "timestream",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestreamConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "visualCrossing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VisualCrossingConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "bigQuery",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BigQueryConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "api",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ConnectionPlottingConfiguration",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "maxUndecimatedPointsPerPage",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum number of points to return per page for undecimated queries"
      }, {
        "fieldName" : "maxUnboundedRange",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        },
        "docs" : "The maximum range (in nanoseconds) for unbounded queries"
      }, {
        "fieldName" : "maxUndecimatedPageReadsPerSecond",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "docs" : "The maximum number of page reads per second for undecimated queries"
      }, {
        "fieldName" : "maxPermitsPerSecond",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "docs" : "The maximum number of permits per second for queries"
      }, {
        "fieldName" : "maxConnections",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum number of connections to the database"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ConnectionRid",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ConnectionStatus",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "isConnected",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateConnection",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "connectionDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionDetails",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Metadata information about the connection which is not relevant to the DB connection itself."
      }, {
        "fieldName" : "requiredTagNames",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Additional tag name that are required to construct a fully qualified series.\n"
      }, {
        "fieldName" : "availableTagValues",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "set",
                  "set" : {
                    "itemType" : {
                      "type" : "reference",
                      "reference" : {
                        "name" : "TagValue",
                        "package" : "io.nominal.api"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "docs" : "In most cases, this does not to be set by the user. Throws if populated for Nominal connections, which \nhave their tags automatically indexed in the underlying database. Tags for external connections are \nperiodically scraped. Tags should only be updated  manually for Visual crossing connections.\n"
      }, {
        "fieldName" : "scraping",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScrapingConfig",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "shouldScrape",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "limits",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LimitsConfig",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the connection. If not provided, the connection will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      }, {
        "fieldName" : "markingRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MarkingRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "The markings to apply to the created connection.\nIf not provided, the connection will be visible to all users in the same workspace.\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DatasetName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Duration",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "unit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemporalUnit",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "HeaderValue",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "plain",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "secretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Influx1ConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "host",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "port",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "headers",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HeaderValue",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "A map of header name to value"
      }, {
        "fieldName" : "credentials",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PasswordCredentials",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Influx2ConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "host",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "port",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "headers",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "HeaderValue",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "A map of header name to value"
      }, {
        "fieldName" : "org",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OrgId",
            "package" : "io.nominal.scout.datasource.connection.api.influx"
          }
        }
      }, {
        "fieldName" : "tokenSecretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "Secret Rid of token secret stored in Secrets Service."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "InfluxChannelNameComponent",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "bucket",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "measurement",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InfluxScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "filter",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InfluxScrapingFilter",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "Filters are ANDed together"
      }, {
        "fieldName" : "seriesArchetypeConstruction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InfluxSeriesArchetypeConstructionConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "InfluxScrapingFilter",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InfluxScrapingFilter",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "matchBucket",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BucketName",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "Match any of the specified buckets"
      }, {
        "fieldName" : "matchMeasurement",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MeasurementName",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "Match any of the specified measurements"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InfluxSeriesArchetypeConstructionConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "channelNameComponents",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "InfluxChannelNameComponent",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "separator",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "For example, for config of the form {components: [measurement, field, tag: vehicle], separator: \".\"} will construct a\nchannel that looks like vehicle_a.measurement.field. Tags will automatically be specified inside of the archetype.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LimitsConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "maxQueryRange",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LocationName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "MeasurementName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NominalChannelNameComponent",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "valueOfTagWithName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The value of the specified TagName will be used. If the tag is not present, it will be omitted."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NominalConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "nominalDataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NominalScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "channelNameComponents",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NominalChannelNameComponent",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "channelNameComponents will be combined, together with separator, to form\na fully qualified channel name.\n"
      }, {
        "fieldName" : "separator",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PasswordCredentials",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "username",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "passwordSecretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "Secret Rid of password secret stored in Secrets Service."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "PivotedTimescaleChannelNameComponent",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The value of the name column."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PivotedTimescaleScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "filter",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimescaleScrapingFilter",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "In order for data to be picked up by the scraper, it must match all\nfilters in this list. To exclude chunks of data, it's possible to use \na not filter.\n"
      }, {
        "fieldName" : "timeColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The name of the column that holds the timestamp."
      }, {
        "fieldName" : "nameColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The name of the column that holds the series name."
      }, {
        "fieldName" : "valueColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "The name of the column that holds the series values."
      }, {
        "fieldName" : "dimensionColumns",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnName",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "The names of the columns that comprise a dimension. They should have a database index for efficient filtering. We do not discover\ndimensions based on hypertable schema because they are not necessarily configured properly.\n"
      }, {
        "fieldName" : "channelNameComponents",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PivotedTimescaleChannelNameComponent",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "channelNameComponents will be combined, together with separator, to form\na fully qualified channel name.\n"
      }, {
        "fieldName" : "separator",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "This config is used to scrape data from a Timescale database that has a pivoted schema.\ntime | name           | value | device\n 1   | temperature    | 1     | a\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PopulateSeriesRequest",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ProjectName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SchemaName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "influx",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InfluxScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "nominal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "timestream",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestreamScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "timescale",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PivotedTimescaleScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "visualCrossing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VisualCrossingScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "bigQuery",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BigQueryScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "api",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiScrapingConfig",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SecretName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SecretRid",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TableName",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TemporalUnit",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "values" : [ {
        "value" : "HOURS"
      }, {
        "value" : "DAYS"
      }, {
        "value" : "WEEKS"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimescaleConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "database",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "host",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "port",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "username",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "This is also the reference to the secret containing the password"
      }, {
        "fieldName" : "passwordSecretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "Secret Rid of password secret stored in Secrets Service."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimescaleScrapingFilter",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimescaleScrapingFilter",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      }, {
        "fieldName" : "matchTable",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TableName",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "Match any of the specified tables in the database.\n"
      }, {
        "fieldName" : "matchSchema",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SchemaName",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "Match any of the specified schemas in the database.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimestreamChannelNameComponent",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "measure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "attribute",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "valueOfTagWithName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "The value of the specified TagName will be used. If the tag is not present, it will be omitted."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestreamConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "nominalRoleArn",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The role ARN owned by Nominal that has permission to assume the externalRoleArn."
      }, {
        "fieldName" : "nominalRoleRegion",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "AWS region that contains the Nominal role."
      }, {
        "fieldName" : "externalRegion",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "AWS region that contains the Timestream instance."
      }, {
        "fieldName" : "externalRoleArn",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The role ARN used to make queries to Timestream. This role is owned by the AWS account that owns the Timestream instance.\n"
      }, {
        "fieldName" : "database",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Database inside of the Timestream instance to connect to."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestreamScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "filter",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestreamScrapingFilter",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "In order for data to be picked up by the scraper, it must match all\nfilters in this list.\n"
      }, {
        "fieldName" : "channelNameComponents",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimestreamChannelNameComponent",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "channelNameComponents will be combined, together with separator, to form\na fully qualified channel name.\n"
      }, {
        "fieldName" : "separator",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "maxLookBackPeriodHours",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The maximum time in hours to look back over series data to find unique measure and tag combinations.\nIf not specified, the default look back period will be used.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimestreamScrapingFilter",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "union" : [ {
        "fieldName" : "matchTable",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TableName",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "Match any of the specified tables in the database.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateConnectionRequest",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                },
                "valueType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "connectionDetails",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ConnectionDetails",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "requiredTagNames",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "availableTagValues",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "set",
                  "set" : {
                    "itemType" : {
                      "type" : "reference",
                      "reference" : {
                        "name" : "TagValue",
                        "package" : "io.nominal.api"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "docs" : "In most cases, this does not to be set by the user. Throws if populated for Nominal connections, which \nhave their tags automatically indexed in the underlying database. Tags for external connections are \nperiodically scraped. Tags should only be updated manually for Visual crossing connections.\n"
      }, {
        "fieldName" : "scraping",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScrapingConfig",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "shouldScrape",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "limits",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LimitsConfig",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        }
      } ],
      "docs" : "Fields that are empty will be treated as a no-op update.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VisualCrossingAvailableSeries",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VisualCrossingType",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        }
      } ],
      "docs" : "Deprecated and not used for anything anymore, see record VisualCrossingAvailableSeries instead.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VisualCrossingConnectionDetails",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "apiKeySecretRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "docs" : "Secret Rid of API key stored in Secrets Service."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VisualCrossingScrapingConfig",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "fields" : [ {
        "fieldName" : "availableSeries",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VisualCrossingAvailableSeries",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "docs" : "list of available channels",
        "deprecated" : "No longer used for anything"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "VisualCrossingType",
        "package" : "io.nominal.scout.datasource.connection.api"
      },
      "values" : [ {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "OrgId",
        "package" : "io.nominal.scout.datasource.connection.api.influx"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "FavoriteResource",
        "package" : "io.nominal.scout.favorites.api"
      },
      "union" : [ {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "run",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "notebook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "notebookTemplate",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "checklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "savedView",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "procedure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FavoritesListResponse",
        "package" : "io.nominal.scout.favorites.api"
      },
      "fields" : [ {
        "fieldName" : "favorites",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FavoriteResource",
                "package" : "io.nominal.scout.favorites.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ResourceType",
        "package" : "io.nominal.scout.favorites.api"
      },
      "values" : [ {
        "value" : "ASSET"
      }, {
        "value" : "RUN"
      }, {
        "value" : "NOTEBOOK"
      }, {
        "value" : "NOTEBOOK_TEMPLATE"
      }, {
        "value" : "CHECKLIST"
      }, {
        "value" : "SAVED_VIEW"
      }, {
        "value" : "PROCEDURE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SetFavoritesListRequest",
        "package" : "io.nominal.scout.favorites.api"
      },
      "fields" : [ {
        "fieldName" : "resources",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FavoriteResource",
                "package" : "io.nominal.scout.favorites.api"
              }
            }
          }
        },
        "docs" : "The resources to set as the user's favorites. Note that the provided list will overwrite \nall the user's previous favorites.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CreateIntegrationDetails",
        "package" : "io.nominal.scout.integrations.api"
      },
      "union" : [ {
        "fieldName" : "createSimpleWebhookDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateSimpleWebhookDetails",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "createOpsgenieIntegrationDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateOpsgenieIntegrationDetails",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateIntegrationRequest",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "createIntegrationDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateIntegrationDetails",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the integration. If not provided, the integration will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateOpsgenieIntegrationDetails",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "apiKey",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "region",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OpsgenieRegion",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSimpleWebhookDetails",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "webhook",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GenerateSlackWebhookResponse",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "url",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Integration",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationRid",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "integrationDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationDetails",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ],
      "docs" : "Configuration details used to connect to an external service."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "IntegrationDetails",
        "package" : "io.nominal.scout.integrations.api"
      },
      "union" : [ {
        "fieldName" : "slackWebhookIntegration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SlackWebhookIntegration",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "opsgenieIntegration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OpsgenieIntegration",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "simpleWebhookIntegration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SimpleWebhookIntegration",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "IntegrationRid",
        "package" : "io.nominal.scout.integrations.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NotificationConfiguration",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "integrationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationRid",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "notificationFilters",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "NotificationFilter",
                    "package" : "io.nominal.scout.integrations.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Specifies the type of notifications to filter. If not provided, all notifications are sent."
      }, {
        "fieldName" : "appendedWorkbookRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "If provided, appends a link to the workbook specified by the RID to the notification."
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "20 tags max, 50 characters max each. Tags are used to filter messages in Opsgenie. For other integrations, tags are ignored."
      } ],
      "docs" : "Configuration details to send notifications to a linked integration."
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NotificationFilter",
        "package" : "io.nominal.scout.integrations.api"
      },
      "values" : [ {
        "value" : "EXECUTION_ERROR"
      } ],
      "docs" : "Specifies a type of notification to filter."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "OpsgenieIntegration",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "region",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OpsgenieRegion",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "OpsgenieRegion",
        "package" : "io.nominal.scout.integrations.api"
      },
      "values" : [ {
        "value" : "US"
      }, {
        "value" : "EU"
      } ],
      "docs" : "Opsgenie region for the account linked to the provided API key.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SendMessageRequest",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Optional title for the message. 130 characters max."
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "20 tags max, 50 characters max each. Tags are used to filter messages in Opsgenie. For other integrations, tags are ignored."
      }, {
        "fieldName" : "opsGenieAlias",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Alias to use for the Opsgenie alert deduplication. 512 characters max."
      }, {
        "fieldName" : "integrationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationRid",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Priority",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SimpleWebhookIntegration",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SlackInstanceType",
        "package" : "io.nominal.scout.integrations.api"
      },
      "values" : [ {
        "value" : "COMMERCIAL"
      }, {
        "value" : "GOV"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SlackWebhookIntegration",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "teamName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "channelId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "slackInstance",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SlackInstanceType",
                "package" : "io.nominal.scout.integrations.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateIntegrationDetails",
        "package" : "io.nominal.scout.integrations.api"
      },
      "union" : [ {
        "fieldName" : "simpleWebhook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateSimpleWebhookDetails",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      }, {
        "fieldName" : "opsgenieIntegration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateOpsgenieIntegrationDetails",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateIntegrationDetailsRequest",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "updateIntegrationDetails",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateIntegrationDetails",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "docs" : "Includes the information needed to rotate the integration-specific secrets.\nExamples include unsecured webhook URL or API keys.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateIntegrationRequest",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateOpsgenieIntegrationDetails",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "apiKey",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "region",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OpsgenieRegion",
            "package" : "io.nominal.scout.integrations.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateSimpleWebhookDetails",
        "package" : "io.nominal.scout.integrations.api"
      },
      "fields" : [ {
        "fieldName" : "webhook",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BooleanField",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DateTimeField",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Operator",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LongField",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Operator",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "Operator",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "values" : [ {
        "value" : "LEQ"
      }, {
        "value" : "LT"
      }, {
        "value" : "GEQ"
      }, {
        "value" : "GT"
      }, {
        "value" : "EQ"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchQuery",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "union" : [ {
        "fieldName" : "dateTimeField",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DateTimeField",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "stringField",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringField",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "timestampField",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampField",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "longField",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LongField",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "booleanField",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BooleanField",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Performs case insensitive exact match search on the title."
      }, {
        "fieldName" : "stringArrayExactMatch",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringArrayField",
            "package" : "io.nominal.scout.internal.search.api"
          }
        },
        "docs" : "Requires the string values in the query to exactly match the set of string values in the resource.\nTo do a partial match, use an \"and\" on StringField queries.\n"
      }, {
        "fieldName" : "stringArrayLength",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringArrayLengthQuery",
            "package" : "io.nominal.scout.metadata"
          }
        }
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchQuery",
                "package" : "io.nominal.scout.internal.search.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchQuery",
                "package" : "io.nominal.scout.internal.search.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreatedAtQuery",
            "package" : "io.nominal.scout.metadata"
          }
        }
      }, {
        "fieldName" : "archivedStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArchivedStatus",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Prefer to use archivedStatus field in IndexableDb#search"
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StringArrayField",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StringField",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestampField",
        "package" : "io.nominal.scout.internal.search.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Operator",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChartPanel",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartPanelV1",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChartPanelV1",
        "package" : "io.nominal.scout.layout.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PanelId",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "chartRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VersionedVizId",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "hideLegend",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "EmptyPanel",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EmptyPanelV1",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EmptyPanelV1",
        "package" : "io.nominal.scout.layout.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PanelId",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Panel",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "viz",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VizPanel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "chart",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartPanel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "empty",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EmptyPanel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "split",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SplitPanel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "tabbed",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TabbedPanel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "PanelId",
        "package" : "io.nominal.scout.layout.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "Should expect a uuid. Nested panels should have unique IDs."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SingleTab",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SingleTabV1",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SingleTabV1",
        "package" : "io.nominal.scout.layout.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "panel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Panel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SplitPanel",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SplitPanelV1",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SplitPanelOrientation",
        "package" : "io.nominal.scout.layout.api"
      },
      "values" : [ {
        "value" : "HORIZONTAL"
      }, {
        "value" : "VERTICAL"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SplitPanelV1",
        "package" : "io.nominal.scout.layout.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PanelId",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "orientation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SplitPanelOrientation",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "sideOne",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Panel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "sideTwo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Panel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TabbedPanel",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TabbedPanelV1",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TabbedPanelV1",
        "package" : "io.nominal.scout.layout.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PanelId",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "tabs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SingleTab",
                "package" : "io.nominal.scout.layout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VizPanel",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VizPanelV1",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VizPanelV1",
        "package" : "io.nominal.scout.layout.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PanelId",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "vizId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VizId",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "hideLegend",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "WorkbookLayout",
        "package" : "io.nominal.scout.layout.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayoutV1",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookLayoutV1",
        "package" : "io.nominal.scout.layout.api"
      },
      "fields" : [ {
        "fieldName" : "rootPanel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Panel",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreatedAtQuery",
        "package" : "io.nominal.scout.metadata"
      },
      "fields" : [ {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Operator",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListPropertiesAndLabelsRequest",
        "package" : "io.nominal.scout.metadata"
      },
      "fields" : [ {
        "fieldName" : "resourceTypes",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ResourceType",
                    "package" : "io.nominal.scout.metadata"
                  }
                }
              }
            }
          }
        },
        "docs" : "If omitted, all resource types are included."
      }, {
        "fieldName" : "workspaces",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "WorkspaceRid",
                    "package" : "io.nominal.api.rids"
                  }
                }
              }
            }
          }
        },
        "docs" : "If omitted, results will come from all workspaces the user belongs to."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListPropertiesAndLabelsResponse",
        "package" : "io.nominal.scout.metadata"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ResourceType",
        "package" : "io.nominal.scout.metadata"
      },
      "values" : [ {
        "value" : "RUN"
      }, {
        "value" : "VIDEO"
      }, {
        "value" : "ASSET"
      }, {
        "value" : "EVENT"
      }, {
        "value" : "DATASET"
      }, {
        "value" : "MODULE"
      }, {
        "value" : "PROCEDURE_EXECUTION"
      }, {
        "value" : "PROCEDURE"
      }, {
        "value" : "SAVED_VIEW"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StringArrayLengthQuery",
        "package" : "io.nominal.scout.metadata"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Operator",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetsFilter",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetOperator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ],
      "docs" : "for an exact match, use the exactAssetRids filter"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChartWithOverlays",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VizId",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "version",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Version",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "overlays",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateNotebookRequest",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "notebookType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookType",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        },
        "docs" : "Optional for backcompatibility. Default is a normal workbook."
      }, {
        "fieldName" : "isDraft",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "stateAsJson",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "charts",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ChartWithOverlays",
                    "package" : "io.nominal.scout.notebook.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are now stored in contentV2"
      }, {
        "fieldName" : "runRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "deprecated. Use dataScope instead"
      }, {
        "fieldName" : "dataScope",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookDataScope",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        },
        "docs" : "Optional for back-compatibility."
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayout",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkbookContent",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "deprecated" : "use contentV2 instead"
      }, {
        "fieldName" : "contentV2",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnifiedWorkbookContent",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "docs" : "Optional for backcompatibility"
      }, {
        "fieldName" : "eventRefs",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventReference",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "docs" : "Field to pin events to a workbook on creation."
      }, {
        "fieldName" : "checkAlertRefs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckAlertReference",
                    "package" : "io.nominal.scout.workbookcommon.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Field to pin check alerts to a workbook on creation.\nAny specified CheckAlertReference will be added to the workbook along with it's corresponding EventReference.\n",
        "deprecated" : "CheckAlerts are no longer supported and will be removed in the future.\nUse eventRefs to pin events to workbooks instead.\n"
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the workbook. If not provided, the workbook will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAllLabelsAndPropertiesResponse",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetSnapshotHistoryRequest",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "docs" : "The RID of the workbook to get snapshots for."
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1000."
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetSnapshotHistoryResponse",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "snapshots",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SnapshotSummary",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Lock",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "isLocked",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        }
      }, {
        "fieldName" : "updatedByRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Notebook",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "snapshotRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SnapshotRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "snapshotAuthorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "snapshotCreatedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookMetadata",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "stateAsJson",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "charts",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ChartWithOverlays",
                    "package" : "io.nominal.scout.notebook.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are now stored in contentV2"
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayout",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkbookContent",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "deprecated" : "use contentV2 instead"
      }, {
        "fieldName" : "contentV2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnifiedWorkbookContent",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      }, {
        "fieldName" : "eventRefs",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventReference",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "checkAlertRefs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckAlertReference",
                    "package" : "io.nominal.scout.workbookcommon.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "CheckAlerts are no longer supported and will be removed in the future.\nUse eventRefs to pin events to workbooks instead.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "NotebookDataScope",
        "package" : "io.nominal.scout.notebook.api"
      },
      "union" : [ {
        "fieldName" : "runRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NotebookMetadata",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "deprecated. Use dataScope instead"
      }, {
        "fieldName" : "dataScope",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookDataScope",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "notebookType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookType",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "isDraft",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "lock",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Lock",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "createdByRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NotebookMetadataWithRid",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookMetadata",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NotebookType",
        "package" : "io.nominal.scout.notebook.api"
      },
      "values" : [ {
        "value" : "WORKBOOK"
      }, {
        "value" : "COMPARISON_WORKBOOK"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NotebookTypesFilter",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "types",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookType",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        }
      } ],
      "docs" : "returns notebooks that match any of the provided notebook types"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunsFilter",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetOperator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "runs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchNotebooksQuery",
        "package" : "io.nominal.scout.notebook.api"
      },
      "union" : [ {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchNotebooksQuery",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchNotebooksQuery",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchNotebooksQuery",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Performs case insensitive exact match search on the title."
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use labels"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LabelsFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use properties"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertiesFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "deprecated" : "use assetRids"
      }, {
        "fieldName" : "assetRids",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetsFilter",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "exactAssetRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "Requires the set of assets in the query to exactly match the set of assets in the notebook.\nTo do a partial match, use an assetRids query.\n"
      }, {
        "fieldName" : "authorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "deprecated" : "use runRids"
      }, {
        "fieldName" : "runRids",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunsFilter",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "notebookType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookType",
            "package" : "io.nominal.scout.notebook.api"
          }
        },
        "deprecated" : "use notebook types"
      }, {
        "fieldName" : "notebookTypes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookTypesFilter",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "draftState",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "archived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "authorIsCurrentUser",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "authorRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchNotebooksRequest",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchNotebooksQuery",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      }, {
        "fieldName" : "showDrafts",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Soon to be deprecated. Compose a draftState filter within SearchNotebooksQuery instead"
      }, {
        "fieldName" : "showArchived",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Soon to be deprecated. Compose an archived filter within SearchNotebooksQuery instead"
      }, {
        "fieldName" : "sortBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortBy",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        },
        "docs" : "UPDATED_AT descending by default"
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1000."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchNotebooksResponse",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookMetadataWithRid",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SnapshotSummary",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SnapshotRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "notebookRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "authorRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortBy",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortByField",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortByField",
        "package" : "io.nominal.scout.notebook.api"
      },
      "values" : [ {
        "value" : "NAME"
      }, {
        "value" : "CREATED_AT"
      }, {
        "value" : "UPDATED_AT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateNotebookMetadataRequest",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "dataScope",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookDataScope",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        },
        "docs" : "Optional for backcompatibility."
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "isDraft",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateNotebookRequest",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "stateAsJson",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "charts",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ChartWithOverlays",
                    "package" : "io.nominal.scout.notebook.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are now stored in contentV2"
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayout",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkbookContent",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "deprecated" : "use contentV2 instead"
      }, {
        "fieldName" : "contentV2",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnifiedWorkbookContent",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "docs" : "Optional for backcompatibility"
      }, {
        "fieldName" : "latestSnapshotRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SnapshotRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "If provided, will only update the notebook if the latest snapshot matches the provided snapshot rid,\nand throws SaveNotebookConflict otherwise.\n"
      }, {
        "fieldName" : "eventRefs",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventReference",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "docs" : "Replace existing pinned events on the workbook."
      }, {
        "fieldName" : "checkAlertRefs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CheckAlertReference",
                    "package" : "io.nominal.scout.workbookcommon.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Field to pin check alerts to a workbook on creation.\nIf not provided, will keep the set of check alerts on the workbook unchanged.\nProviding an empty set will remove all check alerts from the workbook.\nAny specified CheckAlertReference will be added to the workbook along with it's corresponding EventReference.\n",
        "deprecated" : "CheckAlerts are no longer supported and will be removed in the future.\nUse eventRefs to pin events to workbooks instead.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateRefNameRequest",
        "package" : "io.nominal.scout.notebook.api"
      },
      "fields" : [ {
        "fieldName" : "refNameUpdates",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimestampType",
        "package" : "io.nominal.scout.plotting"
      },
      "values" : [ {
        "value" : "ABSOLUTE"
      }, {
        "value" : "RELATIVE"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ApiKeyRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "AssetRefName",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "AssetRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "CheckAlertRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CheckAlertState",
        "package" : "io.nominal.scout.rids.api"
      },
      "union" : [ {
        "fieldName" : "pendingReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PendingReviewAlertState",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "closedWithFurtherAction",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ClosedWithFurtherActionAlertState",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "closedWithIgnore",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ClosedWithIgnoreAlertState",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "CheckLineageRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "CheckRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ChecklistRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ClosedWithFurtherActionAlertState",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "closedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ClosedWithIgnoreAlertState",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "comment",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "closedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ComputeEventQuery",
        "package" : "io.nominal.scout.rids.api"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "after",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Filters to events after this timestamp, exclusive.\nThis includes events that start before, but end after this time.\n"
      }, {
        "fieldName" : "before",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "docs" : "Filters to events before this timestamp, exclusive.\nThis includes events that start before, but end after this time.\n"
      }, {
        "fieldName" : "advancedTimeFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventTimeFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "template",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "workbook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "dataReview",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "originType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchEventOriginType",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "dataReviewCheck",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "dispositionStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventDispositionStatus",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "priority",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "assignee",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "eventType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventType",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeEventQuery",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ComputeEventQuery",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeEventQuery",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "procedure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "procedureExecution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "stepId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DataReviewRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EventDispositionStatus",
        "package" : "io.nominal.scout.rids.api"
      },
      "values" : [ {
        "value" : "PENDING_REVIEW"
      }, {
        "value" : "CLOSED_IGNORED"
      }, {
        "value" : "CLOSED_REQUIRES_FURTHER_ACTION"
      }, {
        "value" : "NO_DISPOSITION"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventTimeFilter",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "timestampCondition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventTimeFilterCondition",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EventTimeFilterCondition",
        "package" : "io.nominal.scout.rids.api"
      },
      "values" : [ {
        "value" : "START_TIME_BEFORE_INCLUSIVE"
      }, {
        "value" : "START_TIME_BEFORE_EXCLUSIVE"
      }, {
        "value" : "START_TIME_AFTER_INCLUSIVE"
      }, {
        "value" : "START_TIME_AFTER_EXCLUSIVE"
      }, {
        "value" : "END_TIME_BEFORE_INCLUSIVE"
      }, {
        "value" : "END_TIME_BEFORE_EXCLUSIVE"
      }, {
        "value" : "END_TIME_AFTER_INCLUSIVE"
      }, {
        "value" : "END_TIME_AFTER_EXCLUSIVE"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "EventType",
        "package" : "io.nominal.scout.rids.api"
      },
      "values" : [ {
        "value" : "INFO"
      }, {
        "value" : "FLAG"
      }, {
        "value" : "ERROR"
      }, {
        "value" : "SUCCESS"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "FunctionLineageRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "FunctionRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "GroupRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LabelsFilter",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetOperator",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "MarkingRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "NotebookRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PendingReviewAlertState",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PropertiesFilter",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertyName",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Property",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StringConstant",
            "package" : "io.nominal.scout.compute.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "RunRefName",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SavedViewRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SearchEventOriginType",
        "package" : "io.nominal.scout.rids.api"
      },
      "values" : [ {
        "value" : "WORKBOOK"
      }, {
        "value" : "TEMPLATE"
      }, {
        "value" : "API"
      }, {
        "value" : "DATA_REVIEW"
      }, {
        "value" : "PROCEDURE"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SnapshotRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TemplateRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TypeRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UserDuration",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "duration",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeUnit",
            "package" : "io.nominal.api"
          }
        }
      } ],
      "docs" : "Represents a time duration with a unit for user-facing display"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "UserRid",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Version",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VersionedVizId",
        "package" : "io.nominal.scout.rids.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VizId",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "version",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Version",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "VizId",
        "package" : "io.nominal.scout.rids.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AllRunsPropertiesAndLabelsResponse",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ArchiveRunsRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "includeLinkedWorkbooks",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, all auto-archived workbooks that are linked to run will be unarchived as well.\nDefaults to false.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetsFilter",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "assets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ],
      "docs" : "returns runs that match any of the provided assets."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelMetadata",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSource",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "dataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesDataType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertStatesFilter",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "checkAlertState",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertState",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "operator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Operator",
            "package" : "io.nominal.scout.internal.search.api"
          }
        }
      }, {
        "fieldName" : "threshold",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ConnectionRid",
        "package" : "io.nominal.scout.run.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateOrUpdateRunRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "runRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "If a run with the same rid already exists, it will be updated.\nOtherwise, a new run will be created.\n"
      }, {
        "fieldName" : "createRunRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateRunRequest",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateRunDataSource",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSource",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "One of dataSource and dataSourceRid must be present.\ndataSourceRid takes precedence.\n",
        "deprecated" : "Use dataSourceRid instead."
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "One of dataSource and dataSourceRid must be present.\ndataSourceRid takes precedence.\n"
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Duration",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "seriesTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Used to resolve logical series for this data source.\n"
      } ],
      "docs" : "For write requests, we want to allow for optional fields\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateRunRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "links",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Link",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "runPrefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "dataSources",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateRunDataSource",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "deprecated" : "Use assets"
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the run. If not provided, the run will be created in\nthe default workspace for the user's organization, if the default workspace for the\norganization is configured.\nAll data sources, attachments, and assets must be in the same workspace.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CustomTimeframeFilter",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReviewAlertMetrics",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "pendingReview",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "closedWithIgnore",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "closedWithFurtherAction",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReviewCheckMetrics",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "pendingExecution",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "executing",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "passingAutomatic",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "pendingReview",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "closedWithIgnore",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "closedWithFurtherAction",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "failedToExecutePendingReview",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "failedToExecuteClosedWithIgnore",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "failedToExecuteClosedWithFurtherAction",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataReviewMetrics",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "checks",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewCheckMetrics",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "alerts",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewAlertMetrics",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataScopes",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "dataScopes",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataScope",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DataSource",
        "package" : "io.nominal.scout.run.api"
      },
      "union" : [ {
        "fieldName" : "dataset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "connection",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "logSet",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSetRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "video",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DataSourceSeriesTag",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagValue",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "DataSourceType",
        "package" : "io.nominal.scout.run.api"
      },
      "values" : [ {
        "value" : "DATASET"
      }, {
        "value" : "CONNECTION"
      }, {
        "value" : "LOGSET"
      }, {
        "value" : "VIDEO"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Duration",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "seconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "nanos",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "picos",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetRunByIdRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "runNumber",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "runPrefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to query for the run. If not provided, the run\nwill be queried in the default workspace for the user's organization,\nif the default workspace for the organization is configured and the user\nhas access to it.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetRunsByAssetRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetRunsByAssetResponse",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Run",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Link",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "url",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LogSetRid",
        "package" : "io.nominal.scout.run.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "PresetTimeframeDuration",
        "package" : "io.nominal.scout.run.api"
      },
      "values" : [ {
        "value" : "ALL_TIME"
      }, {
        "value" : "LAST_DAY"
      }, {
        "value" : "LAST_WEEK"
      }, {
        "value" : "LAST_MONTH"
      }, {
        "value" : "LAST_YEAR"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "PresetTimeframeFilter",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "duration",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PresetTimeframeDuration",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RefNameAndType",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceType",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ],
      "docs" : "Scoped to the org-level, intended to help the frontend\nprevent users from submitting invalid ref names, ex.\nusing a `dataset` ref name for a `connection` data source\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Run",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "runNumber",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "runPrefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "authorRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "links",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Link",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "assetDataScopesMap",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataScopes",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "Map from asset RIDs to their data scopes"
      }, {
        "fieldName" : "assetDataScopes",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataScope",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        },
        "deprecated" : "Use assetDataScopesMap instead. Will be empty for multi-asset runs."
      }, {
        "fieldName" : "dataSources",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunDataSource",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "Map from refnames to run data sources. Will be empty for multi-asset runs."
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "deprecated" : "Use assets"
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "RunDataReviewEvaluationStatus",
        "package" : "io.nominal.scout.run.api"
      },
      "values" : [ {
        "value" : "NO_CHECKS_APPLIED"
      }, {
        "value" : "FAILED_TO_EXECUTE"
      }, {
        "value" : "EXECUTING"
      }, {
        "value" : "PENDING_EXECUTION"
      }, {
        "value" : "CLOSED_WITH_FURTHER_ACTION"
      }, {
        "value" : "GENERATED_ALERTS"
      }, {
        "value" : "CLOSED_WITH_IGNORE"
      }, {
        "value" : "PASSING"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunDataReviewSummary",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "evaluationStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunDataReviewEvaluationStatus",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "totalIssueCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "reviewedIssueCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "issuesWithFurtherActionCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "executionErrorCount",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunDataSource",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSource",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "offset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Duration",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "This offset is used for small time-sync corrections. Notably, it is\nnot the offset to move a relative data source to the start of the run.\n"
      }, {
        "fieldName" : "refName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.scout.api"
          }
        },
        "docs" : "Included for convenience, duplicated from the key of the map\n"
      }, {
        "fieldName" : "timestampType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WeakTimestampType",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "seriesTags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Used to resolve logical series for this data source.\n"
      } ],
      "docs" : "For read requests, we want to require all fields\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "RunRid",
        "package" : "io.nominal.scout.run.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunWithDataReviewMetrics",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "run",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Run",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "dataReviewMetrics",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewMetrics",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunWithDataReviewSummary",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "run",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Run",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "dataReviewSummary",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunDataReviewSummary",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchQuery",
        "package" : "io.nominal.scout.run.api"
      },
      "union" : [ {
        "fieldName" : "startTimeInclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "deprecated" : "Use startTime instead"
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeframeFilter",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "endTimeInclusive",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UtcTimestamp",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "deprecated" : "Use endTime instead"
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeframeFilter",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "timeRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeRangeFilter",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeframeFilter",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Performs case insensitive exact substring match search on the title."
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "deprecated" : "Use getRunsByAsset rather than text-based search"
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetsFilter",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "isSingleAsset",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Search for either only single-asset runs (true), or only multi-asset runs (false).\n"
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use labels instead"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LabelsFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use properties"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertiesFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "dataSourceSeriesTag",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceSeriesTag",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "dataSourceRefName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRefName",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "dataSource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSource",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "deprecated" : "Use dataSourceRefName, rather than searching directly by DataSource."
      }, {
        "fieldName" : "runNumber",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "runPrefix",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "checkAlertStatesFilter",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertStatesFilter",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "Search for runs where its aggregated check alert satisfy a given operator and threshold.\n"
      }, {
        "fieldName" : "archived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchQuery",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchQuery",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchRunChannelsRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "refNameFilter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRefName",
                    "package" : "io.nominal.scout.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "If not empty, will filter to channels from the selected DataSourceRefNames.\n"
      }, {
        "fieldName" : "previouslySelectedChannels",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Channel",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 1000. Will throw if larger than 1000."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchRunChannelsResponse",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelMetadata",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchRunsRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortOptions",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Will reject page sizes greater than 1000."
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Default search status is NOT_ARCHIVED if none are provided. Allows for including archived runs in search.",
        "deprecated" : "use archived filter in search query instead."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchRunsResponse",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Run",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchRunsWithDataReviewMetricsResponse",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunWithDataReviewMetrics",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchRunsWithDataReviewSummaryResponse",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunWithDataReviewSummary",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortField",
        "package" : "io.nominal.scout.run.api"
      },
      "values" : [ {
        "value" : "NAME"
      }, {
        "value" : "ID"
      }, {
        "value" : "CREATED_AT"
      }, {
        "value" : "START_TIME"
      }, {
        "value" : "END_TIME"
      }, {
        "value" : "PENDING_CHECK_ALERTS"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SortKey",
        "package" : "io.nominal.scout.run.api"
      },
      "union" : [ {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortField",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortProperty",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "docs" : "Sort by a property value. Requires a property name, and will always sort null values last.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortOptions",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortField",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "deprecated" : "use SortKey with SortField union type instead"
      }, {
        "fieldName" : "sortKey",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortKey",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "Field to sort by. Includes both field and property-based sorting.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortProperty",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertyName",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeRangeFilter",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      } ],
      "docs" : "searches for runs that have at least some intersection with the specified range."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimeframeFilter",
        "package" : "io.nominal.scout.run.api"
      },
      "union" : [ {
        "fieldName" : "custom",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CustomTimeframeFilter",
            "package" : "io.nominal.scout.run.api"
          }
        }
      }, {
        "fieldName" : "preset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PresetTimeframeFilter",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnarchiveRunsRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "includeLinkedWorkbooks",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, all auto-archived workbooks that are linked to run will be unarchived as well.\nDefaults to false.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Unit",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "deprecated" : "use the units service for additional display metadata"
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateAttachmentsRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "attachmentsToAdd",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      }, {
        "fieldName" : "attachmentsToRemove",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttachmentRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateRunRequest",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "If strictOverwrite is false, will only update the startTime if it is before the existing startTime.\n"
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "docs" : "If strictOverwrite is false, will only update the endTime if it is after the existing endTime.\n"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "links",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Link",
                    "package" : "io.nominal.scout.run.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "runPrefix",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "Pass in an empty string to remove the run prefix."
      }, {
        "fieldName" : "dataSources",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRefName",
                    "package" : "io.nominal.scout.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "CreateRunDataSource",
                    "package" : "io.nominal.scout.run.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "attachments",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AttachmentRid",
                    "package" : "io.nominal.api.rids"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "asset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "deprecated" : "Use assets"
      }, {
        "fieldName" : "assets",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "strictOverwrite",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "If true, will blindly overwrite the existing fields with the new values in the request.\nIf false, will only update the fields if application constraints are maintained.\nSee individual field docs for more details.\nDefaults to true for backwards compatibility.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UtcTimestamp",
        "package" : "io.nominal.scout.run.api"
      },
      "fields" : [ {
        "fieldName" : "secondsSinceEpoch",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "offsetNanoseconds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "WeakTimestampType",
        "package" : "io.nominal.scout.run.api"
      },
      "values" : [ {
        "value" : "ABSOLUTE"
      }, {
        "value" : "RELATIVE"
      }, {
        "value" : "PENDING"
      } ],
      "docs" : "If a CSV data source is still being split, the timestamp type is not known.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetMetricColumn",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MetricColumnMetadata",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "timeRange",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetMetricColumnTimeRange",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "aggregation",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MetricColumnAggregation",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "data",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MetricColumnData",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "style",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MetricColumnStyle",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "AssetMetricColumnTimeRange",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "mostRecentRun",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MostRecentRun",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "custom",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CustomTimeRange",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetMetricColumns",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "metricColumns",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnId",
                "package" : "io.nominal.scout.savedviews.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetMetricColumn",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetSearchState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetSortOptions",
                "package" : "io.nominal.scout.asset.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "groupBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnId",
                    "package" : "io.nominal.scout.savedviews.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchAssetsQuery",
            "package" : "io.nominal.scout.asset.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetSavedViewsResponse",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "savedViews",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SavedView",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChecklistSearchState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortOptions",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistSearchQuery",
            "package" : "io.nominal.scout.checks.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ColumnId",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ColumnPinningState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "left",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnId",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "right",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnId",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSavedViewRequest",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Symbol",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Color",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "searchState",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "displayState",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DisplayState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "workspaceRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSavedViewResponse",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "savedView",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedView",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CustomTimeRange",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "startTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "endTime",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UtcTimestamp",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DisplayState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "displayStateV1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TableState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetSavedViewResponse",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "savedView",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedView",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "MetricColumnAggregation",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "values" : [ {
        "value" : "TOTAL_COUNT"
      }, {
        "value" : "TOTAL_DURATION"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "MetricColumnData",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "event",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.event"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MetricColumnMetadata",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Symbol",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MetricColumnStyle",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MetricColumnThresholdType",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "MetricColumnThreshold",
                    "package" : "io.nominal.scout.savedviews.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MetricColumnThreshold",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "MetricColumnThresholdType",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "values" : [ {
        "value" : "RAW"
      }, {
        "value" : "BAR"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "MetricColumns",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetMetricColumns",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MostRecentRun",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ResourceType",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "values" : [ {
        "value" : "ASSET"
      }, {
        "value" : "RUN"
      }, {
        "value" : "WORKBOOK"
      }, {
        "value" : "CHECKLIST"
      }, {
        "value" : "TEMPLATE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunSearchState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortOptions",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "groupBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnId",
                    "package" : "io.nominal.scout.savedviews.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchQuery",
            "package" : "io.nominal.scout.run.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SavedView",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewMetadata",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "searchState",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "displayState",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DisplayState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SavedViewMetadata",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "resourceType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResourceType",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Symbol",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Color",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SavedViewSortOptions",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "sortKey",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortKey",
            "package" : "io.nominal.scout.savedviews.api"
          }
        },
        "docs" : "Field to sort by.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchSavedViewsQuery",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "and",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchSavedViewsQueryList",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchSavedViewsQueryList",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchSavedViewsQuery",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "titleExactSubstringSearch",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "resourceType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResourceType",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchSavedViewsQueryList",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "queries",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchSavedViewsQuery",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchSavedViewsRequest",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewSortOptions",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1_000."
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchSavedViewsQuery",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Default search status is NOT_ARCHIVED if none are provided. Allows for including archived assets in search."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchSavedViewsResponse",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "savedViews",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SavedViewMetadata",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "asset",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetSearchState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "run",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunSearchState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "checklist",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistSearchState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "workbook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookSearchState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      }, {
        "fieldName" : "template",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateSearchState",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortField",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "values" : [ {
        "value" : "TITLE"
      }, {
        "value" : "CREATED_AT"
      }, {
        "value" : "USER_DEFINED"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SortKey",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortField",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TableState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "columnVisibility",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnId",
                    "package" : "io.nominal.scout.savedviews.api"
                  }
                },
                "valueType" : {
                  "type" : "primitive",
                  "primitive" : "BOOLEAN"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "columnSizing",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnId",
                    "package" : "io.nominal.scout.savedviews.api"
                  }
                },
                "valueType" : {
                  "type" : "primitive",
                  "primitive" : "INTEGER"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "columnOrder",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ColumnId",
                    "package" : "io.nominal.scout.savedviews.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "columnPinning",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnPinningState",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "metricColumns",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MetricColumns",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TemplateSearchState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortBy",
                "package" : "io.nominal.scout.template.api"
              }
            }
          }
        },
        "docs" : "Sort for templates view. Uses BE-supplied default if empty.\n"
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchTemplatesQuery",
            "package" : "io.nominal.scout.template.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateColor",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "color",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Color",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "clearColor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateSavedViewRequest",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateSymbol",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "color",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateColor",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "searchState",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchState",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "displayState",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DisplayState",
                "package" : "io.nominal.scout.savedviews.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "index",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateSavedViewResponse",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "savedView",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedView",
            "package" : "io.nominal.scout.savedviews.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateSymbol",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "union" : [ {
        "fieldName" : "symbol",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Symbol",
            "package" : "io.nominal.scout.api"
          }
        }
      }, {
        "fieldName" : "clearSymbol",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookSearchState",
        "package" : "io.nominal.scout.savedviews.api"
      },
      "fields" : [ {
        "fieldName" : "sort",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortBy",
                "package" : "io.nominal.scout.notebook.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchNotebooksQuery",
            "package" : "io.nominal.scout.notebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CommitTemplateRequest",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "charts",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "VersionedVizId",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources. They are stored in workbook content."
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayout",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookContent",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "latestCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, will validate that the latest commit matches this id,\nand otherwise throw CommitConflict.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateTemplateRequest",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Default is true"
      }, {
        "fieldName" : "charts",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "VersionedVizId",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources. They are stored in workbook content."
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayout",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookContent",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the template. If not provided, the template will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetAllLabelsAndPropertiesResponse",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "MergeToMainRequest",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "docs" : "If \"main\", the request will throw.\n"
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "latestCommitOnMain",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, will validate that the latest commit matches this id,\nand otherwise throw CommitConflict.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SaveTemplateRequest",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "charts",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "VersionedVizId",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources. They are stored in workbook content."
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayout",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookContent",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      }, {
        "fieldName" : "latestCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, will validate that the latest commit matches this id,\nand otherwise throw CommitConflict.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchTemplatesQuery",
        "package" : "io.nominal.scout.template.api"
      },
      "union" : [ {
        "fieldName" : "and",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchTemplatesQuery",
                "package" : "io.nominal.scout.template.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchTemplatesQuery",
                "package" : "io.nominal.scout.template.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "not",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchTemplatesQuery",
            "package" : "io.nominal.scout.template.api"
          }
        }
      }, {
        "fieldName" : "exactMatch",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Performs case insensitive exact match search on the title."
      }, {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Searches title and description only"
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use labels instead"
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LabelsFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        },
        "deprecated" : "use properties"
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PropertiesFilter",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "authorIsCurrentUser",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "authorRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchTemplatesRequest",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchTemplatesQuery",
            "package" : "io.nominal.scout.template.api"
          }
        }
      }, {
        "fieldName" : "sortBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SortBy",
                "package" : "io.nominal.scout.template.api"
              }
            }
          }
        },
        "docs" : "EDITED_AT descending by default"
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1_000."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchTemplatesResponse",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TemplateSummary",
                "package" : "io.nominal.scout.template.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortBy",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortByField",
            "package" : "io.nominal.scout.template.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortByField",
        "package" : "io.nominal.scout.template.api"
      },
      "values" : [ {
        "value" : "NAME"
      }, {
        "value" : "CREATED_AT"
      }, {
        "value" : "UPDATED_AT"
      }, {
        "value" : "EDITED_AT"
      } ],
      "docs" : "UPDATED_AT is an alias for EDITED_AT.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Template",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateMetadata",
            "package" : "io.nominal.scout.template.api"
          }
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Commit",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "charts",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VersionedVizId",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "deprecated" : "charts are no longer versioned resources. They are stored in workbook content."
      }, {
        "fieldName" : "layout",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookLayout",
            "package" : "io.nominal.scout.layout.api"
          }
        }
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookContent",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TemplateMetadata",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "editedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "The time of the last permanent commit to the main branch."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TemplateSummary",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "metadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateMetadata",
            "package" : "io.nominal.scout.template.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateMetadataRequest",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "isPublished",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateRefNameRequest",
        "package" : "io.nominal.scout.template.api"
      },
      "fields" : [ {
        "fieldName" : "refNameUpdates",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "latestCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, will validate that the latest commit matches this id,\nand otherwise throw CommitConflict.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetUnitsResponse",
        "package" : "io.nominal.scout.units.api"
      },
      "fields" : [ {
        "fieldName" : "unitsByProperty",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitProperty",
                "package" : "io.nominal.scout.units.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Unit",
                    "package" : "io.nominal.scout.units.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Unit",
        "package" : "io.nominal.scout.units.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitName",
                "package" : "io.nominal.scout.units.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSymbol",
            "package" : "io.nominal.scout.units.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitProperty",
                "package" : "io.nominal.scout.units.api"
              }
            }
          }
        },
        "docs" : "Empty if no property is available. If two units measure different properties, it is not possible to \nconvert between them.\n"
      }, {
        "fieldName" : "dimension",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitDimension",
                "package" : "io.nominal.scout.units.api"
              }
            }
          }
        },
        "docs" : "The physical dimensions in terms of the base units of the system. It is only possible to convert units if \nthey have the same dimension. Empty if the unit is a base unit.\n"
      }, {
        "fieldName" : "system",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSystem",
            "package" : "io.nominal.scout.units.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UnitDimension",
        "package" : "io.nominal.scout.units.api"
      },
      "fields" : [ {
        "fieldName" : "baseDimensions",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      } ],
      "docs" : "The fundamental base dimensions and their exponents, whose product compose a unit.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "UnitName",
        "package" : "io.nominal.scout.units.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "The long form name of a unit."
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "UnitProperty",
        "package" : "io.nominal.scout.units.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "The physical quality that the unit measures (Electric Current, Time, Angle, etc.)"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "UnitSymbol",
        "package" : "io.nominal.scout.units.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "UnitSystem",
        "package" : "io.nominal.scout.units.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "The units system that the unit is defined in."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Branch",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchRid",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BranchAndCommit",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "branch",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Branch",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Commit",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "BranchName",
        "package" : "io.nominal.scout.versioning.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "BranchRid",
        "package" : "io.nominal.scout.versioning.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Commit",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "parentCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "mergeParentCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "isWorkingState",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "A working state commit is created via the `saveWorkingState` endpoint\nand is non-permanent. In the future, it may be compacted and not exist.\n"
      }, {
        "fieldName" : "committedBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "committedAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CommitHistory",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "history",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Commit",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "CommitId",
        "package" : "io.nominal.scout.versioning.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      },
      "docs" : "40 hex character unique identifier."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CommitRequest",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "newCommit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "mergeParentCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "docs" : "If present, this existing commit will be the merge parent\nof the new commit. It will be made permanent if not already,\nto prevent the merge parent from being compacted.\n"
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "latestCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CompactCommitsRequest",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "strategy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CompactionStrategy",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "CompactionStrategy",
        "package" : "io.nominal.scout.versioning.api"
      },
      "union" : [ {
        "fieldName" : "olderThanDays",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ],
      "docs" : "Needs to be expressible as a database query\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateBranchRequest",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "existingCommit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateTagRequest",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "existingCommit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "tagName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetLeastCommonAncestorRequest",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "commit1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "commit2",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "InitResourceVersioningRequest",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "newCommit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ResourceAndBranchName",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ResourceAndCommitId",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "commitId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SaveWorkingStateRequest",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "newCommit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "latestCommit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Tag",
        "package" : "io.nominal.scout.versioning.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagRid",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "commit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TagName",
        "package" : "io.nominal.scout.versioning.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TagRid",
        "package" : "io.nominal.scout.versioning.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Bounds",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSegment",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "dataHandle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "frameRate",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The average frame rate (FPS) of the segment calculated as total frames / duration in seconds."
      }, {
        "fieldName" : "durationSeconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SegmentTimestamps",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "segmentEndTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSegmentsRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateSegment",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSegmentsResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "segments",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Segment",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateVideoFileRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileOriginMetadata",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "rawFileSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        },
        "docs" : "The size of the pre-processed raw video file in bytes.\n"
      } ],
      "docs" : "Request to create and persist a video file"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateVideoRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoOriginMetadata",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        },
        "deprecated" : "deprecated in favor of per-file VideoFileOriginMetadata. Will be removed after April 15th."
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the video. If not provided, the video will be created in\nthe default workspace for the user's organization, if the default workspace for the\norganization is configured.\n"
      }, {
        "fieldName" : "markingRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "MarkingRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "docs" : "The markings to apply to the created video.\nIf not provided, the video will be visible to all users in the same workspace.\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "DetailedIngestStatus",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "success",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SuccessIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "inProgress",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "A number between 0 and 1 representing percentage progress."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EnrichedVideoIngestStatus",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "fileIngestStatus",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileIngestStatus",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ErrorIngestStatus",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "errors",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IngestError",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ErrorType",
        "package" : "io.nominal.scout.video.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "FileSummary",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "fileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "bounds",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Bounds",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GenerateWhepStreamResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "whepUrl",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "iceServers",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IceServer",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "token",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ],
      "docs" : "Response with WHEP URL, ICE servers, and token for playback"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GenerateWhipStreamResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "streamId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "whipUrl",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "iceServers",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IceServer",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ],
      "docs" : "Response with WHIP URL and ICE servers for publishing"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetEnrichedVideoIngestStatusRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetFileSummariesRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Bounds",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetFileSummariesResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "fileSummaries",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "FileSummary",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetIngestStatusResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetPlaylistInBoundsRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Bounds",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetSegmentByTimestampRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "viewRangeStart",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "The start of the view range used to dynamically calculate media timestamps. The first segment with an \noverlap with the time bounds will have its minimum media timestamp set to 0, with every subsequent\nsegment building media time cumulatively from that offset. This will determine the starting media\ntimestamp of the returned segment. The view range should be the same as the one requested to get the\nplaylist and segment summaries.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetSegmentSummariesInBoundsRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "bounds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Bounds",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetVideosRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "videoRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetVideosResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Video",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IceServer",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "urls",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "username",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "credential",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ],
      "docs" : "WebRTC ICE server configuration"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IngestError",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "errorType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorType",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListFilesInVideoRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ListFilesInVideoResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "files",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFile",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "McapTimestampManifest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "mcapChannelLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapChannelLocator",
            "package" : "io.nominal.api"
          }
        }
      } ],
      "docs" : "Timestamps are derived from the mcap file containing the video frames."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NoTimestampManifest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "startingTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Specifies the original starting timestamp of the video."
      }, {
        "fieldName" : "scaleParameter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScaleParameter",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        },
        "docs" : "A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time."
      } ],
      "docs" : "these values will not be updated after ingest time, to allow for resetting. The updated values are stored\nimplicitly through the segment timestamps.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ScaleParameter",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "trueFrameRate",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "endingTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "scaleFactor",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "the scale factor can be used to calculate whether media duration differs from a video's | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchVideosQuery",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchVideosQuery",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchVideosQuery",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestStatus",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchVideosRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchVideosQuery",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1_000."
      }, {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "sortOptions",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortOptions",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Default search status is NOT_ARCHIVED if none are provided. Allows for including archived videos in search."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchVideosResponse",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Video",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Segment",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SegmentRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "dataHandle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "frameRate",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The average frame rate (FPS) of the segment calculated as total frames / duration in seconds."
      }, {
        "fieldName" : "durationSeconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The duration of a segment in media time."
      }, {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SegmentTimestamps",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "docs" : "for videos with frame-level timestamps, we provide mappings, otherwise we just include a single list\nof timestamps.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SegmentSummary",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "minAbsoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "maxAbsoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "minMediaTimestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "maxMediaTimestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ],
      "docs" : "Bounding timestamps for the frames within a segment. For non-frame-mapped videos, the min and max media\ntimestamps will be empty.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SegmentTimestamps",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "timestampMappings",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestampMappings",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ],
      "docs" : "A video segment will either contain timestamps or timestamp mappings depending on whether it is intended to\nbe frame-mapped. Without a frame-timestamp mapping manifest file, a list of absolute timestamps will be\nautomatically assigned to each segment based on media timestamps.. Otherwise, media timestamps will be\nextracted and mapped to those in the provided manifest.\n"
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortField",
        "package" : "io.nominal.scout.video.api"
      },
      "values" : [ {
        "value" : "CREATED_AT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortOptions",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortField",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SuccessIngestStatus",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestampMappings",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "mediaTimestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "absoluteTimestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ],
      "docs" : "contains 2 equal-length lists, which contain the video media time and user-provided absolute time\nfor the frame at each index. Enables frame-mapping on the front-end.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateIngestStatus",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "success",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SuccessIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ErrorIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "inProgress",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateIngestStatusRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "video",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "ingestStatus",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateVideoFileRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "startingTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "scaleParameter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScaleParameter",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "segmentedFilesSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        },
        "docs" : "The total size of all the post-processed segments corresponding to this video file in bytes.\n"
      } ],
      "docs" : "Request to update metadata for a given video file."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateVideoMetadataRequest",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "title",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "startingTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "scaleParameter",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ScaleParameter",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        },
        "deprecated" : "deprecated in favor of updating scaleParameter per-file. Will fail if set on a video with multiple files.\nWill be removed after April 15th.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Video",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoOriginMetadata",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        },
        "deprecated" : "deprecated in favor of per-file VideoFileOriginMetadata. Will be removed after April 15th."
      }, {
        "fieldName" : "allSegmentsMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoAllSegmentsMetadata",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoAllSegmentsMetadata",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "numFrames",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "numSegments",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "scaleFactor",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "docs" : "deprecated, in favor of per-file VideoFileSegmentsMetadata scaleFactor. Will be removed after April 15th.\n"
      }, {
        "fieldName" : "minAbsoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "maxAbsoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "the timestamp corresponding to absolute starting timestamp plus absolute duration of the video."
      }, {
        "fieldName" : "mediaDurationSeconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "mediaFrameRate",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        },
        "docs" : "The average media frame rate (FPS) of the video calculated as total frames / duration in seconds."
      }, {
        "fieldName" : "minTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "deprecated. Will be removed after April 15th."
      }, {
        "fieldName" : "maxTimestamp",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "deprecated. Will be removed after April 15th."
      }, {
        "fieldName" : "durationSeconds",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "docs" : "deprecated. Will be removed after April 15th."
      }, {
        "fieldName" : "frameRate",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        },
        "docs" : "deprecated. Will be removed after April 15th."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoFile",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "title",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "originMetadata",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileOriginMetadata",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "segmentMetadata",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileSegmentsMetadata",
                "package" : "io.nominal.scout.video.api"
              }
            }
          }
        }
      } ],
      "docs" : "Representation of a single user-provided video file."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VideoFileIngestStatus",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "success",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SuccessIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestError",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "inProgress",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoFileOriginMetadata",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "source",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "timestampManifest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ],
      "docs" : "Metadata about the origin of the video file. This includes the original source of the video file and \nadditional timestamp metadata used to time-sync the video file.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoFileSegmentsMetadata",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "numFrames",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "numSegments",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      }, {
        "fieldName" : "scaleFactor",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "minAbsoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "maxAbsoluteTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "mediaDurationSeconds",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      }, {
        "fieldName" : "mediaFrameRate",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ],
      "docs" : "High-level metadata about the segments comprising a video file post-segmentation."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VideoFileTimestampManifest",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "mcap",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "s3path",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Path",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "noManifest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NoTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ],
      "docs" : "A video file’s timestamp manifest specifies how to determine absolute timestamps for each frame. In an MCAP \nfile, this data is embedded within the source file. Alternatively, the manifest may be provided as an external \nsidecar file. If no manifest is available, the timestamps are calculated by applying a starting offset to the \npresentation timestamp of each frame.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VideoIngestStatus",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "ready",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "inProgress",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoOriginMetadata",
        "package" : "io.nominal.scout.video.api"
      },
      "fields" : [ {
        "fieldName" : "videoSources",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Handle",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "deprecated" : "deprecated in favor of per-file VideoFileOriginMetadata. Will be removed after April 15th."
      }, {
        "fieldName" : "timestampManifest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "deprecated" : "deprecated in favor of per-file VideoFileOriginMetadata. Will be removed after April 15th."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "VideoTimestampManifest",
        "package" : "io.nominal.scout.video.api"
      },
      "union" : [ {
        "fieldName" : "mcap",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "McapTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        }
      }, {
        "fieldName" : "s3paths",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "S3Path",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "noManifest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NoTimestampManifest",
            "package" : "io.nominal.scout.video.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "AssetSettings",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserDuration",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "dataScopeOffsets",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "DataSourceRefName",
                    "package" : "io.nominal.scout.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "UserDuration",
                    "package" : "io.nominal.scout.rids.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CheckAlertReference",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "checkAlertRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertRid",
            "package" : "io.nominal.scout.rids.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "EventReference",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "eventUuid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        },
        "deprecated" : "Please use the rid field instead."
      }, {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "docs" : "The event's unique identifier."
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "InputType",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "union" : [ {
        "fieldName" : "tag",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Tag",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RunSettings",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "offset",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserDuration",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "assetSettings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetSettings",
                    "package" : "io.nominal.scout.workbookcommon.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Tag",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "key",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagString",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        },
        "docs" : "The key of the tag for the filter and group by compute arguments.\n"
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagString",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "docs" : "The values of the tag to filter against. \nAn empty list will treat the tag as a wildcard, including all values in the compute\n"
      } ],
      "docs" : "A tag input contains tag key and tag value information that can apply\nto a channel's compute tree. Applies the tag to both the tag filter\nand tag group by fields of the series node in the compute tree.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TagString",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "union" : [ {
        "fieldName" : "literal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagStringLiteral",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TagStringLiteral",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "docs" : "A unique identifier for this string. Cannot be shared across different Tag inputs.\nUsed as the variable id for the StringConstant applied to the tag fields \nof the channel compute node.\n"
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The string value."
      } ],
      "docs" : "A literal string value\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TimeRange",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "alias" : {
        "type" : "reference",
        "reference" : {
          "name" : "Range",
          "package" : "io.nominal.api"
        }
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UnifiedWorkbookContent",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "union" : [ {
        "fieldName" : "workbook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookContent",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      }, {
        "fieldName" : "comparisonWorkbook",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComparisonWorkbookContent",
            "package" : "io.nominal.scout.comparisonnotebook.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookContent",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "channelVariables",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookChannelVariableMap",
            "package" : "io.nominal.scout.channelvariables.api"
          }
        }
      }, {
        "fieldName" : "inputs",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkbookInputs",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "charts",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookVizDefinitionMap",
            "package" : "io.nominal.scout.chartdefinition.api"
          }
        },
        "docs" : "map of visualizations. Previously termed \"charts\""
      }, {
        "fieldName" : "settings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkbookSettings",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookInput",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "docs" : "The unique identifier of the input."
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "The label of the input for display purposes."
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InputType",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      } ],
      "docs" : "A workbook input is a value managed at the workbook level\nthat can be applied to multiple elements.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "WorkbookInputs",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookInputsV1",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookInputsV1",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "inputs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkbookInput",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        }
      } ],
      "docs" : "A list of workbook inputs.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookSettings",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "assetSettings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetRid",
                    "package" : "io.nominal.scout.rids.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "AssetSettings",
                    "package" : "io.nominal.scout.workbookcommon.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Settings for assets to be used in the workbook. This should be present for asset workbooks."
      }, {
        "fieldName" : "runSettings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "RunRid",
                    "package" : "io.nominal.scout.run.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "RunSettings",
                    "package" : "io.nominal.scout.workbookcommon.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Settings for runs to be used in the workbook. This should be present for run workbooks."
      }, {
        "fieldName" : "timeSettings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkbookTimeSettings",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "docs" : "Time range settings when users access a workbook. Time range URL query params will take precedence\nover persisted the global time range.\n"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "WorkbookTimeRangeType",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "values" : [ {
        "value" : "ABSOLUTE"
      }, {
        "value" : "RELATIVE"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "WorkbookTimeSettings",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookTimeSettingsV1",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkbookTimeSettingsV1",
        "package" : "io.nominal.scout.workbookcommon.api"
      },
      "fields" : [ {
        "fieldName" : "timeRangeType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkbookTimeRangeType",
            "package" : "io.nominal.scout.workbookcommon.api"
          }
        },
        "docs" : "The time range type of the workbook"
      }, {
        "fieldName" : "globalTimeRange",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeRange",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        },
        "docs" : "The global time range a workbook falls back to."
      }, {
        "fieldName" : "isGlobalTime",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "If true, workbook will default to globalTimeRange for all tabs.\nIf false, will attempt to use tabTime to populate the workbook time range.\n"
      }, {
        "fieldName" : "tabTimeRanges",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeRange",
                "package" : "io.nominal.scout.workbookcommon.api"
              }
            }
          }
        }
      } ],
      "docs" : "Time range configuration for workbooks\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSecretRequest",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "decryptedValue",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the secret. If not provided, the secret will be created in\nthe default workspace for the user's organization, if the default workspace for the\norganization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DecryptedSecret",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "decryptedValue",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetSecretsRequest",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "secretRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SecretRid",
                "package" : "io.nominal.secrets.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetSecretsResponse",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "response",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Secret",
                "package" : "io.nominal.secrets.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "SearchSecretsQuery",
        "package" : "io.nominal.secrets.api"
      },
      "union" : [ {
        "fieldName" : "searchText",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "label",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Label",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "property",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Property",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "and",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchSecretsQuery",
                "package" : "io.nominal.secrets.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "or",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SearchSecretsQuery",
                "package" : "io.nominal.secrets.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchSecretsRequest",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchSecretsQuery",
            "package" : "io.nominal.secrets.api"
          }
        }
      }, {
        "fieldName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "Defaults to 100. Will throw if larger than 1000."
      }, {
        "fieldName" : "sort",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortOptions",
            "package" : "io.nominal.secrets.api"
          }
        }
      }, {
        "fieldName" : "token",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "archivedStatuses",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "ArchivedStatus",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "Default search status is NOT_ARCHIVED if none are provided. Allows for including archived secrets in search."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SearchSecretsResponse",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "results",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Secret",
                "package" : "io.nominal.secrets.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Secret",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        }
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PropertyValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Label",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        }
      }, {
        "fieldName" : "isArchived",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SecretRid",
        "package" : "io.nominal.secrets.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "SortField",
        "package" : "io.nominal.secrets.api"
      },
      "values" : [ {
        "value" : "CREATED_AT"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SortOptions",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "isDescending",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SortField",
            "package" : "io.nominal.secrets.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateSecretRequest",
        "package" : "io.nominal.secrets.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "properties",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "PropertyValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "labels",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "Label",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "decryptedValue",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "PreferredRefNameConfiguration",
        "package" : "io.nominal.security.api.workspace"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RefNameAndType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ProcedureSettings",
        "package" : "io.nominal.security.api.workspace"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ProcedureSettingsV1",
            "package" : "io.nominal.security.api.workspace"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ProcedureSettingsV1",
        "package" : "io.nominal.security.api.workspace"
      },
      "fields" : [ {
        "fieldName" : "workspaceProcedures",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ProcedureRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "A list of procedures that are elevated to the workspace-level.\nThey will be available for execution in a top-level context, rather\nthan just from the procedure details page.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RemoveType",
        "package" : "io.nominal.security.api.workspace"
      },
      "fields" : [ ],
      "docs" : "The request to remove a field from a workspace."
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateOrRemoveWorkspaceDisplayName",
        "package" : "io.nominal.security.api.workspace"
      },
      "union" : [ {
        "fieldName" : "displayName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "removeType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RemoveType",
            "package" : "io.nominal.security.api.workspace"
          }
        }
      } ],
      "docs" : "The request to update the display name of the workspace. The request will replace the existing display name\nwith the display name specified if it's provided. Otherwise, the current display name will be removed from\nthe workspace.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UpdateOrRemoveWorkspaceSymbol",
        "package" : "io.nominal.security.api.workspace"
      },
      "union" : [ {
        "fieldName" : "symbol",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceSymbol",
            "package" : "io.nominal.security.api.workspace"
          }
        }
      }, {
        "fieldName" : "removeType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RemoveType",
            "package" : "io.nominal.security.api.workspace"
          }
        }
      } ],
      "docs" : "The request to update the symbol of the workspace. The request will replace the existing symbol\nwith the symbol specified if it's provided. Otherwise, the current symbol will be removed from\nthe workspace.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateWorkspaceRequest",
        "package" : "io.nominal.security.api.workspace"
      },
      "fields" : [ {
        "fieldName" : "displayName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateOrRemoveWorkspaceDisplayName",
                "package" : "io.nominal.security.api.workspace"
              }
            }
          }
        }
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateOrRemoveWorkspaceSymbol",
                "package" : "io.nominal.security.api.workspace"
              }
            }
          }
        }
      }, {
        "fieldName" : "settings",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceSettings",
                "package" : "io.nominal.security.api.workspace"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Workspace",
        "package" : "io.nominal.security.api.workspace"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceId",
            "package" : "io.nominal.api.ids"
          }
        },
        "docs" : "A unique identifier for the workspace within the organization. The workspace ID must be lower case alphanumeric characters, optionally separated by hyphens."
      }, {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "org",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OrgRid",
            "package" : "io.nominal.authentication.api"
          }
        }
      }, {
        "fieldName" : "displayName",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "symbol",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceSymbol",
                "package" : "io.nominal.security.api.workspace"
              }
            }
          }
        }
      }, {
        "fieldName" : "settings",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceSettings",
            "package" : "io.nominal.security.api.workspace"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WorkspaceSettings",
        "package" : "io.nominal.security.api.workspace"
      },
      "fields" : [ {
        "fieldName" : "refNames",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PreferredRefNameConfiguration",
                "package" : "io.nominal.security.api.workspace"
              }
            }
          }
        }
      }, {
        "fieldName" : "procedures",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ProcedureSettings",
                "package" : "io.nominal.security.api.workspace"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "WorkspaceSymbol",
        "package" : "io.nominal.security.api.workspace"
      },
      "union" : [ {
        "fieldName" : "icon",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Workspace icon name (e.g. castle)"
      }, {
        "fieldName" : "emoji",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Workspace emoji name (e.g. :castle:)"
      }, {
        "fieldName" : "image",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "Workspace image url (e.g. https://example.com/image.png)"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateNominalDataSourceRequest",
        "package" : "io.nominal.storage.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceId",
            "package" : "io.nominal.storage.datasource.api"
          }
        },
        "docs" : "A human readable identifier. Must be unique within an organization.\n"
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Granularity",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Specifies the timestamp granularity of the datasource (i.e., picosecond or nanosecond scale).\nDefaults to nanosecond granularity.\n"
      }, {
        "fieldName" : "inMemoryStreamingEnabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the datasource. If not provided, the datasource will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NominalDataSource",
        "package" : "io.nominal.storage.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "id",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceId",
            "package" : "io.nominal.storage.datasource.api"
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "dataLastWrittenAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "Returns the approximate timestamp at which data was written to the data source.\nWill be accurate to within 1 minute.\n"
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Granularity",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "inMemoryStreamingEnabled",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        }
      } ],
      "docs" : "A logical grouping of series.\n"
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "NominalDataSourceId",
        "package" : "io.nominal.storage.datasource.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateNominalDataSourceRequest",
        "package" : "io.nominal.storage.datasource.api"
      },
      "fields" : [ {
        "fieldName" : "inMemoryStreamingEnabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DeleteDataRequest",
        "package" : "io.nominal.storage.deletion.api"
      },
      "fields" : [ {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "timeRange",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TimeRange",
                "package" : "io.nominal.storage.deletion.api"
              }
            }
          }
        },
        "docs" : "If specified, will only delete data within the given time range.\nIf not specified, will delete data across all time.\n"
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "map",
              "map" : {
                "keyType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagName",
                    "package" : "io.nominal.api"
                  }
                },
                "valueType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "docs" : "If specified, will only delete data that fully matches the given tags.\nIf not specified, will delete data across all tags.\n"
      }, {
        "fieldName" : "channelNames",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        },
        "docs" : "If specified, will only delete data that has an exact channel name match with the given names.\nIf not specified, will delete data across all channels.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeRange",
        "package" : "io.nominal.storage.deletion.api"
      },
      "fields" : [ {
        "fieldName" : "start",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "end",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "NominalDataType",
        "package" : "io.nominal.storage.series.api"
      },
      "values" : [ {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      }, {
        "value" : "LOG"
      }, {
        "value" : "INT64"
      }, {
        "value" : "UINT64"
      }, {
        "value" : "DOUBLE_ARRAY"
      }, {
        "value" : "STRING_ARRAY"
      }, {
        "value" : "STRUCT"
      }, {
        "value" : "VIDEO"
      } ],
      "docs" : "The data types supported by Nominal's database.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ArrayPoints",
        "package" : "io.nominal.storage.writer.api"
      },
      "union" : [ {
        "fieldName" : "double",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoubleArrayPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "string",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringArrayPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      } ],
      "docs" : "Array points for the internal API for directly writing points which supports all points types.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ArraysValues",
        "package" : "io.nominal.storage.writer.api"
      },
      "union" : [ {
        "fieldName" : "strings1d",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "STRING"
                }
              }
            }
          }
        }
      }, {
        "fieldName" : "doubles1d",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "list",
              "list" : {
                "itemType" : {
                  "type" : "primitive",
                  "primitive" : "DOUBLE"
                }
              }
            }
          }
        }
      } ],
      "docs" : "Each element within the outer list corresponds to an Array point. Subsequent inner lists contain the array \nvalues recorded for that point.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ColumnBatch",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "Channel within nominal to stream data to.\n"
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Mapping of key-value pairs to provide as tags to all points within the batch\n"
      }, {
        "fieldName" : "timestamps",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Timestamp",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "List of timestamp values that correspond to the provided list of column values. The number of timestamps\nprovided MUST match the number of columnar values provided, otherwise a 400 error will be returned.\n"
      }, {
        "fieldName" : "values",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnValues",
            "package" : "io.nominal.storage.writer.api"
          }
        },
        "docs" : "List of time series values that should be ingested to a single channel. The number of columnar values\nprovided MUST match the number of timestamps provided, otherwise a 400 error will be returned.\n"
      } ],
      "docs" : "Batch of data to stream for a single channel with their associated timestamps.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ColumnValues",
        "package" : "io.nominal.storage.writer.api"
      },
      "union" : [ {
        "fieldName" : "strings",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "doubles",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      }, {
        "fieldName" : "ints",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        }
      }, {
        "fieldName" : "arrays",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArraysValues",
            "package" : "io.nominal.storage.writer.api"
          }
        }
      }, {
        "fieldName" : "structs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ],
      "docs" : "List of values for a set of points to ingest from a single channel.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DoubleArrayPoint",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DOUBLE"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DoublePoint",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "DOUBLE"
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Field",
        "package" : "io.nominal.storage.writer.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "IntPoint",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogPoint",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogValue",
            "package" : "io.nominal.storage.writer.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogValue",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "args",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "MeasurementName",
        "package" : "io.nominal.storage.writer.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Points",
        "package" : "io.nominal.storage.writer.api"
      },
      "union" : [ {
        "fieldName" : "string",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "double",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoublePoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "log",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "int",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IntPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "array",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrayPoints",
            "package" : "io.nominal.storage.writer.api"
          }
        }
      }, {
        "fieldName" : "struct",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StructPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      } ],
      "docs" : "Points for internal API for directly writing points which supports all points types.\nLogs specifically are supported externally via a separate endpoint.\n"
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "PointsExternal",
        "package" : "io.nominal.storage.writer.api"
      },
      "union" : [ {
        "fieldName" : "string",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StringPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "double",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DoublePoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "int",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "IntPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "array",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArrayPoints",
            "package" : "io.nominal.storage.writer.api"
          }
        }
      }, {
        "fieldName" : "struct",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StructPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RecordsBatch",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "points",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Points",
            "package" : "io.nominal.storage.writer.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "RecordsBatchExternal",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "points",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PointsExternal",
            "package" : "io.nominal.storage.writer.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StringArrayPoint",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StringPoint",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "StructPoint",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "jsonString",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TelegrafMetric",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "fields",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Field",
                "package" : "io.nominal.storage.writer.api"
              }
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "ANY"
            }
          }
        },
        "docs" : "The values are expected to be either numeric or string values"
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeasurementName",
            "package" : "io.nominal.storage.writer.api"
          }
        },
        "docs" : "The measurement name. Measurement name and field are concatenated when creating the Nominal channel name."
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "timestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "ANY"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WriteBatchesRequest",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "batches",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RecordsBatch",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "asynchronousInsert",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Is always true - setting this to false will do nothing.\n",
        "deprecated" : "Should not be used.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WriteBatchesRequestExternal",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "batches",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RecordsBatchExternal",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "asynchronousInsert",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "docs" : "Is always true - setting this to false will do nothing.\n",
        "deprecated" : "Should not be used.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WriteColumnBatchesRequest",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "batches",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ColumnBatch",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        },
        "docs" : "Batches of columnar data to stream to Nominal. Each channel's data are provided as a column batch.\n"
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "docs" : "RID of the datasource (e.g., for a Connection) or dataset to stream data into.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WriteLogsRequest",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "logs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Channel",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "If provided, the channel to which to write logs.\nIf not provided, defaults to \"logs\"\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WriteStructsRequest",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "structs",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "StructPoint",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Channel",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "If provided, the channel to which to write structs.\nIf not provided, defaults to \"structs\"\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "WriteTelegrafBatchesRequest",
        "package" : "io.nominal.storage.writer.api"
      },
      "fields" : [ {
        "fieldName" : "metrics",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TelegrafMetric",
                "package" : "io.nominal.storage.writer.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChartTheme",
        "package" : "io.nominal.themes.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeRid",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Unique resource identifier for the theme.\n"
      }, {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The name of the theme as defined by the user.\n"
      }, {
        "fieldName" : "createdBy",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "docs" : "The rid of the user who first created the theme.\n"
      }, {
        "fieldName" : "createdAt",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "docs" : "The time the theme was created.\n"
      }, {
        "fieldName" : "updatedBy",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        },
        "docs" : "The rid of the user who last updated the theme.\n"
      }, {
        "fieldName" : "updatedAt",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "DATETIME"
            }
          }
        },
        "docs" : "The rid of the user who last updated the theme.\n"
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeContent",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Specifies the chart theme styling (e.g. font, legends, axes)\n"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ChartThemeContent",
        "package" : "io.nominal.themes.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeContentV1",
            "package" : "io.nominal.themes.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChartThemeContentV1",
        "package" : "io.nominal.themes.api"
      },
      "fields" : [ {
        "fieldName" : "titleEnabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to show a title in the export.\n"
      }, {
        "fieldName" : "titleAlignment",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TextAlignment",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "How to align the text of the title.\n"
      }, {
        "fieldName" : "titleFontSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Font size of the title.\n"
      }, {
        "fieldName" : "titleFontColor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Font color of the title.\n"
      }, {
        "fieldName" : "captionEnabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to show a caption in the export.\n"
      }, {
        "fieldName" : "captionAlignment",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TextAlignment",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "How to align the text of the caption.\n"
      }, {
        "fieldName" : "captionFontSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Font size of the caption.\n"
      }, {
        "fieldName" : "captionFontColor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Font color of the caption.\n"
      }, {
        "fieldName" : "backgroundEnabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to include a default background with the export.\n(`false` indicates that the background should be transparent)\n"
      }, {
        "fieldName" : "legendEnabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether to include a legend in the export.\n"
      }, {
        "fieldName" : "legendPosition",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LegendPosition",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Which side the legend should appear on.\n"
      }, {
        "fieldName" : "legendFontSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "Font size of the legend.\n"
      }, {
        "fieldName" : "legendFontColor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Font color of the legend.\n"
      }, {
        "fieldName" : "legendPlacement",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LegendPlacement",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Where on the chart the legend should be placed.\n"
      }, {
        "fieldName" : "rowGapEnabled",
        "type" : {
          "type" : "primitive",
          "primitive" : "BOOLEAN"
        },
        "docs" : "Whether rows will be separated.\n"
      }, {
        "fieldName" : "rowGapSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The size of the row gap.\n"
      }, {
        "fieldName" : "aspectRatioWidth",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "The relative width of the chart export.\n"
      }, {
        "fieldName" : "aspectRatioHeight",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "The relative height of the chart export.\n"
      }, {
        "fieldName" : "chartTypeThemes",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartTypeThemes",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "Theme parameters specific to chart types.\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ChartThemeRid",
        "package" : "io.nominal.themes.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "RID"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChartTypeThemes",
        "package" : "io.nominal.themes.api"
      },
      "fields" : [ {
        "fieldName" : "timeSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesChartTheme",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "The theme specific to parameters of the time series chart.\n"
      } ],
      "docs" : "Theme parameters specific to chart types.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateChartThemeRequest",
        "package" : "io.nominal.themes.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The name of the theme.\n"
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeContent",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "The theme fields.\n"
      }, {
        "fieldName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "docs" : "The workspace in which to create the theme. If not provided, the theme will be created in the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "HexColor",
        "package" : "io.nominal.themes.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "LegendPlacement",
        "package" : "io.nominal.themes.api"
      },
      "values" : [ {
        "value" : "OUTSIDE"
      }, {
        "value" : "INSIDE"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "LegendPosition",
        "package" : "io.nominal.themes.api"
      },
      "values" : [ {
        "value" : "TOP"
      }, {
        "value" : "BOTTOM"
      }, {
        "value" : "LEFT"
      }, {
        "value" : "RIGHT"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TextAlignment",
        "package" : "io.nominal.themes.api"
      },
      "values" : [ {
        "value" : "START"
      }, {
        "value" : "END"
      }, {
        "value" : "CENTER"
      }, {
        "value" : "JUSTIFY"
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TextDirection",
        "package" : "io.nominal.themes.api"
      },
      "values" : [ {
        "value" : "HORIZONTAL"
      }, {
        "value" : "VERTICAL"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "TimeSeriesChartTheme",
        "package" : "io.nominal.themes.api"
      },
      "union" : [ {
        "fieldName" : "v1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimeSeriesChartThemeV1",
            "package" : "io.nominal.themes.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimeSeriesChartThemeV1",
        "package" : "io.nominal.themes.api"
      },
      "fields" : [ {
        "fieldName" : "xAxisTickFontSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "The font size of the x-axis ticks.\n"
      }, {
        "fieldName" : "xAxisTickFontColor",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "HexColor",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "The font color of the x-axis ticks.\n"
      }, {
        "fieldName" : "yAxisTitleFontSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "The font size of the y-axis labels.\n"
      }, {
        "fieldName" : "yAxisTickFontSize",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "docs" : "The font size of the y-axis ticks.\n"
      }, {
        "fieldName" : "thresholdLineWidth",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "docs" : "The line thickness in px of the threshold line.\n"
      } ],
      "docs" : "Theme parameters specific to the time series chart.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateChartThemeRequest",
        "package" : "io.nominal.themes.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "docs" : "The name of the theme.\n"
      }, {
        "fieldName" : "content",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeContent",
            "package" : "io.nominal.themes.api"
          }
        },
        "docs" : "The theme fields.\n"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetChannelMetadataRequest",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "GetChannelMetadataRequest",
                "package" : "io.nominal.timeseries.channelmetadata.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetChannelMetadataResponse",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelMetadata",
                "package" : "io.nominal.timeseries.channelmetadata.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateChannelMetadataRequest",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateChannelMetadataRequest",
                "package" : "io.nominal.timeseries.channelmetadata.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateChannelMetadataResponse",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChannelMetadata",
                "package" : "io.nominal.timeseries.channelmetadata.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelIdentifier",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "channelName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ChannelMetadata",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "channelIdentifier",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelIdentifier",
            "package" : "io.nominal.timeseries.channelmetadata.api"
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "dataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesDataType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetChannelMetadataRequest",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "channelIdentifier",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelIdentifier",
            "package" : "io.nominal.timeseries.channelmetadata.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateChannelMetadataRequest",
        "package" : "io.nominal.timeseries.channelmetadata.api"
      },
      "fields" : [ {
        "fieldName" : "channelIdentifier",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChannelIdentifier",
            "package" : "io.nominal.timeseries.channelmetadata.api"
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "unitUpdate",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitUpdate",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ApiLocator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ApiType",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "values" : [ {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      }, {
        "value" : "INT64"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "AttributeName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchCreateLogicalSeriesRequest",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateLogicalSeries",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchCreateLogicalSeriesResponse",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogicalSeries",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchResolveSeriesRequest",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResolveSeriesRequest",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchResolveSeriesResponse",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "series",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResolveSeriesResponse",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateLogicalSeriesRequest",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UpdateLogicalSeries",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchUpdateLogicalSeriesResponse",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogicalSeries",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BigQueryLocator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "valueColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        },
        "docs" : "The name of the column which has the values for this series"
      }, {
        "fieldName" : "timeColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        },
        "docs" : "The name of the column which has the timestamps for this series"
      }, {
        "fieldName" : "tagValues",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "The mapping of columns to column values to filter on"
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BigQueryType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "BigQueryType",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "values" : [ {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "BucketName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ColumnName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Context",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "properties",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ContextProperty",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ContextProperty",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "union" : [ {
        "fieldName" : "value",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateLogicalSeries",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Locator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "idLocator",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "UUID"
            }
          }
        },
        "docs" : "If present, will be used as the locator of the LogicalSeriesRid. If a logical series already exists\nwith this id, will throw a CONFLICT.\n"
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "seriesDataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesDataType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Granularity",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "seriesArchetypeRid",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesArchetypeRid",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Deprecated. Do not use.\n"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DatabaseName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "DatasetName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "FieldName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Influx1Locator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "database",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatabaseName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "measurement",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeasurementName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FieldName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InfluxType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Influx2Locator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "bucket",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "measurement",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeasurementName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FieldName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "valueColumn",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "If omitted, defaults to `_value`. Can be used to extract tag values."
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InfluxType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "InfluxType",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "values" : [ {
        "value" : "BOOLEAN"
      }, {
        "value" : "NUMERIC"
      }, {
        "value" : "STRING"
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "LocationName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Locator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "union" : [ {
        "fieldName" : "timescaleDbLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimescaleDbLocator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "influxLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Influx2Locator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "influx1Locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Influx1Locator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "nominalLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalLocator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "timestreamLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestreamLocator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "visualCrossingLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VisualCrossingLocator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "bigQueryLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BigQueryLocator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "apiLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiLocator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "videoLocator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoLocator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "LogicalSeries",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Locator",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "timeLocator",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Locator",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        },
        "docs" : "Only required to be present for legacy CSVs."
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "seriesDataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesDataType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "granularity",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Granularity",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Time granularity of the series. If omitted, defaults to nanoseconds.",
        "deprecated" : "The source of truth for granularity comes from the data source of the logical series."
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "MeasureName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "MeasurementName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NominalLocator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataType",
            "package" : "io.nominal.storage.series.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "ProjectName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ResolveSeriesError",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "message",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        }
      }, {
        "fieldName" : "args",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            },
            "valueType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ResolveSeriesRequest",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "name",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "datasource",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "ResolveSeriesResponse",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "union" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "error",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResolveSeriesError",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SchemaName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "TableName",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimescaleDbLocator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TableName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "schema",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SchemaName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "column",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "timeColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "dimensions",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimescaleType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimescaleType",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "values" : [ {
        "value" : "BOOLEAN"
      }, {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestreamLocator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TableName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "dimensions",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "measure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeasureName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "attribute",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttributeName",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        },
        "docs" : "If present, will be the attribute within the measurement for multi-measures."
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestreamType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "TimestreamType",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "values" : [ {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "UnitUpdate",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "union" : [ {
        "fieldName" : "unit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Unit",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "clearUnit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Empty",
            "package" : "io.nominal.api"
          }
        }
      } ],
      "docs" : "UnitUpdate is used to either set a unit, or to clear an existing unit.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateLogicalSeries",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "logicalSeriesRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "deprecated" : "Deprecated. Use unitUpdate instead."
      }, {
        "fieldName" : "unitUpdate",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitUpdate",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoLocator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "VisualCrossingEndpointUri",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "values" : [ {
        "value" : "HISTORY"
      }, {
        "value" : "TIMELINE"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VisualCrossingLocator",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "fields" : [ {
        "fieldName" : "location",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LocationName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        },
        "docs" : "Location to fetch data from.  Can be any arbitrary string (i.e. name, abbreviation,\nzip code, lat/long, etc.) as remote endpoint performs location resolution.\n"
      }, {
        "fieldName" : "endpoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VisualCrossingEndpointUri",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        },
        "docs" : "Defaults to HISTORY.  Endpoint to fetch data from for this series.\n"
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FieldName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VisualCrossingType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "VisualCrossingType",
        "package" : "io.nominal.timeseries.logicalseries.api"
      },
      "values" : [ {
        "value" : "DOUBLE"
      }, {
        "value" : "STRING"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "ApiLocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchCreateSeriesMetadataRequest",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "requests",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateSeriesMetadataRequest",
                "package" : "io.nominal.timeseries.metadata.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetSeriesMetadataRequest",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "datasources",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BatchGetSeriesMetadataResponse",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "responses",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "SeriesMetadata",
                    "package" : "io.nominal.timeseries.metadata.api"
                  }
                }
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "BigQueryLocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "valueColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "timeColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BigQueryType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateSeriesMetadataRequest",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        },
        "docs" : "This name should be unique amongst SeriesMetadata within the data source. All series created from this\nmetadata will share this name.\n"
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Tags specified here will take precedence over tags specified in the RunDatasource, in the case that both specify the same TagName.\n",
        "deprecated" : "Deprecated. Should not be used."
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Influx1LocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "database",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatabaseName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "measurement",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeasurementName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FieldName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InfluxType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Influx2LocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "bucket",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BucketName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "measurement",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeasurementName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "valueColumn",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        },
        "docs" : "If omitted, defaults to `_value`. Can be used to extract tag values."
      }, {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FieldName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InfluxType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "LocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "union" : [ {
        "fieldName" : "timescaleDb",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimescaleDbLocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "influx",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Influx2LocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "influx1",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Influx1LocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "nominal",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalLocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "timestream",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestreamLocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "visualCrossing",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VisualCrossingLocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "bigQuery",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BigQueryLocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "api",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiLocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "video",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoLocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "NominalLocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataType",
            "package" : "io.nominal.storage.series.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "SeriesMetadata",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesMetadataRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "locator",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LocatorTemplate",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        }
      }, {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      }, {
        "fieldName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagValue",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "docs" : "Tags specified here will take precedence over tags specified in the RunDatasource, in the case that both specify the same TagName.\n",
        "deprecated" : "Deprecated. Should not be used."
      }, {
        "fieldName" : "seriesDataType",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SeriesDataType",
                "package" : "io.nominal.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "SeriesMetadataName",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "STRING"
      }
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimescaleDbLocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TableName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "schema",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SchemaName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "column",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "timeColumn",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ColumnName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimescaleType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "TimestreamLocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "table",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TableName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "measure",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MeasureName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "attribute",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AttributeName",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TimestreamType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "UpdateSeriesMetadataRequest",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "unit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Unit",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "deprecated" : "Deprecated. Use unitUpdate instead."
      }, {
        "fieldName" : "unitUpdate",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitUpdate",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        }
      }, {
        "fieldName" : "description",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "STRING"
            }
          }
        }
      } ],
      "docs" : "If fields are present, will override existing values."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VideoLocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "channel",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Channel",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "VisualCrossingLocatorTemplate",
        "package" : "io.nominal.timeseries.metadata.api"
      },
      "fields" : [ {
        "fieldName" : "field",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FieldName",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      }, {
        "fieldName" : "endpoint",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VisualCrossingEndpointUri",
                "package" : "io.nominal.timeseries.logicalseries.api"
              }
            }
          }
        },
        "docs" : "Defaults to HISTORY.\n"
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VisualCrossingType",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "Chunk",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChunkRid",
            "package" : "io.nominal.api.rids"
          }
        }
      }, {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChunkType",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        }
      }, {
        "fieldName" : "logicalSeriesRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        },
        "docs" : "The number of distinct timestamps contained within the chunk."
      }, {
        "fieldName" : "sizeInBytes",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "resolution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Resolution",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        }
      }, {
        "fieldName" : "handle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        }
      } ]
    }
  }, {
    "type" : "enum",
    "enum" : {
      "typeName" : {
        "name" : "ChunkType",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "values" : [ {
        "value" : "ARROW_WITH_RELATIVE_TIMESTAMPS"
      }, {
        "value" : "ARROW_WITH_ABSOLUTE_TIMESTAMPS"
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateChunk",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChunkType",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        }
      }, {
        "fieldName" : "logicalSeriesRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "count",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "sizeInBytes",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      }, {
        "fieldName" : "resolution",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Resolution",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        }
      }, {
        "fieldName" : "handle",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Handle",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateChunksParameters",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "createChunks",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateChunk",
                "package" : "io.nominal.timeseries.seriescache.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "CreateChunksResponse",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "chunkRids",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChunkRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ],
      "docs" : "Responses are returned in the same order as the requests.\n"
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DeleteChunksParameters",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "DeleteChunksResponse",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "deletedChunkRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ChunkRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetChunksParameters",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "startTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "endTimestamp",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "Timestamp",
            "package" : "io.nominal.api"
          }
        }
      }, {
        "fieldName" : "resolutionNanos",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        }
      } ]
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "GetChunksResponse",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "chunks",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Chunk",
                "package" : "io.nominal.timeseries.seriescache.api"
              }
            }
          }
        }
      } ]
    }
  }, {
    "type" : "union",
    "union" : {
      "typeName" : {
        "name" : "Handle",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "union" : [ {
        "fieldName" : "s3",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Handle",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        }
      } ]
    }
  }, {
    "type" : "alias",
    "alias" : {
      "typeName" : {
        "name" : "Resolution",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "alias" : {
        "type" : "primitive",
        "primitive" : "SAFELONG"
      },
      "docs" : "In nanoseconds."
    }
  }, {
    "type" : "object",
    "object" : {
      "typeName" : {
        "name" : "S3Handle",
        "package" : "io.nominal.timeseries.seriescache.api"
      },
      "fields" : [ {
        "fieldName" : "s3Path",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "S3Path",
            "package" : "io.nominal.api"
          }
        }
      } ]
    }
  } ],
  "services" : [ {
    "serviceName" : {
      "name" : "AttachmentService",
      "package" : "io.nominal.attachments.api"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/attachments/v1/attachments",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateAttachmentRequest",
            "package" : "io.nominal.attachments.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Attachment",
          "package" : "io.nominal.attachments.api"
        }
      },
      "docs" : "Create a new attachment. Assumes the file is already uploaded to S3 through the upload service.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/attachments/v1/attachments/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Attachment",
          "package" : "io.nominal.attachments.api"
        }
      },
      "docs" : "Get an attachment by its RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getBatch",
      "httpMethod" : "POST",
      "httpPath" : "/attachments/v1/attachments/batch",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetAttachmentsRequest",
            "package" : "io.nominal.attachments.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAttachmentsResponse",
          "package" : "io.nominal.attachments.api"
        }
      },
      "docs" : "Get a set of attachments by their RIDs.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getContent",
      "httpMethod" : "GET",
      "httpPath" : "/attachments/v1/attachments/{rid}/content",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BINARY"
      },
      "docs" : "Get the binary content of an attachment.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getUri",
      "httpMethod" : "GET",
      "httpPath" : "/attachments/v1/attachments/{rid}/uri",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "AttachmentUri",
          "package" : "io.nominal.attachments.api"
        }
      },
      "docs" : "Get a pre-signed URI to download an attachment. The link expires in 1 minute.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "update",
      "httpMethod" : "PUT",
      "httpPath" : "/attachments/v1/attachments/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateAttachmentRequest",
            "package" : "io.nominal.attachments.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Attachment",
          "package" : "io.nominal.attachments.api"
        }
      },
      "docs" : "Update an attachment. Only the fields that are set in the request will be updated.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archive",
      "httpMethod" : "PUT",
      "httpPath" : "/attachments/v1/attachments/{rid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archive an attachment.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchive",
      "httpMethod" : "PUT",
      "httpPath" : "/attachments/v1/attachments/{rid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachmentRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unarchive an attachment.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The attachment service provides functionality for creating, updating, and archiving attachments uploaded to S3.\n"
  }, {
    "serviceName" : {
      "name" : "AuthenticationServiceV2",
      "package" : "io.nominal.authentication.api"
    },
    "endpoints" : [ {
      "endpointName" : "getMyProfile",
      "httpMethod" : "GET",
      "httpPath" : "/authentication/v2/my/profile",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "UserV2",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Gets the profile of the authenticated user.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMyProfile",
      "httpMethod" : "PUT",
      "httpPath" : "/authentication/v2/my/profile",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "updateMyProfileRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateMyProfileRequest",
            "package" : "io.nominal.authentication.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "UserV2",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Updates the profile of the authenticated user.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getMySettings",
      "httpMethod" : "GET",
      "httpPath" : "/authentication/v2/my/settings",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "UserSettings",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Gets the settings of the authenticated user.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMySettings",
      "httpMethod" : "PUT",
      "httpPath" : "/authentication/v2/my/settings",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "userSettings",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserSettings",
            "package" : "io.nominal.authentication.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "UserSettings",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Updates the settings of the authenticated user.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getMyOrgSettings",
      "httpMethod" : "GET",
      "httpPath" : "/authentication/v2/org/settings",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "OrgSettings",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Gets the settings of the org of the authenticated user.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMyOrgSettings",
      "httpMethod" : "PUT",
      "httpPath" : "/authentication/v2/org/settings",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "orgSettings",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OrgSettings",
            "package" : "io.nominal.authentication.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "OrgSettings",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Updates the settings of the org of the authenticated user.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchUsersV2",
      "httpMethod" : "POST",
      "httpPath" : "/authentication/v2/users",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchUsersRequest",
            "package" : "io.nominal.authentication.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchUsersResponseV2",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Searches for users by email and displayName.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getUsers",
      "httpMethod" : "POST",
      "httpPath" : "/authentication/v2/users/batch",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "userRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UserRid",
                "package" : "io.nominal.authentication.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "docs" : "The RIDs of the users to get",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "UserV2",
              "package" : "io.nominal.authentication.api"
            }
          }
        }
      },
      "docs" : "Get users by RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getUser",
      "httpMethod" : "GET",
      "httpPath" : "/authentication/v2/users/{userRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "userRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UserRid",
            "package" : "io.nominal.authentication.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "UserV2",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Gets a user by RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getJwks",
      "httpMethod" : "GET",
      "httpPath" : "/authentication/v2/jwks",
      "args" : [ ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Jwks",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Returns JWKS (JSON Web Key Set) for MediaMTX JWT verification.\nOnly available if MediaMTX integration is enabled.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "generateMediaMtxToken",
      "httpMethod" : "POST",
      "httpPath" : "/authentication/v2/mediamtx/token",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GenerateMediaMtxTokenRequest",
            "package" : "io.nominal.authentication.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GenerateMediaMtxTokenResponse",
          "package" : "io.nominal.authentication.api"
        }
      },
      "docs" : "Generates a JWT token for MediaMTX authentication with a 2-hour expiration.\nThe token is signed with the MediaMTX private key and contains the specified permissions.\nRequires authentication with Nominal. This endpoint is intended for internal use only.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "This service provides operations for managing user and org profiles/settings.\nIts name is a bit of a misnomer.\n"
  }, {
    "serviceName" : {
      "name" : "AuthorizationService",
      "package" : "io.nominal.authorization"
    },
    "endpoints" : [ {
      "endpointName" : "authorize",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/authorize",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AuthorizationRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "primitive",
            "primitive" : "RID"
          }
        }
      },
      "docs" : "Given a set of resources, returns the set of resources that the\nuser is authorized to access.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetWorkspaceForResource",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/batch-get-workspace-for-resource",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "RID"
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "primitive",
            "primitive" : "RID"
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "WorkspaceRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      },
      "docs" : "Given a set of resources, returns the workspace that each resource belongs to. If a user\nis not authorized on the resource, will omit the resource from the response.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "registerInWorkspace",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/register-in-workspace",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RegisterInWorkspaceRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Marks a set of resources as belonging to a workspace. Either all resources are\nregistered or none are.\nIf the user is not in the workspace, this will throw.\nIf a resource already belongs to a different workspace, this will throw.\nIf a resource already belongs to this workspace, this is a no-op.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "checkAdmin",
      "httpMethod" : "GET",
      "httpPath" : "/authorization/v1/checkAdmin",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "docs" : "Given an authenticated session, this endpoint returns a HTTP 204 if the\nauthenticated user is an admin and HTTP 403 otherwise.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "isEmailAllowed",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/is-email-allowed",
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IsEmailAllowedRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IsEmailAllowedResponse",
          "package" : "io.nominal.authorization"
        }
      },
      "docs" : "Checks if the email is allowed to register.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "isEmailAllowedOkta",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/is-email-allowed-okta",
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "OktaRegistrationRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "OktaRegistrationResponse",
          "package" : "io.nominal.authorization"
        }
      },
      "docs" : "Checks if the email is allowed to register, following Okta \"registration inline hook\" API.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAccessToken",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/access-token",
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetAccessTokenRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAccessTokenResponse",
          "package" : "io.nominal.authorization"
        }
      },
      "docs" : "Provide an OIDC ID token to get a Nominal access token suitable for making API requests.\nIts expiry will match that of the input ID token, capped at 24h. TODO(MGMT-933): reduce this duration.\nThrows NotAuthorized if the ID token is invalid or if the OIDC provider is not known.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createApiKey",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/api-key",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateApiKeyRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CreateApiKeyResponse",
          "package" : "io.nominal.authorization"
        }
      },
      "docs" : "Provide a long-lived API key for making API requests.\nThe API key is irretrievable after initial creation.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listApiKeysInOrg",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/api-keys/org",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ListApiKeyRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ListApiKeyResponse",
          "package" : "io.nominal.authorization"
        }
      },
      "docs" : "List all API keys in the organization.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listUserApiKeys",
      "httpMethod" : "POST",
      "httpPath" : "/authorization/v1/api-keys/user",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ListApiKeyRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ListApiKeyResponse",
          "package" : "io.nominal.authorization"
        }
      },
      "docs" : "List all API keys for the user.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "revokeApiKey",
      "httpMethod" : "PUT",
      "httpPath" : "/authorization/v1/api-key/{rid}/delete",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ApiKeyRid",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Delete an API key.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Authorization service manages the permissions for a user\nto access resources.\n"
  }, {
    "serviceName" : {
      "name" : "InternalApiKeyService",
      "package" : "io.nominal.authorization"
    },
    "endpoints" : [ {
      "endpointName" : "getAccessTokenFromApiKeyValue",
      "httpMethod" : "POST",
      "httpPath" : "/api-key-internal/v1/access-token",
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetAccessTokenFromApiKeyRequest",
            "package" : "io.nominal.authorization"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAccessTokenResponse",
          "package" : "io.nominal.authorization"
        }
      },
      "docs" : "Get a Nominal-issued access token from a long-lived API key. Callers should verify that\ntheir api key is formatted properly (i.e. prefixed with \"nominal_api_key\") before calling this endpoint.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "This internal-only service manages long lived api keys.e\n"
  }, {
    "serviceName" : {
      "name" : "CommentsService",
      "package" : "io.nominal.comments.api"
    },
    "endpoints" : [ {
      "endpointName" : "getConversation",
      "httpMethod" : "GET",
      "httpPath" : "/comments/v1/conversations/{resourceType}/{resourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResourceType",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The type of resource that the comments are associated with\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of resource that the comments are associated with\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Conversation",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "A conversation is a fully resolved comment tree. It includes all comments for the given resource\nand all the nested comments/replies to those comments.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getConversationCount",
      "httpMethod" : "GET",
      "httpPath" : "/comments/v1/conversations/{resourceType}/{resourceRid}/count",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceType",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ResourceType",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The type of resource that the comments are associated with\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of resource that the comments are associated with\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "includeDeleted",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "includeDeleted"
          }
        },
        "docs" : "Whether to include deleted comments in the count\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "INTEGER"
      },
      "docs" : "Returns the number of comments in a conversation.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getComment",
      "httpMethod" : "GET",
      "httpPath" : "/comments/v1/comments/{commentRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of comment to fetch\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Get a comment identified by its RID\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createComment",
      "httpMethod" : "POST",
      "httpPath" : "/comments/v1/comments",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateCommentRequest",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Create a comment on a resource\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "editComment",
      "httpMethod" : "PUT",
      "httpPath" : "/comments/v1/comments/{commentRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of comment to edit\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EditCommentRequest",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Edit an existing comment\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteComment",
      "httpMethod" : "DELETE",
      "httpPath" : "/comments/v1/comments/{commentRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of comment to delete\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Delete an existing comment\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "pinComment",
      "httpMethod" : "PUT",
      "httpPath" : "/comments/v1/comments/{commentRid}/pin",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of comment to pin\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Pin a comment to the top of the conversation\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unpinComment",
      "httpMethod" : "DELETE",
      "httpPath" : "/comments/v1/comments/{commentRid}/pin",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of comment to unpin\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Unpin a comment from the top of the conversation\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "addReaction",
      "httpMethod" : "PUT",
      "httpPath" : "/comments/v1/comments/{commentRid}/reactions/{type}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of comment to delete\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReactionType",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The type of reaction\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Create a reaction on a comment\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "removeReaction",
      "httpMethod" : "DELETE",
      "httpPath" : "/comments/v1/comments/{commentRid}/reactions/{type}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "commentRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommentRid",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of comment to delete\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "type",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReactionType",
            "package" : "io.nominal.comments.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The type of reaction\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Comment",
          "package" : "io.nominal.comments.api"
        }
      },
      "docs" : "Create a reaction on a comment\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Comments service manages conversations about resources."
  }, {
    "serviceName" : {
      "name" : "LogSetService",
      "package" : "io.nominal.datasource.logset"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/log-set/v1/log-sets",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateLogSetRequest",
            "package" : "io.nominal.datasource.logset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogSetMetadata",
          "package" : "io.nominal.datasource.logset.api"
        }
      },
      "deprecated" : "Deprecated. Logs should be streamed to a dataset via NominalChannelWriterService#writeLogs.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "attachLogsAndFinalize",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/log-set/v1/log-set/{logSetRid}/attach-and-finalize",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "logSetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSetRid",
            "package" : "io.nominal.datasource.logset.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AttachLogsAndFinalizeRequest",
            "package" : "io.nominal.datasource.logset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogSetMetadata",
          "package" : "io.nominal.datasource.logset.api"
        }
      },
      "deprecated" : "Deprecated. Logs should be streamed to a dataset via NominalChannelWriterService#writeLogs.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getLogSetMetadata",
      "httpMethod" : "GET",
      "httpPath" : "/data-source/log-set/v1/log-set/{logSetRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "logSetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSetRid",
            "package" : "io.nominal.datasource.logset.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogSetMetadata",
          "package" : "io.nominal.datasource.logset.api"
        }
      },
      "deprecated" : "Logsets have been deprecated and replaced by datasets.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetLogSetMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/log-set/v1/log-set/multiple",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "LogSetRid",
                "package" : "io.nominal.datasource.logset.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "LogSetMetadata",
              "package" : "io.nominal.datasource.logset.api"
            }
          }
        }
      },
      "deprecated" : "Logsets have been deprecated and replaced by datasets.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchLogSets",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/log-set/v1/log-sets/get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchLogSetsRequest",
            "package" : "io.nominal.datasource.logset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchLogSetsResponse",
          "package" : "io.nominal.datasource.logset.api"
        }
      },
      "deprecated" : "Logsets have been deprecated and replaced by datasets.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchLogs",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/log-set/v1/log-set/{logSetRid}/logs",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "logSetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogSetRid",
            "package" : "io.nominal.datasource.logset.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchLogsRequest",
            "package" : "io.nominal.datasource.logset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchLogsResponse",
          "package" : "io.nominal.datasource.logset.api"
        }
      },
      "deprecated" : "Logsets have been deprecated and replaced by datasets.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Log sets are a type of datasource which can be used to store log data.\n"
  }, {
    "serviceName" : {
      "name" : "EventService",
      "package" : "io.nominal.event"
    },
    "endpoints" : [ {
      "endpointName" : "createEvent",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/events",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateEvent",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Event",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Creates an event.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getEvents",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/get-events",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetEvents",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Event",
              "package" : "io.nominal.event"
            }
          }
        }
      },
      "docs" : "Gets a set of events by UUIDs",
      "deprecated" : "This endpoint is deprecated. Use the batchGetEvents endpoint instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetEvents",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/events/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Event",
              "package" : "io.nominal.event"
            }
          }
        }
      },
      "docs" : "Gets a set of events by RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateEvent",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/update-event",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateEvent",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Event",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Updates the fields of an event. Empty fields are left unchanged.",
      "deprecated" : "This endpoint is deprecated. Use the batchUpdateEvent endpoint instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchUpdateEvent",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/events/batch-update",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchUpdateEventRequest",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchUpdateEventResponse",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Updates the fields of an event specified by each request in the batch.\nEmpty fields in the UpdateEventRequest are left unchanged.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchUpdateDisposition",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/update-disposition",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchUpdateDispositionRequest",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchUpdateDispositionResponse",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Updates the disposition of an event.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveEvent",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/archive-event",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArchiveEvent",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives an event",
      "deprecated" : "This endpoint is deprecated. Use the batchArchiveEvents endpoint instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchArchiveEvent",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/batch-archive-events",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives a set of events",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchUnarchiveEvent",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/batch-unarchive-events",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "EventRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unarchives a set of events",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchEvents",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/search-events",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchEventsRequest",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchEventsResponse",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Searches for events that match the given filters.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "aggregateEvents",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/aggregate-events",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AggregateEventsRequest",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "AggregateEventsResponse",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Searches for events matching the given filter and aggregates them based on the requested functions.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchAggregateEvents",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/aggregate-events/batch",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchAggregateEventsRequest",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchAggregateEventsResponse",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Searches for events matching the given filter and aggregates them based on the requested functions.\nReturns a list of responses in same order as the batched requests.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getEventsHistogram",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/histogram",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "EventsHistogramRequest",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "EventsHistogramResponse",
          "package" : "io.nominal.event"
        }
      },
      "docs" : "Gets a histogram of events that match the given filters.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listPropertiesAndLabels",
      "httpMethod" : "POST",
      "httpPath" : "/event/v1/list-properties-labels",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ListPropertiesAndLabelsRequest",
            "package" : "io.nominal.event"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ListPropertiesAndLabelsResponse",
          "package" : "io.nominal.scout.metadata"
        }
      },
      "docs" : "Lists the properties and labels of all events in the provided workspaces.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "An Event is an annotated moment or time range.\nThe Event Service is responsible for creating and retrieving events for a particular data source.\n"
  }, {
    "serviceName" : {
      "name" : "ContainerizedExtractorService",
      "package" : "io.nominal.ingest.api"
    },
    "endpoints" : [ {
      "endpointName" : "registerContainerizedExtractor",
      "httpMethod" : "POST",
      "httpPath" : "/extractors/v1/container",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RegisterContainerizedExtractorRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "RegisterContainerizedExtractorResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Registers a containerized extractor for a given set of containerized files.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getContainerizedExtractor",
      "httpMethod" : "GET",
      "httpPath" : "/extractors/v1/container/{extractorRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "extractorRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ContainerizedExtractor",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Get a containerized extractor by its RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchContainerizedExtractors",
      "httpMethod" : "POST",
      "httpPath" : "/extractors/v1/container/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchContainerizedExtractorsRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ContainerizedExtractor",
              "package" : "io.nominal.ingest.api"
            }
          }
        }
      },
      "docs" : "Search for containerized extractors based on query parameters.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateContainerizedExtractor",
      "httpMethod" : "PUT",
      "httpPath" : "/extractors/v1/container/{extractorRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "extractorRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateContainerizedExtractorRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ContainerizedExtractor",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Update a containerized extractor. Only the fields that are set in the request will be updated.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveContainerizedExtractor",
      "httpMethod" : "PUT",
      "httpPath" : "/extractors/v1/container/{extractorRid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "extractorRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archive a containerized extractor.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveContainerizedExtractor",
      "httpMethod" : "PUT",
      "httpPath" : "/extractors/v1/container/{extractorRid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "extractorRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unarchive a containerized extractor.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Containerized Extractor service provides functionality for creating, updating, and archiving containerized extractors.\n"
  }, {
    "serviceName" : {
      "name" : "IngestJobService",
      "package" : "io.nominal.ingest.api"
    },
    "endpoints" : [ {
      "endpointName" : "getIngestJob",
      "httpMethod" : "GET",
      "httpPath" : "/ingest/v1/ingest-job/{ingestJobRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "ingestJobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRid",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestJob",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Returns a single ingest job by RID. Does not include the full ingest request details.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Public API for querying ingest jobs.\n"
  }, {
    "serviceName" : {
      "name" : "IngestService",
      "package" : "io.nominal.ingest.api"
    },
    "endpoints" : [ {
      "endpointName" : "ingest",
      "httpMethod" : "POST",
      "httpPath" : "/ingest/v1/ingest",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "triggerIngest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Triggers an ingest job, allowing either creating a new dataset or uploading to an\nexisting one. This endpoint is meant to supersede all other ingestion endpoints as their functionality\ngets migrated to this one.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "rerunIngest",
      "httpMethod" : "POST",
      "httpPath" : "/ingest/v1/re-ingest",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RerunIngestRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Triggers an ingest job using an existing ingest job RID.\nReturns the same response format as the /ingest endpoint.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "ingestRun",
      "httpMethod" : "POST",
      "httpPath" : "/ingest/v1/ingest-run",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestRunRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestRunResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Creates a run and ingests data sources to be added to the run.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "ingestVideo",
      "httpMethod" : "POST",
      "httpPath" : "/ingest/v1/ingest-video",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "ingestVideo",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestVideoRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestVideoResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Ingests video data from a S3 Nominal upload bucket.\n",
      "deprecated" : "Replaced by ingest.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "reingestFromDatasets",
      "httpMethod" : "POST",
      "httpPath" : "/ingest/v1/reingest-dataset-files",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ReingestDatasetsRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ReingestDatasetsResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Re-ingests data from provided source datasets into either an existing target dataset, or a new one.\nOnly supported for CSV and Parquet dataset files.\nWill only reingest dataset files and will drop streaming data from datasets.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteFile",
      "httpMethod" : "DELETE",
      "httpPath" : "/ingest/v1/delete-file/{datasetRid}/file/{fileId}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "fileId",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "This is a best effort deletion of the file's data based on the ingestedAt timestamp. This is an unreversible\naction. Only v2 dataset file deletion is supported.\n!!!WARNING!!!\nIt's possible that the file has overwritten points, in which case, those older points will not be recovered.\nOnly use this endpoint if this is acceptable, the data across files are disjoint, or you're willing to\nre-ingest files to manually recover older points.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Ingest Service handles the data ingestion into Nominal/Clickhouse.\n"
  }, {
    "serviceName" : {
      "name" : "InternalIngestJobService",
      "package" : "io.nominal.ingest.api"
    },
    "endpoints" : [ {
      "endpointName" : "createIngestJob",
      "httpMethod" : "POST",
      "httpPath" : "/internal/ingest/v1/ingest-job",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "createIngestJobRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateIngestJobRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestJobRid",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Creates an ingest job, returning a RID for the job.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getIngestJobInternal",
      "httpMethod" : "GET",
      "httpPath" : "/internal/ingest/v1/ingest-job/{ingestJobRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "ingestJobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRid",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "InternalIngestJob",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Returns a single ingest job by RID with full details including the ingest request.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateIngestJobStatus",
      "httpMethod" : "PUT",
      "httpPath" : "/internal/ingest/v1/ingest-job/{ingestJobRid}/status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "ingestJobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobRid",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "status",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IngestJobStatus",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestJobStatus",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Updates the status of an ingest job.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Internal API for managing ingest jobs. This service is filtered out from public documentation.\n"
  }, {
    "serviceName" : {
      "name" : "ModuleService",
      "package" : "io.nominal.module"
    },
    "endpoints" : [ {
      "endpointName" : "createModule",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/module",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateModuleRequest",
            "package" : "io.nominal.module"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Module",
          "package" : "io.nominal.module"
        }
      },
      "docs" : "Create a new module.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateModule",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/module/{moduleRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "moduleRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ModuleRid",
            "package" : "io.nominal.modules.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateModuleRequest",
            "package" : "io.nominal.module"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Module",
          "package" : "io.nominal.module"
        }
      },
      "docs" : "Update an existing module.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetModules",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/module/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetModulesRequest",
            "package" : "io.nominal.module"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Module",
              "package" : "io.nominal.module"
            }
          }
        }
      },
      "docs" : "Get a list of modules by their RIDs and version specifiers if provided.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchModules",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/module/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchModulesRequest",
            "package" : "io.nominal.module"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchModulesResponse",
          "package" : "io.nominal.module"
        }
      },
      "docs" : "Search for modules.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchArchiveModules",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/module/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchArchiveModulesRequest",
            "package" : "io.nominal.module"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchArchiveModulesResponse",
          "package" : "io.nominal.module"
        }
      },
      "docs" : "Archive a set of modules.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchUnarchiveModules",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/module/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchUnarchiveModulesRequest",
            "package" : "io.nominal.module"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchUnarchiveModulesResponse",
          "package" : "io.nominal.module"
        }
      },
      "docs" : "Unarchive a set of modules.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Modules define collections of compute logic that can be shared and used across different contexts.\nThe Modules Service provides the API for managing these collections of functions.\n"
  }, {
    "serviceName" : {
      "name" : "InternalModuleService",
      "package" : "io.nominal.module.internal"
    },
    "endpoints" : [ {
      "endpointName" : "batchGetUnresolvedModuleDefinition",
      "httpMethod" : "POST",
      "httpPath" : "/internal/scout/v2/module/unresolved-module/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetUnresolvedModuleDefinitionsRequest",
            "package" : "io.nominal.module.internal"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetUnresolvedModuleDefinitionsResponse",
          "package" : "io.nominal.module.internal"
        }
      },
      "docs" : "Returns the module definition for the given module reference.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "This service provides internal APIs related to modules.\n"
  }, {
    "serviceName" : {
      "name" : "PersistentComputeService",
      "package" : "io.nominal.persistent.compute.api"
    },
    "endpoints" : [ {
      "endpointName" : "isEnabled",
      "httpMethod" : "GET",
      "httpPath" : "/persistent-compute/enabled",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IsEnabledResponse",
          "package" : "io.nominal.persistent.compute.api"
        }
      },
      "docs" : "Simple \"ping\" like endpoint to see if the service is enabled (and available).",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Exposes a simple endpoints for checking whether or not persistent compute is enabled.\n"
  }, {
    "serviceName" : {
      "name" : "InternalVersioningService",
      "package" : "io.nominal.scout"
    },
    "endpoints" : [ {
      "endpointName" : "initResourceVersioning",
      "httpMethod" : "POST",
      "httpPath" : "/internal/scout/v1/versioning/{resourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InitResourceVersioningRequest",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BranchAndCommit",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Creates a root commit (no parents) and a \"main\" branch \npointing to that commit, for the given resource.\nThrows if the resource already has a commit graph.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "saveWorkingState",
      "httpMethod" : "POST",
      "httpPath" : "/internal/scout/v1/versioning/{resourceRid}/branch/{branchName}/working-state",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SaveWorkingStateRequest",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BranchAndCommit",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Creates a non-permanent commit on the given branch,\nThrows if the branch doesn't exist.\nThrows if latestCommit is passed and is not the latest commit.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "commit",
      "httpMethod" : "POST",
      "httpPath" : "/internal/scout/v1/versioning/{resourceRid}/branch/{branchName}/commit",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitRequest",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BranchAndCommit",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Creates a new permanent commit on the given branch.\nThrows if the branch doesn't exist.\nThrows if latestCommit is passed and is not the latest commit.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "compactCommits",
      "httpMethod" : "POST",
      "httpPath" : "/internal/scout/v1/versioning/{resourceRid}/compact-commits",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CompactCommitsRequest",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CommitId",
              "package" : "io.nominal.scout.versioning.api"
            }
          }
        }
      },
      "docs" : "Compacts the commit graph for the resource by deleting\nworking state commits that match the provided strategy.\nPersists commits that are pointed to by branches.\nReturns the set of commits that were compacted.\nThrows if the resource doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "These endpoints are not intended to be used directly by clients, since\nthey require saving resource-specific state associated with new commits.\n"
  }, {
    "serviceName" : {
      "name" : "NotebookService",
      "package" : "io.nominal.scout"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/notebook",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateNotebookRequest",
            "package" : "io.nominal.scout.notebook.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Notebook",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "docs" : "Creates a new workbook. The workbook will be associated with the provided run. If the run does not exist, \na RunNotFound error will be thrown.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "update",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/notebook/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateNotebookRequest",
            "package" : "io.nominal.scout.notebook.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Notebook",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "docs" : "Updates the contents of a workbook.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/notebook/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The unique RID of the workbook to retrieve.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "snapshot",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SnapshotRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "snapshot"
          }
        },
        "docs" : "Optional snapshot RID to retrieve a specific historical snapshot of the workbook.",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Notebook",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGet",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/notebook/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Notebook",
              "package" : "io.nominal.scout.notebook.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/notebook/batch-get-metadata",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NotebookMetadataWithRid",
              "package" : "io.nominal.scout.notebook.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMetadata",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/notebook/{rid}/update-metadata",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateNotebookMetadataRequest",
            "package" : "io.nominal.scout.notebook.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "NotebookMetadata",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "docs" : "Updates metadata about a workbook, but not its contents.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getUsedRefNames",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/notebook/{rid}/ref-names",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRefName",
              "package" : "io.nominal.scout.api"
            }
          }
        }
      },
      "docs" : "Returns the set of all ref names used by the workbook.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateRefNames",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/notebook/{rid}/update-ref-names",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateRefNameRequest",
            "package" : "io.nominal.scout.notebook.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Notebook",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "docs" : "Updates the data source ref names for all variables used in the workbook.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAllLabelsAndProperties",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/notebook/get-all-labels-properties",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only the labels and properties for workbooks within the supplied workspaces. If empty\nwill return all labels and properties for workbooks within workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAllLabelsAndPropertiesResponse",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "docs" : "Returns all properties (key value pairs) and labels that have been previously used on workbook. These can\nbe used to organize workbooks.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "search",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/notebook/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchNotebooksRequest",
            "package" : "io.nominal.scout.notebook.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchNotebooksResponse",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "lock",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/notebook/{rid}/lock",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Makes a workbook uneditable.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unlock",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/notebook/{rid}/unlock",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unlocks a workbook for editing.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archive",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/notebook/{rid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives a workbook, which excludes it from search and hides it from being publicly visible, but does not\npermanently delete it. Archived workbooks can be unarchived.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchive",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/notebook/{rid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Makes a previously archived workbook searchable.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "delete",
      "httpMethod" : "DELETE",
      "httpPath" : "/scout/v2/notebook/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NotebookRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "The workbook will be deleted and is not recoverable. For soft deletion, use archive.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getSnapshotHistory",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/notebook/snapshot-history",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetSnapshotHistoryRequest",
            "package" : "io.nominal.scout.notebook.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetSnapshotHistoryResponse",
          "package" : "io.nominal.scout.notebook.api"
        }
      },
      "docs" : "Retrieves the snapshot history for a given workbook. These are sorted in reverse chronological order. Results\nare limited by page size.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "NotebookService manages workbooks (formerly known as notebooks).\n"
  }, {
    "serviceName" : {
      "name" : "RunService",
      "package" : "io.nominal.scout"
    },
    "endpoints" : [ {
      "endpointName" : "createRun",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateRunRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Run",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Create a new run in Nominal.\n\nThrows if start is equal to or after end.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateRun",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v1/run/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateRunRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Run",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Updates an existing run based on its RID.\n\nThrows if start is equal to or after end.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "addDataSourcesToRun",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run/{runRid}/data-sources",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "runRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CreateRunDataSource",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Run",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Adds datasources to the run in question.\n\nThrows if any of the ref names conflict with existing data sources or each other.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createOrUpdateRun",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run/create-or-update",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateOrUpdateRunRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Run",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Updates a run if it exists, otherwise it's created from scratch.\nWill throw if the workspace of an existing run is different from the workspace of the request.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getRun",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/run/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Run",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Fetches details about the run in question based on its RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getRunWithDataReviewMetrics",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/run/{rid}/with-data-review-metrics",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "RunWithDataReviewMetrics",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Fetches details about the run in question based on its RID, \nincluding metrics for check and violation review status.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getRunWithDataReviewSummary",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/run/{rid}/with-data-review-summary",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "RunWithDataReviewSummary",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Fetches details about the run in question based on its RID, including a summary of the data review status.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getRunById",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run/by-id",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "getRunByIdRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetRunByIdRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Run",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Fetches a run based on the run number, rather than RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getRuns",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run/multiple",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "RunRid",
                "package" : "io.nominal.scout.run.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "RunRid",
              "package" : "io.nominal.scout.run.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Run",
              "package" : "io.nominal.scout.run.api"
            }
          }
        }
      },
      "docs" : "Fetches a list of run details based on a list of RIDs.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getRunsByAsset",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run/by-asset",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetRunsByAssetRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetRunsByAssetResponse",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Fetches the runs with the given asset.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getLatestRunForAssets",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run/by-assets/latest",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AssetRid",
              "package" : "io.nominal.scout.rids.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Run",
              "package" : "io.nominal.scout.run.api"
            }
          }
        }
      },
      "docs" : "Fetches the latest run for each requested asset.\nAssets without associated runs will not be included in response.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAllRunsPropertiesAndLabels",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/all-runs-properties-labels",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only the properties and labels that are associated with the supplied workspaces. If empty\nwill return all properties and labels for workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "AllRunsPropertiesAndLabelsResponse",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "deprecated" : "Deprecated in favor of MetadataService#listPropertiesAndLabels",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchRuns",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/search-runs",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchRunsRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchRunsResponse",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Searches for runs that match the given filters. Defaults to returning un-archived runs, absent an archive\nfilter.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchRunsWithDataReviewMetrics",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/search-runs-with-data-review-metrics",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchRunsRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchRunsWithDataReviewMetricsResponse",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Searches for runs that match the given filters and \nincludes metrics for check and violation review status. Defaults to returning un-archived runs, absent an \narchive filter.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchRunsWithDataReviewSummary",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/search-runs-with-data-review-summary",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchRunsRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchRunsWithDataReviewSummaryResponse",
          "package" : "io.nominal.scout.run.api"
        }
      },
      "docs" : "Searches for runs that match the given filters and includes a summary of the data review status. Defaults to \nreturning un-archived runs, absent an archive filter.\n",
      "deprecated" : "Deprecated in favor of searchRunsWithDataReviewMetrics",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveRun",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v1/archive-run/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "includeLinkedWorkbooks",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "includeLinkedWorkbooks"
          }
        },
        "docs" : "If true, all workbooks that are linked to the run will be archived as well.\nDefaults to false.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BOOLEAN"
      },
      "docs" : "Soft-deletes a run. Runs still exist in the database but are no longer visible.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveRun",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v1/unarchive-run/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "includeLinkedWorkbooks",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "includeLinkedWorkbooks"
          }
        },
        "docs" : "If true, all auto-archived workbooks that are linked to run will be unarchived as well.\nDefaults to false.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BOOLEAN"
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveRuns",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/archive-run",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArchiveRunsRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveRuns",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/unarchive-run",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnarchiveRunsRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDataSourceRefNameAndTypeList",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/data-source-ref-names-and-types",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If not empty, will return only the ref names that are associated with the supplied workspaces.\nIf empty will return all ref names for workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "RefNameAndType",
              "package" : "io.nominal.scout.run.api"
            }
          }
        }
      },
      "docs" : "Returns the list of ref names that are in use across specified and authorized workspaces.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateRunAttachment",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/run/{rid}/attachments",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RunRid",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateAttachmentsRequest",
            "package" : "io.nominal.scout.run.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Updates the attachments associated with a run.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Runs are collections of channels and metadata from one or more data sources, synchronized over a \nrange of real time, which represents a test event or simulation. These API endpoints let you\nmanage runs in the Nominal app.\n"
  }, {
    "serviceName" : {
      "name" : "TemplateService",
      "package" : "io.nominal.scout"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateTemplateRequest",
            "package" : "io.nominal.scout.template.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Template",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "docs" : "Creates a new template.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/template/{templateRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "commit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "commit"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Template",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "docs" : "Must only pass one of (branch, commit). If neither are passed,\nthe latest commit on the \"main\" branch is returned.\nThrows if the template, branch, or commit doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template/batch-get-metadata",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TemplateRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "TemplateSummary",
              "package" : "io.nominal.scout.template.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "saveWorkingState",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template/{templateRid}/save-working-state",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "docs" : "Name of the branch to save to. Defaults to \"main\" if not specified.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SaveTemplateRequest",
            "package" : "io.nominal.scout.template.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Template",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "docs" : "Creates a commit that may be compacted, e.g cleaned up and not exist anymore.\nThrows if the template or branch doesn't exist.\nThrows if the latest commit doesn't match the provided id.\nThrows if you save to an archived template.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getUsedRefNames",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/template/{templateRid}/ref-names",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "commit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "commit"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DataSourceRefName",
              "package" : "io.nominal.scout.api"
            }
          }
        }
      },
      "docs" : "Returns the set of all ref names used by the template.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateRefNames",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template/{templateRid}/update-ref-names",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "docs" : "Name of the branch to save to. Defaults to \"main\" if not specified.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateRefNameRequest",
            "package" : "io.nominal.scout.template.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Template",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "docs" : "Updates the data source ref names for all variables used in the template.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "commit",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template/{templateRid}/commit",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "docs" : "Name of the branch to commit to. Defaults to \"main\" if not specified.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitTemplateRequest",
            "package" : "io.nominal.scout.template.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Template",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "docs" : "Creates a commit with a commit message. \nThrows if the template or branch doesn't exist.\nThrows if the latest commit doesn't match the provided id.\nThrows if you commit to an archived template.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template/{templateRid}/metadata",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateMetadataRequest",
            "package" : "io.nominal.scout.template.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "TemplateMetadata",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "docs" : "Throws if the template doesn't exist.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchTemplates",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchTemplatesRequest",
            "package" : "io.nominal.scout.template.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchTemplatesResponse",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAllLabelsAndProperties",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/template/get-all-labels-properties",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only the labels and properties for templates within the supplied workspaces. If empty\nwill return all labels and properties for templates within workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAllLabelsAndPropertiesResponse",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "mergeToMain",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/template/{templateRid}/merge-to-main",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "templateRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TemplateRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MergeToMainRequest",
            "package" : "io.nominal.scout.template.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Template",
          "package" : "io.nominal.scout.template.api"
        }
      },
      "docs" : "Merges the given branch to the \"main\" branch.\nThrows if the template or branch doesn't exist.\nThrows if the latest commit doesn't match the provided id.\nThrows if you merge on an archived template.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "TemplateService manages templates, which are workbooks that\ncan be re-used across runs. Templates are versioned.\n"
  }, {
    "serviceName" : {
      "name" : "UnitsService",
      "package" : "io.nominal.scout"
    },
    "endpoints" : [ {
      "endpointName" : "getAllUnits",
      "httpMethod" : "GET",
      "httpPath" : "/units/v1/units",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetUnitsResponse",
          "package" : "io.nominal.scout.units.api"
        }
      },
      "docs" : "Returns all known units, grouped by the physical property they measure.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getUnit",
      "httpMethod" : "POST",
      "httpPath" : "/units/v1/units/get-unit",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "unit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSymbol",
            "package" : "io.nominal.scout.units.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Unit",
              "package" : "io.nominal.scout.units.api"
            }
          }
        }
      },
      "docs" : "Returns information for a unit symbol if available. Returns as empty if the provided symbol cannot be parsed.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getBatchUnits",
      "httpMethod" : "POST",
      "httpPath" : "/units/v1/units/get-batch-units",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "units",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "UnitSymbol",
                "package" : "io.nominal.scout.units.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "UnitSymbol",
              "package" : "io.nominal.scout.units.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Unit",
              "package" : "io.nominal.scout.units.api"
            }
          }
        }
      },
      "docs" : "Returns information for the unit symbols if available. If the provided symbol cannot be parsed, it will be \nomitted from the map.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCommensurableUnits",
      "httpMethod" : "POST",
      "httpPath" : "/units/v1/units/commensurable-units",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "unit",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnitSymbol",
            "package" : "io.nominal.scout.units.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Unit",
              "package" : "io.nominal.scout.units.api"
            }
          }
        }
      },
      "docs" : "Returns the set of cataloged units that can be converted to and from the given unit.\nNo commensurable units does not imply the unit is invalid. Use /get-unit to check for validity.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Units Service serves as a comprehensive catalog of the units of measurement supported by scout. Units, by \ndefault, follow the UCUM convention for representation.\n"
  }, {
    "serviceName" : {
      "name" : "VersioningService",
      "package" : "io.nominal.scout"
    },
    "endpoints" : [ {
      "endpointName" : "createBranch",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/branch",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateBranchRequest",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Branch",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Creates a mutable pointer to the provided commit.\n\"Saves\"/\"commits\" can be performed on this pointer.\nThrows if the name is already used as a commit\npointer for this resource.\nThrows if the provided commit doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createTag",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/tag",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateTagRequest",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Tag",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Creates an immutable pointer to the provided commit.\nThrows if the name is already used as a commit\npointer for this resource.\nThrows if the provided commit doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCommit",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/commit/{commitId}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "commitId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Commit",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Throws if the commit doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetCommits",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/commit/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceAndCommitIds",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResourceAndCommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Commit",
              "package" : "io.nominal.scout.versioning.api"
            }
          }
        }
      },
      "docs" : "Filters out resources that are not authorized.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCommitByBranch",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/branch/{branchName}/commit",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Commit",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Returns the commit pointed to by the branch.\nThrows if the branch doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCommitByTag",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/tag/{tagName}/commit",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "tagName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Commit",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Returns the commit pointed to by the tag.\nThrows if the tag doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getLeastCommonAncestor",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/commit/least-common-ancestor",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetLeastCommonAncestorRequest",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CommitId",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Returns the least common ancestor of the two commits.\nThrows if either commit doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCommitHistory",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/commit/{commitId}/history",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "commitId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitId",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "pageSize",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "INTEGER"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "pageSize"
          }
        },
        "docs" : "Defaults to 100, throws if larger than 1000.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "nextPageToken"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CommitHistory",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Returns the commit history sorted by creation time descending.\nExcludes working state commits.\nThrows if the commit doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "persistCommits",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/commit/persist",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResourceAndCommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Persists the commits so that they are not compacted.\nThis operation is atomic - either all commits are persisted\nor none are (in the case of an error).\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getBranch",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/branch/{branchName}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Branch",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Throws if the branch doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getBranches",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/branch",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Branch",
              "package" : "io.nominal.scout.versioning.api"
            }
          }
        }
      },
      "docs" : "Returns all branches for the resource in order of\nmost recently updated.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetBranches",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/branch/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceAndBranches",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResourceAndBranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Branch",
              "package" : "io.nominal.scout.versioning.api"
            }
          }
        }
      },
      "docs" : "Omits branches that are not authorized.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getTag",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/tag/{tagName}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "tagName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Tag",
          "package" : "io.nominal.scout.versioning.api"
        }
      },
      "docs" : "Throws if the tag doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetTags",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/tag/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceAndCommits",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResourceAndCommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Tag",
              "package" : "io.nominal.scout.versioning.api"
            }
          }
        }
      },
      "docs" : "Omits tags that are not authorized.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getTagsByResource",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/tag",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Tag",
              "package" : "io.nominal.scout.versioning.api"
            }
          }
        }
      },
      "docs" : "Returns all tags for the resource in order of\nmost recently created.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteBranch",
      "httpMethod" : "DELETE",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/branch/{branchName}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branchName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BranchName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Deletes the branch pointer.\nThrows if the branch doesn't exist.\nThrows if you attempt to delete the \"main\" branch.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteBranches",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/versioning/branch/batch-delete",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceAndBranches",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResourceAndBranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Deletes the branch pointers.\nThrows if any resource or branch is non-existent\nor unauthorized.\nThrows if any attempt is made to delete \"main\".\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteTag",
      "httpMethod" : "DELETE",
      "httpPath" : "/scout/v1/versioning/{resourceRid}/tag/{tagName}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "resourceRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "tagName",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TagName",
            "package" : "io.nominal.scout.versioning.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Deletes the tag pointer.\nThrows if the tag doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "This is the external-facing portion of VersioningService which\ngives clients access to functionality that doesn't create new\ncommits. The creation of new commits should be done via the\nresource-specific services.\n"
  }, {
    "serviceName" : {
      "name" : "AssetService",
      "package" : "io.nominal.scout.assets"
    },
    "endpoints" : [ {
      "endpointName" : "createAsset",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/asset",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateAssetRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Asset",
          "package" : "io.nominal.scout.asset.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateAsset",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v1/asset/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateAssetRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Asset",
          "package" : "io.nominal.scout.asset.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "addDataScopesToAsset",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/asset/{assetRid}/data-sources",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "assetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AddDataScopesToAssetRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Asset",
          "package" : "io.nominal.scout.asset.api"
        }
      },
      "docs" : "Adds data scopes to an asset.\n\nThrows if the asset already has data scopes with data scope names matching those in the request.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAssets",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/asset/multiple",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "AssetRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "AssetRid",
              "package" : "io.nominal.scout.rids.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Asset",
              "package" : "io.nominal.scout.asset.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAssetsByDataSource",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/asset/by-data-source/{dataSourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Asset",
              "package" : "io.nominal.scout.asset.api"
            }
          }
        }
      },
      "docs" : "Returns all assets with given data source as a data scope.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archive",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/archive/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "includeLinkedWorkbooks",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "includeLinkedWorkbooks"
          }
        },
        "docs" : "If true, all workbooks that are linked to the asset and associated runs will be archived as well.\nDefaults to false.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchive",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/unarchive/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "includeLinkedWorkbooks",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "includeLinkedWorkbooks"
          }
        },
        "docs" : "If true, all auto-archived workbooks that are linked to the asset and associated runs will be\nunarchived as well. Defaults to false.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchAssets",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/search-assets",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "searchAssetsRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchAssetsRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchAssetsResponse",
          "package" : "io.nominal.scout.asset.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchTypes",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/search-types",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "searchTypesRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchTypesRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchTypesResponse",
          "package" : "io.nominal.scout.asset.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateAssetAttachments",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/asset/{rid}/attachments",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateAttachmentsRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Update the attachments associated with an asset.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateAssetRefNames",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/asset/{rid}/ref-names",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AssetRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateAssetRefNamesRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Update the ref names for the data scopes on the asset. This update will also be applied on all associated \nworkbooks.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createType",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/type",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateTypeRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Type",
          "package" : "io.nominal.scout.asset.api"
        }
      },
      "docs" : "Creates a new type.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateType",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v1/type/{typeRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "typeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateTypeRequest",
            "package" : "io.nominal.scout.asset.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Type",
          "package" : "io.nominal.scout.asset.api"
        }
      },
      "docs" : "Updates a type. Will throw unless all assets that reference the type pass the updated type check.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getTypes",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/type/multiple",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TypeRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "TypeRid",
              "package" : "io.nominal.scout.rids.api"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Type",
              "package" : "io.nominal.scout.asset.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getTypesForDatasource",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/type/datasource",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Type",
              "package" : "io.nominal.scout.asset.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteType",
      "httpMethod" : "DELETE",
      "httpPath" : "/scout/v1/type/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Deletes a type. The type must not be referenced by any assets.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveType",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/type/archive/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveType",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/type/unarchive/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "TypeRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "An asset is a physical entity within an organization, such as a vehicle or ground station. Assets are comprised\nof some metadata about the data, as well as a set of data scopes that define the data belonging to the asset. API\nendpoints allow for CRUD operations on asset objects.\n"
  }, {
    "serviceName" : {
      "name" : "CatalogService",
      "package" : "io.nominal.scout.catalog"
    },
    "endpoints" : [ {
      "endpointName" : "getEnrichedDataset",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets/{datasetUuid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "EnrichedDataset",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getEnrichedDatasets",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/datasets/multiple",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "getDatasetsRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetDatasetsRequest",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "EnrichedDataset",
              "package" : "io.nominal.scout.catalog"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDataset",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets-simple/{datasetUuid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Dataset",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDatasets",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/datasets-simple/multiple",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "getDatasetsRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetDatasetsRequest",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Dataset",
              "package" : "io.nominal.scout.catalog"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDatasetFile",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/dataset/{datasetRid}/file/{fileId}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "fileId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileId",
            "package" : "io.nominal.datasource"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFile",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDatasetFilesForJob",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/ingest-job/{ingestJobRid}/files",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "ingestJobRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "nextPageToken"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFilesPage",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchDatasets",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/search-datasets-v2",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchDatasetsRequest",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchDatasetsResponse",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateDatasetIngestStatusV2",
      "httpMethod" : "PUT",
      "httpPath" : "/catalog/v1/datasets/ingest-status-v2",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateIngestStatusV2",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestStatusV2",
          "package" : "io.nominal.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getIngestProgressV2",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/ingest-progress-v2",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "IngestProgressV2",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "deprecated" : "Deprecated in favor of getDatasetFile.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getHandleForDataset",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets/{dataset}/handle",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataset",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Handle",
              "package" : "io.nominal.scout.catalog"
            }
          }
        }
      },
      "deprecated" : "Returned in Dataset",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createDataset",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/datasets",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateDataset",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "EnrichedDataset",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createOrUpdateDataset",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/datasets/create-or-update",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "details",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateDataset",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "EnrichedDataset",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "docs" : "Creates a dataset if the s3 path does not exist, otherwise updates the dataset",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "addFileToDataset",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/add-file",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AddFileToDataset",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFile",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "docs" : "Adds a single file to an existing dataset.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listDatasetFiles",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/files",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "nextPageToken",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Token",
                "package" : "io.nominal.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "nextPageToken"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFilesPage",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchDatasetFiles",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/search-dataset-files",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchDatasetFilesRequest",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchDatasetFilesResponse",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDatasetFileUri",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/{fileId}/uri",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "fileId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileId",
            "package" : "io.nominal.datasource"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFileUri",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getOriginFileUris",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/{fileId}/origin-uris",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "fileId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileId",
            "package" : "io.nominal.datasource"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "OriginFileUri",
              "package" : "io.nominal.scout.catalog"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "markFileIngestSuccessful",
      "httpMethod" : "PUT",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/file/{fileId}/success",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "fileId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileId",
            "package" : "io.nominal.datasource"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MarkFileIngestSuccessful",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFile",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "markFileIngestError",
      "httpMethod" : "PUT",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/file/{fileId}/error",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "fileId",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DatasetFileId",
            "package" : "io.nominal.datasource"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MarkFileIngestError",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DatasetFile",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateDatasetMetadata",
      "httpMethod" : "PUT",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateDatasetMetadata",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "EnrichedDataset",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateBounds",
      "httpMethod" : "PUT",
      "httpPath" : "/catalog/v1/datasets/{rid}/bounds",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateBoundsRequest",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "EnrichedDataset",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateGlobalDatasetBounds",
      "httpMethod" : "PUT",
      "httpPath" : "/catalog/v1/datasets/{rid}/bounds-from-streaming",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateBoundsRequest",
            "package" : "io.nominal.scout.catalog"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Dataset",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "docs" : "Update the bounds for a dataset without updating bounds of files within the dataset. If the\ncurrent bounds of the dataset are not set, then the bounds of the request will be used. Otherwise,\nthe bounds will be min(current start, request start), max(current end, request end).\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveDataset",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives a dataset, which will hide it from search results unless the includeArchived flag is set to true. The\ndataset can still be directly accessed by its UUID/rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveDataset",
      "httpMethod" : "POST",
      "httpPath" : "/catalog/v1/datasets/{datasetRid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "datasetRid",
        "type" : {
          "type" : "primitive",
          "primitive" : "RID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Undoes the archiving of a dataset.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAllPropertiesAndLabels",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/datasets/all-properties-labels",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only the properties and labels that are associated with the supplied workspaces. If empty\nwill return all properties and labels for workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "AllPropertiesAndLabelsResponse",
          "package" : "io.nominal.scout.catalog"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getLogDatasetForWorkspace",
      "httpMethod" : "GET",
      "httpPath" : "/catalog/v1/workspaces/{workspaceRid}/log-dataset",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DatasetRid",
              "package" : "io.nominal.api.rids"
            }
          }
        }
      },
      "docs" : "Returns the log dataset RID for the specified workspace if configured and accessible to the caller.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Catalog Service provides the ability to query for information about Datasets that are stored in\nthe Nominal platform. A Dataset is the Nominal representation of data that has been uploaded to Nominal via\na file, primarily CSV.\n"
  }, {
    "serviceName" : {
      "name" : "ChecklistExecutionService",
      "package" : "io.nominal.scout.checklistexecution.api"
    },
    "endpoints" : [ {
      "endpointName" : "checklistLiveStatus",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/checklist-live-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchChecklistLiveStatusRequest",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchChecklistLiveStatusResponse",
          "package" : "io.nominal.scout.checklistexecution.api"
        }
      },
      "docs" : "For each request, get the latest status for each check in a streaming checklist against the given asset.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "executeStreamingChecklist",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/execute-streaming-checklist",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExecuteChecklistForAssetsRequest",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Triggers a checklist to run continuously against assets.\nIf the checklist is already running for the given asset, replace the existing configuration with the one specified by the request.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listStreamingChecklist",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/list-streaming-checklists",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ListStreamingChecklistRequest",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ListStreamingChecklistResponse",
          "package" : "io.nominal.scout.checklistexecution.api"
        }
      },
      "docs" : "Lists all running streaming checklists.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listStreamingChecklistForAsset",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/list-streaming-checklists-for-asset",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ListStreamingChecklistForAssetRequest",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ListStreamingChecklistForAssetResponse",
          "package" : "io.nominal.scout.checklistexecution.api"
        }
      },
      "docs" : "Retrieves all streaming checklists for a given asset.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getStreamingChecklist",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/checklist-execution/get-streaming-checklist/{checklistRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "StreamingChecklistInfo",
          "package" : "io.nominal.scout.checklistexecution.api"
        }
      },
      "docs" : "Retrieves the set of assets and their execution configurations for a streaming checklist specified by the checklistRid.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetStreamingChecklist",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/get-streaming-checklists",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetStreamingChecklistRequest",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetStreamingChecklistResponse",
          "package" : "io.nominal.scout.checklistexecution.api"
        }
      },
      "docs" : "Retrieves the set of assets and their execution configurations for all streaming checklists specified by the request.\nIf a streaming checklist is not found, it will not be included in the response.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "stopStreamingChecklist",
      "httpMethod" : "DELETE",
      "httpPath" : "/scout/v2/checklist-execution/stop-streaming-checklist/{checklistRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Stops the execution of a streaming checklist on all assets.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "stopStreamingChecklistForAssets",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/stop-streaming-checklist-for-assets",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "StopStreamingChecklistForAssetsRequest",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Stops the execution of a streaming checklist for a given set of assets.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "reloadStreamingChecklist",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/reload-streaming-checklist/{checklistRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Reloads the state of the streaming checklist for the given checklistRid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "validateChecklistResolution",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/checklist-execution/validate-checklist-resolution",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchValidateChecklistResolutionRequest",
            "package" : "io.nominal.scout.checklistexecution.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchValidateChecklistResolutionResponse",
          "package" : "io.nominal.scout.checklistexecution.api"
        }
      },
      "docs" : "Validates that the channels referenced by the checklist can be resolved against the data sources.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Checklist Execution Service checks the status of checklist executions.\n"
  }, {
    "serviceName" : {
      "name" : "ChecklistService",
      "package" : "io.nominal.scout.checks.api"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateChecklistRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VersionedChecklist",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Creates a new checklist with the provided checks.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "commit",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/{checklistRid}/commit",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "docs" : "Name of the branch to save to. Defaults to \"main\" if not specified.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CommitChecklistRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VersionedChecklist",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Creates a permanent commit with a commit message. \nThrows if the checklist or branch doesn't exist.\nThrows if the latest commit doesn't match the provided id.\nThrows if you commit to an archived checklist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "saveWorkingState",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/{checklistRid}/save-working-state",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "docs" : "Name of the branch to save to. Defaults to \"main\" if not specified.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SaveChecklistRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VersionedChecklist",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Creates a commit that may be compacted, e.g cleaned up and not exist anymore.\nThrows if the checklist or branch doesn't exist.\nThrows if the latest commit doesn't match the provided id.\nThrows if you save to an archived checklist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "mergeToMain",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/{checklistRid}/merge-to-main",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "MergeToMainRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VersionedChecklist",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Merges the given branch to the \"main\" branch.\nThrows if the checklist or branch doesn't exist.\nThrows if the latest commit doesn't match the provided id.\nThrows if you merge with an archived checklist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateDataSourceRefNames",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/{checklistRid}/update-ref-names",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "docs" : "Name of the branch to save to. Defaults to \"main\" if not specified.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "refNameUpdates",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            },
            "valueType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataSourceRefName",
                "package" : "io.nominal.scout.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VersionedChecklist",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Updates the data source ref names for all checks within a checklist.\nThrows if the checklist doesn't exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMetadata",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v1/checklists/{rid}/update-metadata",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateChecklistMetadataRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChecklistMetadata",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Updates the metadata of a checklist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/checklists/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChecklistRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "branch",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "BranchName",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "branch"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "commit",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CommitId",
                "package" : "io.nominal.scout.versioning.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "commit"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VersionedChecklist",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Specify at most one of (branch, commit).\nIf neither is specified, branch = \"main\" is the default.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGet",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checklistRefs",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "PinnedChecklistRef",
                "package" : "io.nominal.scout.checks.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VersionedChecklist",
              "package" : "io.nominal.scout.checks.api"
            }
          }
        }
      },
      "docs" : "Returns the pinned commit for each provided checklist reference.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/batch-get-metadata",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetChecklistMetadataRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetChecklistMetadataResponse",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Returns the metadata for each provided checklist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "search",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchChecklistsRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VersionedChecklistPage",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Results will be the latest commit on main for each checklist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archive",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ArchiveChecklistsRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives the provided checklists.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchive",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UnarchiveChecklistsRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unarchives the provided checklists.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCheck",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/checklists/check/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Check",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Returns the check with the given rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetChecks",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/checklists/check/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "CheckRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Check",
              "package" : "io.nominal.scout.checks.api"
            }
          }
        }
      },
      "docs" : "Returns the checks with the given rids.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAllLabelsAndProperties",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v1/checklists/get-all-labels-properties",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only the properties and labels that are associated with checklists in the supplied workspaces.\nIf empty, will return all properties and labels for checklists in workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAllLabelsAndPropertiesResponse",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Returns all labels and properties.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Checklist Service is responsible for managing checklists and checks.\nA checklist is a collection of checks that can be executed against a set of data sources.\n"
  }, {
    "serviceName" : {
      "name" : "ComputeService",
      "package" : "io.nominal.scout.compute.api"
    },
    "endpoints" : [ {
      "endpointName" : "compute",
      "httpMethod" : "POST",
      "httpPath" : "/compute/v2/compute",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeNodeRequest",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ComputeNodeResponse",
          "package" : "io.nominal.scout.compute.api"
        }
      },
      "docs" : "Computes the output of the compute graph specified by a ComputeNodeRequest.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "parameterizedCompute",
      "httpMethod" : "POST",
      "httpPath" : "/compute/v2/compute/parameterized",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ParameterizedComputeNodeRequest",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ParameterizedComputeNodeResponse",
          "package" : "io.nominal.scout.compute.api"
        }
      },
      "docs" : "Computes the output of the compute graph specified by a ParameterizedComputeNodeRequest. A parameterized \ncompute request supports multiple values for a single variable, supplied by the ParameterizedContext.\nResults are returned in the same order of the request.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "computeUnits",
      "httpMethod" : "POST",
      "httpPath" : "/compute/v2/compute/units",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeUnitsRequest",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ComputeUnitResult",
          "package" : "io.nominal.scout.compute.api"
        }
      },
      "docs" : "Returns the resulting unit for the output of a compute graph. If the resulting unit is equivalent to exactly\none existing unit in the system, it will be returned (for example, a series in Coulombs divided by a series\nin Volts will return an output of Farads). If the output does not have units (for example, a range output,)\nthe unit result will return noUnitAvailable, and if the computation was not successful, corresponding errors\nare returned.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchComputeWithUnits",
      "httpMethod" : "POST",
      "httpPath" : "/compute/v2/compute/batch",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchComputeWithUnitsRequest",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchComputeWithUnitsResponse",
          "package" : "io.nominal.scout.compute.api"
        }
      },
      "docs" : "Computes the output of compute graphs specified by BatchComputeNodeRequest. Results are returned in the same\norder as the request.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchComputeUnits",
      "httpMethod" : "POST",
      "httpPath" : "/compute/v2/compute/batch-units",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchComputeUnitsRequest",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchComputeUnitResult",
          "package" : "io.nominal.scout.compute.api"
        }
      },
      "docs" : "Same as computeUnits, however this endpoint functions on a batch of requests for wire efficiency purposes. An\nextra note is that this method will serialize underlying conjure errors into the BatchComputeUnitResult type,\nmeaning callers are required to check for errors explicitly (rather than relying on exceptions being thrown).\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "computeWithUnits",
      "httpMethod" : "POST",
      "httpPath" : "/compute/v2/computeWithUnits",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ComputeWithUnitsRequest",
            "package" : "io.nominal.scout.compute.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ComputeWithUnitsResponse",
          "package" : "io.nominal.scout.compute.api"
        }
      },
      "docs" : "Computes the output of the compute graph specified by a ComputeNodeRequest, as well as providing the resulting \nunit for the output of a compute graph. If the resulting unit is equivalent to exactly one existing unit in the \nsystem, it will be returned (for example, a series in Coulombs divided by a series in Volts will return an \noutput of Farads). If the output does not have units (for example, a range output,) the unit result will return \nnoUnitAvailable, and if the computation was not successful, corresponding errors are returned.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Compute Service provides the ability to compute the output of compute graphs.\n"
  }, {
    "serviceName" : {
      "name" : "DataExportService",
      "package" : "io.nominal.scout.dataexport.api"
    },
    "endpoints" : [ {
      "endpointName" : "exportChannelData",
      "httpMethod" : "POST",
      "httpPath" : "/export/v1/export",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ExportDataRequest",
            "package" : "io.nominal.scout.dataexport.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BINARY"
      },
      "docs" : "Required permissions matches those required to compute the channels via the compute API.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Provides functionality for exporting data from Scout.\n"
  }, {
    "serviceName" : {
      "name" : "DataReviewService",
      "package" : "io.nominal.scout.datareview.api"
    },
    "endpoints" : [ {
      "endpointName" : "batchInitiate",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/batch-initiate",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchInitiateDataReviewRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchInitiateDataReviewResponse",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "For each request, initiates data review for the requested run and checklist and executes \nthe automatic checks against the run.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "rerunFailedAutomaticChecks",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/rerun-failed-automatic-checks",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "RerunFailedAutomaticChecksRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Re-executes the most recent failed automatic checks for the data review.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "findDataReviews",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "FindDataReviewsRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataReviewPage",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Returns the data reviews under the provided search parameters.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/data-review/{dataReviewRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DataReview",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Throws if not found.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCheckAlert",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/data-review/check-alerts/{checkAlertRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checkAlertRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CheckAlert",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Throws if not found.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCheckAlertsForDataReview",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/data-review/{dataReviewRid}/check-alerts",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "CheckAlert",
              "package" : "io.nominal.scout.datareview.api"
            }
          }
        }
      },
      "docs" : "Gets all check alerts from the provided data review.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCheckAlertsHistogram",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/check-alerts/histogram",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertsHistogramRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CheckAlertsHistogramResponse",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Returns a histogram of alerts that occur across the provided runs or assets. At least one run or asset must be specified.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchCheckAlerts",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/check-alerts",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchCheckAlertsRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchCheckAlertsResponse",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Returns the check alerts under the provided search parameters. At least one run or asset must be specified.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCheckAlertActionLog",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/data-review/check-alerts/{checkAlertRid}/action-log",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checkAlertRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CheckAlertActionLog",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Returns a record of the historical actions taken on the provided check alert.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCheckAlertCountsForNotebooks",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/get-check-alert-counts-for-notebooks",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NotebookRid",
              "package" : "io.nominal.scout.rids.api"
            }
          },
          "valueType" : {
            "type" : "primitive",
            "primitive" : "INTEGER"
          }
        }
      },
      "docs" : "Returns the number of alerts attached to each provided notebook.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getCheckAlertStatusForNotebooks",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/get-check-alert-status-for-notebooks",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NotebookRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NotebookRid",
              "package" : "io.nominal.scout.rids.api"
            }
          },
          "valueType" : {
            "type" : "optional",
            "optional" : {
              "itemType" : {
                "type" : "reference",
                "reference" : {
                  "name" : "CheckAlertStatus",
                  "package" : "io.nominal.scout.datareview.api"
                }
              }
            }
          }
        }
      },
      "docs" : "Returns the check alert status of any linked violations for the provided notebooks. If none exist, an empty\noptional is returned.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "performCheckAlertAction",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/data-review/check-alerts/{checkAlertRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "checkAlertRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CheckAlertAction",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CheckAlert",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Applies a check alert action to the specified check alert RID.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchPerformCheckAlertAction",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/check-alerts/batch-perform-action",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchCheckAlertActionRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchCheckAlertActionResponse",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Applies a check alert action to the specified check alert RIDs. If any of the check actions fail,\nthen none of the check actions will be applied.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchPerformAutomaticCheckEvaluationReviewAction",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/automatic-check-evaluation/batch-perform-action",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchAutomaticCheckEvaluationActionRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchAutomaticCheckEvaluationActionResponse",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Applies an action to the specified check evaluation RIDs. If any of the check actions fail,\nthen none of the actions will be applied.\n",
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAutomaticCheckEvaluationActionLog",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/data-review/automatic-check-evaluation/{rid}/action-log",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "AutomaticCheckEvaluationRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "AutomaticCheckEvaluationActionLog",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "deprecated" : "CheckAlerts have been replaced by Events.\nPlease use the EventService instead.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchPerformManualCheckAlertAction",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/manual-check-evaluation/batch-perform-action",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchManualCheckEvaluationActionRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Applies an action to the specified check evaluation RIDs. If any of the check actions fail,\nthen none of the actions will be applied.\n",
      "deprecated" : "No longer in use",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getManualCheckEvaluationActionLog",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/data-review/manual-check-evaluation/{rid}/action-log",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ManualCheckEvaluationRid",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ManualCheckEvaluationActionLog",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "docs" : "Returns a record of the historical manual actions taken on the provided check evaluation.\n",
      "deprecated" : "No longer in use",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveDataReview",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/{dataReviewRid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BOOLEAN"
      },
      "docs" : "Archives the data review with the given rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchArchiveDataReview",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/batch-archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "DataReviewRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Batch archives the data reviews with the given rids.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveDataReview",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/unarchive/{dataReviewRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataReviewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataReviewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unarchives the data review with the given rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDataReviewCheckMetrics",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/data-review/data-review-check-metrics",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetDataReviewCheckMetricsRequest",
            "package" : "io.nominal.scout.datareview.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetDataReviewCheckMetricsResponse",
          "package" : "io.nominal.scout.datareview.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The data review service manages the evaluation, disposition, and historical record of checks alerts.\n"
  }, {
    "serviceName" : {
      "name" : "DataSourceService",
      "package" : "io.nominal.scout.datasource"
    },
    "endpoints" : [ {
      "endpointName" : "searchChannels",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/search-channels",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchChannelsRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchChannelsResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Returns channels that match the search criteria. Results are sorted by similarity score.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchFilteredChannels",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/search-filtered-channels",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchFilteredChannelsRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchFilteredChannelsResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Returns channels that match the search criteria. Results are sorted by similarity score.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchHierarchicalChannels",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/search-hierarchical-channels",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "query",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchHierarchicalChannelsRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchHierarchicalChannelsResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Returns only channels that are direct children of the parent. Returns results sorted alphabetically.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "indexChannelPrefixTree",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/index-channel-prefix-tree",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IndexChannelPrefixTreeRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChannelPrefixTree",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Indexes the channel prefix tree for a specified data source. This operation constructs a prefix tree from the \nchannels available in the data source.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetChannelPrefixTrees",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/batch-get-channel-prefix-tree",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetChannelPrefixTreeRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetChannelPrefixTreeResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Returns the channel prefix tree for each of the specified data sources. If the tree for a data source has not\nbeen indexed, it will be omitted from the map.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAvailableTagsForChannel",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/get-available-tags",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetAvailableTagsForChannelRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAvailableTagsForChannelResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Returns the the set of all tag keys and their values that are available for the specified channel given an\ninitial set of filters.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDataScopeBounds",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/get-data-scope-bounds",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetDataScopeBoundsRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetDataScopeBoundsResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Returns the maximum data timestamps for the specified data scopes. Responses are returned\nin the same order as requests.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getTagValuesForDataSource",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/{dataSourceRid}/get-tags",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetTagValuesForDataSourceRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "TagName",
              "package" : "io.nominal.api"
            }
          },
          "valueType" : {
            "type" : "set",
            "set" : {
              "itemType" : {
                "type" : "reference",
                "reference" : {
                  "name" : "TagValue",
                  "package" : "io.nominal.api"
                }
              }
            }
          }
        }
      },
      "docs" : "Returns available tag values for a given data source for a set of tag keys. For Nominal data sources, a time \nrange can be provided to filter tag values to those present within the months spanned by the range. If no\ntime range is provided, this defaults to the last month. For external data sources, the range must not be \nspecified, as all tag values are returned.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAvailableTagKeys",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/{dataSourceRid}/get-tag-keys",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetAvailableTagKeysRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAvailableTagKeysResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Paged endpoint returning the set of all tag keys that are available for the specified channel given an\ninitial set of filters.\nIf any tag filters are supplied, their tag keys are omitted from the result.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getAvailableTagValues",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/v1/data-sources/{dataSourceRid}/get-tag-values",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetAvailableTagValuesRequest",
            "package" : "io.nominal.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetAvailableTagValuesResponse",
          "package" : "io.nominal.datasource.api"
        }
      },
      "docs" : "Paged endpoint returning the set of all tag values that are available for the specified tag and datasource\ngiven an initial set of filters.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Data sources are data input to runs, including databases, CSV, video, and streaming data. They contain channels that represent the series data.\nThe DataSource Service is responsible for indexing and searching channels across data sources.\n"
  }, {
    "serviceName" : {
      "name" : "ConnectionBootstrapperService",
      "package" : "io.nominal.scout.datasource.connection"
    },
    "endpoints" : [ {
      "endpointName" : "populateSeries",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/connection/v1/{rid}/populateSeries",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "PopulateSeriesRequest",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Populates the connection with series, by querying within the requested time range. If start or end are both omitted,\nwill query the last 7 days by default. If one of start or end is omitted, will query a 7 day range from the provided\nstart or end. Will throw if the requested range is larger than 30 days.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Nominal periodically scrapes connected databases (Connections) in order to maintain a database of all\nseries that can be read from that database. This service is responsible for executing the scrape, and can\nbe used manually to trigger a rescrape for any reason (for example, when updating a schema).\n"
  }, {
    "serviceName" : {
      "name" : "ConnectionService",
      "package" : "io.nominal.scout.datasource.connection"
    },
    "endpoints" : [ {
      "endpointName" : "createConnection",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/connection/v1/connections",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "createConnection",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateConnection",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Connection",
          "package" : "io.nominal.scout.datasource.connection.api"
        }
      },
      "docs" : "Creates a new connection.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateConnection",
      "httpMethod" : "PUT",
      "httpPath" : "/data-source/connection/v1/connection/{rid}/details",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateConnectionRequest",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Connection",
          "package" : "io.nominal.scout.datasource.connection.api"
        }
      },
      "docs" : "Updates an existing connection.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateConnectionStatus",
      "httpMethod" : "PUT",
      "httpPath" : "/data-source/connection/v1/connection/{rid}/status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionStatus",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Updates an existing connection status.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "addAvailableTags",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/connection/v1/connection/{rid}/available-tags",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "tags",
        "type" : {
          "type" : "map",
          "map" : {
            "keyType" : {
              "type" : "reference",
              "reference" : {
                "name" : "TagName",
                "package" : "io.nominal.api"
              }
            },
            "valueType" : {
              "type" : "set",
              "set" : {
                "itemType" : {
                  "type" : "reference",
                  "reference" : {
                    "name" : "TagValue",
                    "package" : "io.nominal.api"
                  }
                }
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Connection",
          "package" : "io.nominal.scout.datasource.connection.api"
        }
      },
      "docs" : "Adds available tag key/value pairs to the connection. If a tag name already exists, the values will be merged.\nThis is primarily an internal endpoint to update tags for external connections as they are periodically \nscraped. This endpoint should only be called by clients for Visual crossing connections. Throws if called for\nNominal connections which have their tags automatically indexed in the underlying Database.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getConnection",
      "httpMethod" : "GET",
      "httpPath" : "/data-source/connection/v1/connection/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Connection",
          "package" : "io.nominal.scout.datasource.connection.api"
        }
      },
      "docs" : "Gets a connection by its RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getConnections",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/connection/v1/connection/multiple",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ConnectionRid",
                "package" : "io.nominal.scout.datasource.connection.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Connection",
              "package" : "io.nominal.scout.datasource.connection.api"
            }
          }
        }
      },
      "docs" : "Gets a set of connections by their RIDs.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listConnections",
      "httpMethod" : "GET",
      "httpPath" : "/data-source/connection/v1/connections",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "includeArchived",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "includeArchived"
          }
        },
        "docs" : "Whether to include archived connections in the response.\nBy default, this is false.\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only the connections within the supplied workspaces. If empty\nwill return all connections for workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Connection",
              "package" : "io.nominal.scout.datasource.connection.api"
            }
          }
        }
      },
      "docs" : "Lists all connections.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveConnection",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/connection/v1/connections/{rid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives a connection, which simply tags the connection for a client to filter.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveConnection",
      "httpMethod" : "POST",
      "httpPath" : "/data-source/connection/v1/connections/{rid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ConnectionRid",
            "package" : "io.nominal.scout.datasource.connection.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Undoes the archiving of a connection.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "A Connection contains the relevant metadata and information to be used as a data source for runs.\nThe Connection Service is responsible for creating, updating, and retrieving database connections.\n"
  }, {
    "serviceName" : {
      "name" : "FavoritesService",
      "package" : "io.nominal.scout.favorites"
    },
    "endpoints" : [ {
      "endpointName" : "getFavoritesList",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/favorites/workspace/{workspaceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "resourceTypes",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "ResourceType",
                "package" : "io.nominal.scout.favorites.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "resourceTypes"
          }
        },
        "docs" : "The resource types to include in the favorites list. If none are provided,\nall resource types will be included.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "FavoritesListResponse",
          "package" : "io.nominal.scout.favorites.api"
        }
      },
      "docs" : "Retrieves the favorites list for the current user in the specified workspace.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "setFavoritesList",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/favorites/workspace/{workspaceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SetFavoritesListRequest",
            "package" : "io.nominal.scout.favorites.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "FavoritesListResponse",
          "package" : "io.nominal.scout.favorites.api"
        }
      },
      "docs" : "Overwrites the favorites list for the current user in the specified workspace.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Creating favorites allows users to pin specific resources (i.e. assets, workbooks, etc.) as favorites for \nquick access within search pages throughout the application for themselves.\n"
  }, {
    "serviceName" : {
      "name" : "IntegrationsService",
      "package" : "io.nominal.scout.integrations.api"
    },
    "endpoints" : [ {
      "endpointName" : "generateSlackWebhookLink",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/integrations/slack-oauth/init-webhook",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspace"
          }
        },
        "docs" : "The (Nominal) workspace for which the link is valid. If not provided, will use the default workspace for\nthe user's organization, if the default workspace for the organization is configured.\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "isGovSlack",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "BOOLEAN"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "isGovSlack"
          }
        },
        "docs" : "If true, the link will be generated for a GovSlack workspace. This is required for GovSlack workspaces.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GenerateSlackWebhookResponse",
          "package" : "io.nominal.scout.integrations.api"
        }
      },
      "docs" : "Generates link to request permissions for Slack bot to join workspaces and use a webhook.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createSlackWebhook",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/integrations/slack-oauth/redirect",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "code",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "code"
          }
        },
        "docs" : "Temporary authorization code issued by Slack.",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "state",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "state"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Creates a new Slack integration. Called internally after Slack authorization.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createIntegration",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/integrations",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "createIntegrationRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateIntegrationRequest",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Integration",
          "package" : "io.nominal.scout.integrations.api"
        }
      },
      "docs" : "Creates a new integration.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteIntegration",
      "httpMethod" : "DELETE",
      "httpPath" : "/scout/v2/integrations/{integrationRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "integrationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationRid",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Deletes an integration by archiving.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateIntegrationMetadata",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/integrations/{integrationRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "integrationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationRid",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateIntegrationRequest",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Integration",
          "package" : "io.nominal.scout.integrations.api"
        }
      },
      "docs" : "Updates the metadata of an integration.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateIntegrationDetails",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/v2/integrations/{integrationRid}/details",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "integrationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationRid",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateIntegrationDetailsRequest",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Integration",
          "package" : "io.nominal.scout.integrations.api"
        }
      },
      "docs" : "Updates the integration details for an integration.\nIntended to allow changing webhooks or rotating API keys.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getIntegration",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/integrations/{integrationRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "integrationRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "IntegrationRid",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Integration",
          "package" : "io.nominal.scout.integrations.api"
        }
      },
      "docs" : "Retrieves an integration with the specified integration RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listIntegrations",
      "httpMethod" : "GET",
      "httpPath" : "/scout/v2/integrations/list",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only the integrations within the supplied workspaces. If empty\nwill return all integrations for workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Integration",
              "package" : "io.nominal.scout.integrations.api"
            }
          }
        }
      },
      "docs" : "Lists all integrations. Archived integrations are not included.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "sendMessage",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v2/integrations/send-message",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SendMessageRequest",
            "package" : "io.nominal.scout.integrations.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Sends a string message to the specified integration from a checklist execution.",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Service for managing integrations with external services.\n"
  }, {
    "serviceName" : {
      "name" : "InternalJobService",
      "package" : "io.nominal.scout.jobs.api"
    },
    "endpoints" : [ {
      "endpointName" : "submitJobs",
      "httpMethod" : "POST",
      "httpPath" : "/internal/jobs/v1/submitJobs",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SubmitJobsRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SubmitJobsResponse",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Runs the requested job specs.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Internal Job Service is responsible for running jobs for checklist executions.\n"
  }, {
    "serviceName" : {
      "name" : "JobService",
      "package" : "io.nominal.scout.jobs.api"
    },
    "endpoints" : [ {
      "endpointName" : "getJobReport",
      "httpMethod" : "GET",
      "httpPath" : "/jobs/v1/{jobRid}/job-report",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "jobRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "JobRid",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "JobReport",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Fetches the job report for a job RID. Throws ResourcesNotFound if no job exists with this job RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetJobReports",
      "httpMethod" : "POST",
      "httpPath" : "/jobs/v1/batch-get-job-reports",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetJobReportsRequest",
            "package" : "io.nominal.scout.checks.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetJobReportsResponse",
          "package" : "io.nominal.scout.checks.api"
        }
      },
      "docs" : "Fetches the job reports for a set of job RIDs. Omits any job reports the user is not permitted to see from\nthe response.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Job Service is responsible for returning information about jobs for checklist executions.\n"
  }, {
    "serviceName" : {
      "name" : "ResourceMetadataService",
      "package" : "io.nominal.scout.metadata"
    },
    "endpoints" : [ {
      "endpointName" : "listPropertiesAndLabels",
      "httpMethod" : "POST",
      "httpPath" : "/scout/v1/metadata/list-properties-labels",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ListPropertiesAndLabelsRequest",
            "package" : "io.nominal.scout.metadata"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ListPropertiesAndLabelsResponse",
          "package" : "io.nominal.scout.metadata"
        }
      },
      "docs" : "Returns all existing properties (key value pairs) and labels, which can be used to organize resources\nsuch as runs and videos.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Resource Metadata Service provides common metadata about resources.\n"
  }, {
    "serviceName" : {
      "name" : "SavedViewService",
      "package" : "io.nominal.scout.savedviews"
    },
    "endpoints" : [ {
      "endpointName" : "createSavedView",
      "httpMethod" : "POST",
      "httpPath" : "/scout/saved-views/v1",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateSavedViewRequest",
            "package" : "io.nominal.scout.savedviews.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CreateSavedViewResponse",
          "package" : "io.nominal.scout.savedviews.api"
        }
      },
      "docs" : "Creates a new saved view in the given workspace. If no workspace is specified,\nit is created in the user's default workspace.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getSavedView",
      "httpMethod" : "GET",
      "httpPath" : "/scout/saved-views/v1/{savedViewRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "savedViewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetSavedViewResponse",
          "package" : "io.nominal.scout.savedviews.api"
        }
      },
      "docs" : "Fetches a saved view by RID. Throws NOT_FOUND if it does not exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetSavedViews",
      "httpMethod" : "POST",
      "httpPath" : "/scout/saved-views/v1/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "savedViewRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "SavedViewRid",
                "package" : "io.nominal.scout.rids.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetSavedViewsResponse",
          "package" : "io.nominal.scout.savedviews.api"
        }
      },
      "docs" : "Retrieves multiple saved views. Any invalid or unknown RIDs are omitted from the response.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "searchSavedViews",
      "httpMethod" : "POST",
      "httpPath" : "/scout/saved-views/v1/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchSavedViewsRequest",
            "package" : "io.nominal.scout.savedviews.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchSavedViewsResponse",
          "package" : "io.nominal.scout.savedviews.api"
        }
      },
      "docs" : "Searches for saved views using a nested query expression. Supports pagination.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateSavedView",
      "httpMethod" : "PUT",
      "httpPath" : "/scout/saved-views/v1/{savedViewRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "savedViewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateSavedViewRequest",
            "package" : "io.nominal.scout.savedviews.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "UpdateSavedViewResponse",
          "package" : "io.nominal.scout.savedviews.api"
        }
      },
      "docs" : "Updates metadata, search filters, or display settings for an existing saved view.\nThrows NOT_FOUND if the view doesn't exist and INVALID_ARGUMENT if it is archived.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archiveSavedView",
      "httpMethod" : "POST",
      "httpPath" : "/scout/saved-views/v1/{savedViewRid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "savedViewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives the specified saved view. Archived views are hidden from search.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchiveSavedView",
      "httpMethod" : "POST",
      "httpPath" : "/scout/saved-views/v1/{savedViewRid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "savedViewRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SavedViewRid",
            "package" : "io.nominal.scout.rids.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Restores archived saved view, making them discoverable in search again.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Saved Views allow users to store and reuse filter and table display configurations across \nassets, runs, checklists, and more. They can be favorited, archived, and shared across a workspace.\n"
  }, {
    "serviceName" : {
      "name" : "VideoFileService",
      "package" : "io.nominal.scout.video"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/video-files/v1/video-files",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateVideoFileRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoFile",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Create and persist a video file entity with the given metadata",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoFile",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Returns video file metadata associated with a video file RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGet",
      "httpMethod" : "POST",
      "httpPath" : "/video-files/v1/video-files/batchGet",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VideoFile",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "docs" : "Returns all video files and their metadata associated with the given RIDs",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listFilesInVideo",
      "httpMethod" : "POST",
      "httpPath" : "/video-files/v1/video-files/list-files-in-video",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VideoFile",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "deprecated" : "Returns all video files and their metadata associated with the given video RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listFilesInVideoPaginated",
      "httpMethod" : "POST",
      "httpPath" : "/video-files/v1/video-files/list-files-in-video-paginated",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ListFilesInVideoRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ListFilesInVideoResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Returns a paginated list of all video files and their metadata associated with the given video RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "update",
      "httpMethod" : "PUT",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateVideoFileRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "VideoFile",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Updates the metadata for a video file associated with the given RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "delete",
      "httpMethod" : "DELETE",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Permanently deletes a video file and all associated segments from the database.\nThis operation cannot be undone.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archive",
      "httpMethod" : "PUT",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "deprecated" : "Archives a video file, which excludes it from search and hides it from being visible\nin the UI, but does not permanently delete it. Archived video files can be unarchived.\nThis endpoints is deprecated and will be removed on February 1st, 2026. Use delete endpoint instead for permanent removal.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchive",
      "httpMethod" : "PUT",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "deprecated" : "Unarchive a previously archived video file, exposing it to the UI and search. Unarchiving functionality will be removed on February 1st, 2026.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getIngestStatus",
      "httpMethod" : "GET",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}/ingest-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetIngestStatusResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Get the latest ingest status for a given video file by RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetIngestStatus",
      "httpMethod" : "POST",
      "httpPath" : "/video-files/v1/videos/batch-get-ingest-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoFileRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VideoFileRid",
              "package" : "io.nominal.api.rids"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VideoFileIngestStatus",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "docs" : "Get the latest ingest status for a set of given video files by RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateIngestStatus",
      "httpMethod" : "PUT",
      "httpPath" : "/video-files/v1/videos/{videoFileRid}/ingest-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateIngestStatusRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Update the latest ingest status for a given video file by RID.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getSegmentSummaries",
      "httpMethod" : "GET",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}/segment-summaries",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "SegmentSummary",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "docs" : "Returns the min and max absolute and media timestamps for each segment in a video file. \nTo be used during frame-timestamp mapping when playing back videos.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getPlaylist",
      "httpMethod" : "GET",
      "httpPath" : "/video-files/v1/video-files/{videoFileRid}/playlist",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BINARY"
      },
      "docs" : "Generate an HLS playlist for a video file with the given RID to enable playback.\nThe HLS playlist will contain links to all of the video segments in the video in sequential order.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The video service manages individual video files and their metadata.\n"
  }, {
    "serviceName" : {
      "name" : "VideoSegmentService",
      "package" : "io.nominal.scout.video"
    },
    "endpoints" : [ {
      "endpointName" : "createSegments",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/create-segments",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateSegmentsRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "deprecated" : "Replaced by createVideoFileSegments. Will be removed after April 15th.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createVideoFileSegments",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/{videoFileRid}/create-segments",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "videoFileRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoFileRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateSegmentsRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CreateSegmentsResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createVideoStreamSegments",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/streams/{streamUuid}/create-segments",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "streamUuid",
        "type" : {
          "type" : "primitive",
          "primitive" : "UUID"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateSegmentsRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CreateSegmentsResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Creates segments for a video stream. Similar to createVideoFileSegments but for streaming video.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getSegmentByTimestamp",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/get-segment-by-timestamp",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetSegmentByTimestampRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Segment",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "docs" : "Returns metadata for the segment within a video containing the requested absolute timestamp.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Upon ingestion, every video is split into smaller segments. The Video Segment Service manages operations on videos\nat the segment-level.\n"
  }, {
    "serviceName" : {
      "name" : "VideoService",
      "package" : "io.nominal.scout.video"
    },
    "endpoints" : [ {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/video/v1/videos/{videoRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Video",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Returns video metadata associated with a video rid.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGet",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/batchGet",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetVideosRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetVideosResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Returns video metadata about each video given a set of video rids.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "search",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchVideosRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchVideosResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Returns metadata about videos that match a given query.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateVideoRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Video",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Creates and persists a video entity with the given metadata.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMetadata",
      "httpMethod" : "PUT",
      "httpPath" : "/video/v1/videos/{videoRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateVideoMetadataRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Video",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Updates the metadata for a video associated with the given video rid.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateIngestStatus",
      "httpMethod" : "PUT",
      "httpPath" : "/video/v1/videos/{videoRid}/ingest-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateIngestStatus",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "deprecated" : "Replaced by per-file updateIngestStatus. Will be removed after April 15th.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getIngestStatus",
      "httpMethod" : "GET",
      "httpPath" : "/video/v1/videos/{videoRid}/ingest-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DetailedIngestStatus",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetIngestStatus",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/batch-get-ingest-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "VideoRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "map",
        "map" : {
          "keyType" : {
            "type" : "reference",
            "reference" : {
              "name" : "VideoRid",
              "package" : "io.nominal.api.rids"
            }
          },
          "valueType" : {
            "type" : "reference",
            "reference" : {
              "name" : "DetailedIngestStatus",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getEnrichedIngestStatus",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/enriched-ingest-status",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetEnrichedVideoIngestStatusRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "EnrichedVideoIngestStatus",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archive",
      "httpMethod" : "PUT",
      "httpPath" : "/video/v1/videos/{videoRid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archives a video, which excludes it from search and hides it from being publicly visible, but does not\npermanently delete it. Archived videos can be unarchived.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchive",
      "httpMethod" : "PUT",
      "httpPath" : "/video/v1/videos/{videoRid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unarchives a previously archived video.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getPlaylist",
      "httpMethod" : "GET",
      "httpPath" : "/video/v1/videos/{videoRid}/playlist",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BINARY"
      },
      "docs" : "Generates an HLS playlist for a video with the given video rid to enable playback. The HLS playlist will contain\nlinks to all of the segments in the video in sequential order.\n",
      "deprecated" : "Replaced by getPlaylistInBounds. Will be removed after April 15th.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getSegmentSummaries",
      "httpMethod" : "GET",
      "httpPath" : "/video/v1/videos/{videoRid}/segment-summaries",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "SegmentSummary",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "docs" : "Returns the min and max absolute and media timestamps for each segment in a video. To be used during \nframe-timestamp mapping.\n",
      "deprecated" : "Replaced by getSegmentSummariesInBounds. Will be removed after April 15th.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getPlaylistInBounds",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/playlist-in-bounds",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetPlaylistInBoundsRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BINARY"
      },
      "docs" : "Generates an HLS playlist for a video with the given video rid to enable playback within an optional set of\nbounds. The HLS playlist will contain links to all of the segments in the video that overlap with the given \nbounds.\nplaylist will be limited to the given bounds.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getSegmentSummariesInBounds",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/segment-summaries-in-bounds",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetSegmentSummariesInBoundsRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "SegmentSummary",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "docs" : "Returns the min and max absolute and media timestamps for each segment in a video that overlap with an \noptional set of bounds.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getFileSummaries",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/get-ranges-with-existing-segment-data",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetFileSummariesRequest",
            "package" : "io.nominal.scout.video.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetFileSummariesResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Returns the min and max absolute timestamps from non-archived video files associated with a given video that\noverlap with an optional set of bounds. The files on the edges of the bounds will be truncated to segments\nthat are inside or overlap with the bounds.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "generateWhipStream",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/streaming/whip",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GenerateWhipStreamResponse",
          "package" : "io.nominal.scout.video.api"
        }
      },
      "docs" : "Generates a stream ID scoped to a video and returns a WHIP URL with a MediaMTX JWT and ICE servers.\nEnforces write permission on the video.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "generateWhepStream",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/videos/{videoRid}/streaming/whep",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "videoRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "VideoRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "GenerateWhepStreamResponse",
              "package" : "io.nominal.scout.video.api"
            }
          }
        }
      },
      "docs" : "Returns WHEP URL, ICE servers, and token for playing back the active stream.\nReturns empty if there is no active stream.\nEnforces read permission on the video.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "uploadSegmentFromMediaMtx",
      "httpMethod" : "POST",
      "httpPath" : "/video/v1/segment/upload",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "streamPath",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "streamPath"
          }
        },
        "docs" : "MTX_PATH from MediaMTX indicating the stream path",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "filePath",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "filePath"
          }
        },
        "docs" : "File path of the uploaded segment",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "duration",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "duration"
          }
        },
        "docs" : "MTX_SEGMENT_DURATION from MediaMTX in seconds",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "contentLength",
        "type" : {
          "type" : "primitive",
          "primitive" : "SAFELONG"
        },
        "paramType" : {
          "type" : "header",
          "header" : {
            "paramId" : "Content-Length"
          }
        },
        "docs" : "Size of the segment in bytes from Content-Length header",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "body",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "MediaMTX segment upload endpoint. Receives video segments from MediaMTX hooks.\nValidates JWT and logs session. Future: create video segments from uploaded files.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The video service manages videos and video metadata.\n"
  }, {
    "serviceName" : {
      "name" : "InternalSecretService",
      "package" : "io.nominal.secrets.api"
    },
    "endpoints" : [ {
      "endpointName" : "getDecrypted",
      "httpMethod" : "GET",
      "httpPath" : "/secrets/internal/v1/secrets/{rid}/decrypted",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DecryptedSecret",
          "package" : "io.nominal.secrets.api"
        }
      },
      "docs" : "Get decrypted secret by rid. This is a privileged operation that is restricted to services only.\nThis endpoint must be a conjure endpoint in order to support TLS.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The internal secrets service provides functionality for retrieving customer secrets where the \"user\" is a service.\n"
  }, {
    "serviceName" : {
      "name" : "SecretService",
      "package" : "io.nominal.secrets.api"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/secrets/v1/secrets",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateSecretRequest",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Secret",
          "package" : "io.nominal.secrets.api"
        }
      },
      "docs" : "Create a new secret.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/secrets/v1/secrets/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Secret",
          "package" : "io.nominal.secrets.api"
        }
      },
      "docs" : "Get secret by rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getBatch",
      "httpMethod" : "POST",
      "httpPath" : "/secrets/v1/secrets/batch",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetSecretsRequest",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetSecretsResponse",
          "package" : "io.nominal.secrets.api"
        }
      },
      "docs" : "Get secrets by a set of rids.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "update",
      "httpMethod" : "PUT",
      "httpPath" : "/secrets/v1/secrets/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateSecretRequest",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Secret",
          "package" : "io.nominal.secrets.api"
        }
      },
      "docs" : "Update a secret by rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "delete",
      "httpMethod" : "DELETE",
      "httpPath" : "/secrets/v1/secrets/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Delete a secret by rid. This is a permanent deletion. To perform a soft delete,\nuse the archive endpoint.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "archive",
      "httpMethod" : "PUT",
      "httpPath" : "/secrets/v1/secrets/{rid}/archive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Archive a secret by rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "unarchive",
      "httpMethod" : "PUT",
      "httpPath" : "/secrets/v1/secrets/{rid}/unarchive",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SecretRid",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Unarchive a secret by rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "search",
      "httpMethod" : "POST",
      "httpPath" : "/secrets/v1/secrets/search",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SearchSecretsRequest",
            "package" : "io.nominal.secrets.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SearchSecretsResponse",
          "package" : "io.nominal.secrets.api"
        }
      },
      "docs" : "Returns metadata about secrets that match a given query.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The secrets service provides functionality for creating and retrieving customer secrets (e.g. influx passwords, API keys, etc)\n"
  }, {
    "serviceName" : {
      "name" : "WorkspaceService",
      "package" : "io.nominal.security.api.workspace"
    },
    "endpoints" : [ {
      "endpointName" : "getWorkspaces",
      "httpMethod" : "GET",
      "httpPath" : "/workspaces/v1/workspaces",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Workspace",
              "package" : "io.nominal.security.api.workspace"
            }
          }
        }
      },
      "docs" : "Gets all workspaces that the requesting user belongs to.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getWorkspace",
      "httpMethod" : "GET",
      "httpPath" : "/workspaces/v1/workspaces/{workspaceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Workspace",
          "package" : "io.nominal.security.api.workspace"
        }
      },
      "docs" : "Gets the workspace with the specified WorkspaceRid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateWorkspace",
      "httpMethod" : "PUT",
      "httpPath" : "/workspaces/v1/workspaces/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WorkspaceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateWorkspaceRequest",
            "package" : "io.nominal.security.api.workspace"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "Workspace",
          "package" : "io.nominal.security.api.workspace"
        }
      },
      "docs" : "Updates the settings of the workspace with the specified WorkspaceRid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getDefaultWorkspace",
      "httpMethod" : "GET",
      "httpPath" : "/workspaces/v1/default-workspace",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "returns" : {
        "type" : "optional",
        "optional" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "Workspace",
              "package" : "io.nominal.security.api.workspace"
            }
          }
        }
      },
      "docs" : "Gets the default workspace for the requesting user. If the user belongs to a single workspace,\nthat workspace is returned. Otherwise, if the user's organization has a default workspace and\nthe user belongs to it, that will be returned.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "This service provides information about workspaces. Workspaces provide access control boundaries. All resources in\nNominal live within a workspace.\n"
  }, {
    "serviceName" : {
      "name" : "NominalDataSourceService",
      "package" : "io.nominal.storage.datasource.api"
    },
    "endpoints" : [ {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/storage/data-source/v1",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateNominalDataSourceRequest",
            "package" : "io.nominal.storage.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataSource",
          "package" : "io.nominal.storage.datasource.api"
        }
      },
      "docs" : "Creates a data source.",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "update",
      "httpMethod" : "PUT",
      "httpPath" : "/storage/data-source/v1/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateNominalDataSourceRequest",
            "package" : "io.nominal.storage.datasource.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "NominalDataSource",
          "package" : "io.nominal.storage.datasource.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGet",
      "httpMethod" : "POST",
      "httpPath" : "/storage/data-source/v1/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rids",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "NominalDataSourceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "set",
        "set" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "NominalDataSource",
              "package" : "io.nominal.storage.datasource.api"
            }
          }
        }
      },
      "docs" : "Retrieves the data sources for the given data source RIDs.\n\nExcludes data sources that do not exist or are unauthorized. A maximum of 1000 rids can be requested.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateLastWrittenTimestamp",
      "httpMethod" : "PUT",
      "httpPath" : "/storage/data-source/v1/{rid}/last-written",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "timestamp",
        "type" : {
          "type" : "primitive",
          "primitive" : "DATETIME"
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Sets the timestamp that the Nominal Data Source in question was last written to. Only needs to be called once per minute.",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Manages data sources (logical groupings of series) that are stored by Nominal."
  }, {
    "serviceName" : {
      "name" : "InternalNominalStorageDataDeletionService",
      "package" : "io.nominal.storage.deletion.api"
    },
    "endpoints" : [ {
      "endpointName" : "delete",
      "httpMethod" : "POST",
      "httpPath" : "/internal/storage-data-deletion/v1/delete-data",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DeleteDataRequest",
            "package" : "io.nominal.storage.deletion.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Deletes stored data. This is an irreversible operation so be careful about specified\ntime range, channel names, and tag scope.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "For internal user only. Contact Nominal support if you need to delete data."
  }, {
    "serviceName" : {
      "name" : "DirectNominalChannelWriterService",
      "package" : "io.nominal.storage.writer.api"
    },
    "endpoints" : [ {
      "endpointName" : "writeBatches",
      "httpMethod" : "POST",
      "httpPath" : "/storage/direct-writer/v1",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WriteBatchesRequest",
            "package" : "io.nominal.storage.writer.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Synchronously writes batches of records to a Nominal data source. This endpoint bypasses the\nChannel Writer service entirely, and should only be used if the implications are well understood.\n\nIf you call this endpoint, writes will go directly into Nominal DB and will not be placed in Nominal's\ndurable queue. This results in lower latency, but also consequently lower durability.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Writes data points directly to Nominal's managed database offering."
  }, {
    "serviceName" : {
      "name" : "NominalChannelWriterService",
      "package" : "io.nominal.storage.writer.api"
    },
    "endpoints" : [ {
      "endpointName" : "writeBatches",
      "httpMethod" : "POST",
      "httpPath" : "/storage/writer/v1",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WriteBatchesRequestExternal",
            "package" : "io.nominal.storage.writer.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Synchronously writes batches of records to a Nominal data source.\n\nIf the request is too large, either due to the number of individual batches (> 10) or the number of points\nacross batches (> 500k), the request may be split up into multiple requests internally when writing to the\nNominal data source. Generally, it's advisable to limit the number of points to 50k.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "writeColumnBatches",
      "httpMethod" : "POST",
      "httpPath" : "/storage/writer/v1/columnar",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WriteColumnBatchesRequest",
            "package" : "io.nominal.storage.writer.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Synchronously writes batches of columns of data to a Nominal data source.\n\nThis is a column-major variant of writeBatches (which is row-major) to optimize serialization and compression\ntime for client applications streaming large numbers of points from a single column at a time. This has the\ntradeoff of slightly larger sizes post-gzipping of requests, so should be used in the particular case where\nthe main bottleneck is in encoding columnar data into the row-based format found in writeBatches.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "writeTelegrafBatches",
      "httpMethod" : "POST",
      "httpPath" : "/storage/writer/v1/telegraf/{dataSourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WriteTelegrafBatchesRequest",
            "package" : "io.nominal.storage.writer.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Synchronously writes batches of records to a Nominal data source.\n\nHas the same functionality as writeBatches, but is compatible with the Telegraf output format.\nAssumes that the Telegraf batch format is used. Timestamp is assumed to be in nanoseconds.\nThe URL in the Telegraf output plugin configuration should be the fully qualified URL,\nincluding the dataSourceRid query parameter.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "writePrometheusBatches",
      "httpMethod" : "POST",
      "httpPath" : "/storage/writer/v1/prometheus/{dataSourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Synchronously writes batches of records to a Nominal data source.\n\nHas the same functionality as writeBatches, but is encoded using the Prometheus remote write\nformat. We follow the specification defined here: https://prometheus.io/docs/specs/remote_write_spec/\nThere are a few notable caveats:\n  1. Must be content encoded as application/x-protobuf\n  2. Must be compressed using snappy compression\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "prometheusRemoteWriteHealthCheck",
      "httpMethod" : "GET",
      "httpPath" : "/storage/writer/v1/prometheus/{dataSourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "primitive",
        "primitive" : "BOOLEAN"
      },
      "docs" : "Performs a health check for prometheus remote write Vector sink. All this endpoint does\nis verify if the caller is authenticated and the server is online. Once Vector allows the Prometheus\nremote write endpoint to configure the healthcheck url, we can remove this endpoint.\n\nSee: https://github.com/vectordotdev/vector/issues/8279\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "writeNominalBatches",
      "httpMethod" : "POST",
      "httpPath" : "/storage/writer/v1/nominal/{dataSourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Synchronously writes a Nominal Write Request to a Nominal data source using the NominalWrite Protobuf schema.\nThe request must be Protobuf-encoded and accompanied by the appropriate content encoding headers if compressed.\n\nThe request should follow this Protobuf schema:\n```proto\nmessage WriteRequestNominal {\n  repeated Series series = 1;\n}\n\nmessage Series {\n  Channel channel = 1;            \n  map<string, string> tags = 2;   // Key-value pairs for series tags\n  Points points = 3;              // Contains double, string, integer, array, or struct points\n}\n\nmessage Channel {\n  string name = 1;\n} \n\nmessage Points {\n  oneof points_type {\n    DoublePoints double_points = 1;\n    StringPoints string_points = 2;\n    IntegerPoints integer_points = 3;\n    ArrayPoints array_points = 4;\n    StructPoints struct_points = 5;\n  }\n}\n\nmessage DoublePoints {\n  repeated DoublePoint points = 1;\n}\n\nmessage StringPoints {\n  repeated StringPoint points = 1;\n}\n\nmessage IntegerPoints {\n  repeated IntegerPoint points = 1;\n}\n\nmessage ArrayPoints {\n  oneof array_type {\n    DoubleArrayPoints double_array_points = 1;\n    StringArrayPoints string_array_points = 2;\n  }\n}\n\nmessage DoubleArrayPoints {\n  repeated DoubleArrayPoint points = 1;\n}\n\nmessage StringArrayPoints {\n  repeated StringArrayPoint points = 1;\n}\n\nmessage StructPoints {\n  repeated StructPoint points = 1;\n}\n\nmessage DoublePoint {\n  google.protobuf.Timestamp timestamp = 1;\n  double value = 2;\n}\n\nmessage StringPoint {\n  google.protobuf.Timestamp timestamp = 1;\n  string value = 2;\n}\n\nmessage IntegerPoint {\n  google.protobuf.Timestamp timestamp = 1;\n  int64 value = 2;\n}\n\nmessage DoubleArrayPoint {\n  google.protobuf.Timestamp timestamp = 1;\n  repeated double value = 2;\n}\n\nmessage StringArrayPoint {\n  google.protobuf.Timestamp timestamp = 1;\n  repeated string value = 2;\n}\n\nmessage StructPoint {\n  google.protobuf.Timestamp timestamp = 1;\n  string jsonString = 2;\n}\n```\n\nEach request can contain multiple series, where each series consists of:\n- A channel name\n- A map of tags (key-value pairs)\n- A collection of points, which can be double, string, integer, array (double/string), or struct (json) values\n- Each point includes a timestamp (using google.protobuf.Timestamp) and its value\n- Array points contain repeated values (array<double> or array<string>)\n- Struct points are represented using strings that contain the JSON formatted blobs, with all keys being strings\n\nThe endpoint requires the Content-Type header to be set to \"application/x-protobuf\".\nIf the payload is compressed, the appropriate Content-Encoding header must be included.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "writeLogs",
      "httpMethod" : "POST",
      "httpPath" : "/storage/writer/v1/logs/{dataSourceRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "dataSourceRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "NominalDataSourceOrDatasetRid",
            "package" : "io.nominal.api.rids"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "WriteLogsRequest",
            "package" : "io.nominal.storage.writer.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Synchronously writes logs to a Nominal data source.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Write data points to Nominal data sources."
  }, {
    "serviceName" : {
      "name" : "ThemesService",
      "package" : "io.nominal.themes.api"
    },
    "endpoints" : [ {
      "endpointName" : "listChartThemes",
      "httpMethod" : "GET",
      "httpPath" : "/themes/v1/chart-themes",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "workspaces",
        "type" : {
          "type" : "set",
          "set" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspaces"
          }
        },
        "docs" : "If supplied, will return only results within the supplied workspaces. If empty\nwill return all results within workspaces that the user is permitted to see.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "ChartTheme",
              "package" : "io.nominal.themes.api"
            }
          }
        }
      },
      "docs" : "Get all chart themes saved to the requested workspaces.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getChartTheme",
      "httpMethod" : "GET",
      "httpPath" : "/themes/v1/chart-themes/{chartThemeRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "chartThemeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeRid",
            "package" : "io.nominal.themes.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of chart theme.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChartTheme",
          "package" : "io.nominal.themes.api"
        }
      },
      "docs" : "Get a specific chart theme by RID.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createChartTheme",
      "httpMethod" : "POST",
      "httpPath" : "/themes/v1/chart-themes",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateChartThemeRequest",
            "package" : "io.nominal.themes.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChartTheme",
          "package" : "io.nominal.themes.api"
        }
      },
      "docs" : "Create a new chart theme.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateChartTheme",
      "httpMethod" : "PUT",
      "httpPath" : "/themes/v1/chart-themes/{chartThemeRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "chartThemeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeRid",
            "package" : "io.nominal.themes.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of chart theme to update.\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateChartThemeRequest",
            "package" : "io.nominal.themes.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChartTheme",
          "package" : "io.nominal.themes.api"
        }
      },
      "docs" : "Update an existing chart theme.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteChartTheme",
      "httpMethod" : "DELETE",
      "httpPath" : "/themes/v1/chart-themes/{chartThemeRid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "chartThemeRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "ChartThemeRid",
            "package" : "io.nominal.themes.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "docs" : "The RID of chart theme to delete.\n",
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Delete an existing comment.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Themes service manages themes for exporting charts."
  }, {
    "serviceName" : {
      "name" : "ChannelMetadataService",
      "package" : "io.nominal.timeseries.channelmetadata"
    },
    "endpoints" : [ {
      "endpointName" : "getChannelMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/channel-metadata/v1/channel-metadata/get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetChannelMetadataRequest",
            "package" : "io.nominal.timeseries.channelmetadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChannelMetadata",
          "package" : "io.nominal.timeseries.channelmetadata.api"
        }
      },
      "docs" : "Get the metadata for a channel.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchGetChannelMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/channel-metadata/v1/channel-metadata/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetChannelMetadataRequest",
            "package" : "io.nominal.timeseries.channelmetadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetChannelMetadataResponse",
          "package" : "io.nominal.timeseries.channelmetadata.api"
        }
      },
      "docs" : "Batch get the metadata for multiple channels. If some channels cannot be found or authorized, \nthey will be omitted from the response.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateChannelMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/channel-metadata/v1/channel-metadata/update",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateChannelMetadataRequest",
            "package" : "io.nominal.timeseries.channelmetadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "ChannelMetadata",
          "package" : "io.nominal.timeseries.channelmetadata.api"
        }
      },
      "docs" : "Update the metadata for a channel.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchUpdateChannelMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/channel-metadata/v1/channel-metadata/batch-update",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchUpdateChannelMetadataRequest",
            "package" : "io.nominal.timeseries.channelmetadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchUpdateChannelMetadataResponse",
          "package" : "io.nominal.timeseries.channelmetadata.api"
        }
      },
      "docs" : "Batch update the metadata for multiple channels. If some channels cannot be found or authorized,\nno metadata will be updated for any of the channels in the request.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Endpoints for retrieving and updating channel metadata.\n"
  }, {
    "serviceName" : {
      "name" : "LogicalSeriesService",
      "package" : "io.nominal.timeseries.logicalseries"
    },
    "endpoints" : [ {
      "endpointName" : "createLogicalSeries",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/logical-series/v1/logical-series",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "createLogicalSeries",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateLogicalSeries",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogicalSeries",
          "package" : "io.nominal.timeseries.logicalseries.api"
        }
      },
      "docs" : "Create a new logical series.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchCreateLogicalSeries",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/logical-series/v1/logical-series/batch-create",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchCreateLogicalSeriesRequest",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchCreateLogicalSeriesResponse",
          "package" : "io.nominal.timeseries.logicalseries.api"
        }
      },
      "docs" : "Batch create new logical series.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchUpdateLogicalSeries",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/logical-series/v1/logical-series/batch-update",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchUpdateLogicalSeriesRequest",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchUpdateLogicalSeriesResponse",
          "package" : "io.nominal.timeseries.logicalseries.api"
        }
      },
      "docs" : "Batch update logical series descriptions and units.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "getLogicalSeries",
      "httpMethod" : "GET",
      "httpPath" : "/timeseries/logical-series/v1/logical-series/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "LogicalSeries",
          "package" : "io.nominal.timeseries.logicalseries.api"
        }
      },
      "docs" : "Get a logical series by logical series rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "resolveBatch",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/logical-series/v1/resolve",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchResolveSeriesRequest",
            "package" : "io.nominal.timeseries.logicalseries.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchResolveSeriesResponse",
          "package" : "io.nominal.timeseries.logicalseries.api"
        }
      },
      "docs" : "Resolves groups of channels, datasources and tags into logical series rids. An error response is provided\nif the channel + datasource + tag cannot be resolved into a logical series rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "A logical series is a timeseries, represented by a channel name and a tag set.\n"
  }, {
    "serviceName" : {
      "name" : "SeriesMetadataService",
      "package" : "io.nominal.timeseries.metadata"
    },
    "endpoints" : [ {
      "endpointName" : "batchGet",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/archetype/v1/series-archetype/batch-get",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchGetSeriesMetadataRequest",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "BatchGetSeriesMetadataResponse",
          "package" : "io.nominal.timeseries.metadata.api"
        }
      },
      "docs" : "Batch get series metadata by DataSourceRid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "create",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/archetype/v1/series-archetype",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateSeriesMetadataRequest",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Create new series metadata.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchCreate",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/archetype/v1/series-archetype/batch-create",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "BatchCreateSeriesMetadataRequest",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Idempotently creates series metadata.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "get",
      "httpMethod" : "GET",
      "httpPath" : "/timeseries/archetype/v1/series-archetype/{rid}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesMetadataRid",
            "package" : "io.nominal.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SeriesMetadata",
          "package" : "io.nominal.timeseries.metadata.api"
        }
      },
      "docs" : "Get series metadata from its series metadata rid.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "updateMetadata",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/archetype/v1/series-archetype/{rid}/metadata",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "rid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "SeriesMetadataRid",
            "package" : "io.nominal.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "UpdateSeriesMetadataRequest",
            "package" : "io.nominal.timeseries.metadata.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SeriesMetadata",
          "package" : "io.nominal.timeseries.metadata.api"
        }
      },
      "docs" : "Update existing series metadata. \nThrows SeriesMetadataNotFound if the series metadata does not exist.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "[INTERNAL]\nSeries metadata represents the constant information about data in a series - specifically, the name, units, a\ndescription, and the tags. Series metadata can be used to query points from specific series depending on the tag\nvalue selections.\n"
  }, {
    "serviceName" : {
      "name" : "SeriesCacheService",
      "package" : "io.nominal.timeseries.seriescache"
    },
    "endpoints" : [ {
      "endpointName" : "getChunks",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/series-cache/v1/logical-series/{logicalSeriesRid}/get-chunks",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "logicalSeriesRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "getChunksParameters",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "GetChunksParameters",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "GetChunksResponse",
          "package" : "io.nominal.timeseries.seriescache.api"
        }
      },
      "docs" : "Fetches \"chunks\" of series that are stored as Arrow files in S3.\nThis endpoint is being deprecated for new series in favor of batchGetCachedSeries\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "createChunks",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/series-cache/v1/logical-series/{logicalSeriesRid}/create-chunks",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "logicalSeriesRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "createChunksParameters",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateChunksParameters",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CreateChunksResponse",
          "package" : "io.nominal.timeseries.seriescache.api"
        }
      },
      "deprecated" : "Deprecated in favor of batchCreateChunks",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "batchCreateChunks",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/series-cache/v1/batch-create-chunks",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "CreateChunksParameters",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CreateChunksResponse",
          "package" : "io.nominal.timeseries.seriescache.api"
        }
      },
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "deleteChunks",
      "httpMethod" : "POST",
      "httpPath" : "/timeseries/series-cache/v1/logical-series/{logicalSeriesRid}/delete-chunks",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "logicalSeriesRid",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "LogicalSeriesRid",
            "package" : "io.nominal.api"
          }
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "request",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "DeleteChunksParameters",
            "package" : "io.nominal.timeseries.seriescache.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "DeleteChunksResponse",
          "package" : "io.nominal.timeseries.seriescache.api"
        }
      },
      "docs" : "Deletes the chunks that intersect the given time range. Does not delete the corresponding files from S3.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Series Cache service manages internal chunks of data cached by Nominal's backend.\n"
  }, {
    "serviceName" : {
      "name" : "UploadService",
      "package" : "io.nominal.upload.api"
    },
    "endpoints" : [ {
      "endpointName" : "initiateMultipartUpload",
      "httpMethod" : "POST",
      "httpPath" : "/upload/v1/multipart-upload",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "uploadRequest",
        "type" : {
          "type" : "reference",
          "reference" : {
            "name" : "InitiateMultipartUploadRequest",
            "package" : "io.nominal.ingest.api"
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "InitiateMultipartUploadResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Initiates a multipart upload to object storage.\nReturns an uploadId that should be used with listParts, signPart, and completeMultipartUpload.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "listParts",
      "httpMethod" : "GET",
      "httpPath" : "/upload/v1/multipart-upload/{uploadId}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "uploadId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "key",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "key"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "list",
        "list" : {
          "itemType" : {
            "type" : "reference",
            "reference" : {
              "name" : "PartWithSize",
              "package" : "io.nominal.ingest.api"
            }
          }
        }
      },
      "docs" : "Lists the parts that have been uploaded for a given uploadId.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "signPart",
      "httpMethod" : "POST",
      "httpPath" : "/upload/v1/multipart-upload/{uploadId}",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "uploadId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "key",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "key"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "partNumber",
        "type" : {
          "type" : "primitive",
          "primitive" : "INTEGER"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "partNumber"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "SignPartResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Signs an upload request for a single part.\nReturns a URL that will execute the upload without further authentication.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "completeMultipartUpload",
      "httpMethod" : "POST",
      "httpPath" : "/upload/v1/multipart-upload/{uploadId}/complete",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "uploadId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "key",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "key"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "parts",
        "type" : {
          "type" : "list",
          "list" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "Part",
                "package" : "io.nominal.ingest.api"
              }
            }
          }
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "CompleteMultipartUploadResponse",
          "package" : "io.nominal.ingest.api"
        }
      },
      "docs" : "Completes a multipart upload to object storage.\nThis should be called after all parts have been uploaded.\nWill throw EmptyMultipartUpload if there are 0 parts.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "abortMultipartUpload",
      "httpMethod" : "POST",
      "httpPath" : "/upload/v1/multipart-upload/{uploadId}/abort",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "uploadId",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "path",
          "path" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "key",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "key"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "docs" : "Aborts a multipart upload to S3.\nFrees storage used by previously uploaded parts and prevents further uploads to the same uploadId.\n",
      "markers" : [ ],
      "tags" : [ ]
    }, {
      "endpointName" : "uploadFile",
      "httpMethod" : "POST",
      "httpPath" : "/upload/v1/upload-file",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ {
        "argName" : "fileName",
        "type" : {
          "type" : "primitive",
          "primitive" : "STRING"
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "fileName"
          }
        },
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "sizeBytes",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "primitive",
              "primitive" : "SAFELONG"
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "sizeBytes"
          }
        },
        "docs" : "Specifies the size in bytes of the file being uploaded. This is\nrequired to be set if the file is greater than 100MB, however in\npractice this should probably always be set.\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "workspace",
        "type" : {
          "type" : "optional",
          "optional" : {
            "itemType" : {
              "type" : "reference",
              "reference" : {
                "name" : "WorkspaceRid",
                "package" : "io.nominal.api.rids"
              }
            }
          }
        },
        "paramType" : {
          "type" : "query",
          "query" : {
            "paramId" : "workspace"
          }
        },
        "docs" : "The workspace in which to upload the file. If not provided, the file will be uploaded to\nthe default workspace for the user's organization, if that is configured and the user\nhas access to it.\n",
        "markers" : [ ],
        "tags" : [ ]
      }, {
        "argName" : "body",
        "type" : {
          "type" : "primitive",
          "primitive" : "BINARY"
        },
        "paramType" : {
          "type" : "body",
          "body" : { }
        },
        "markers" : [ ],
        "tags" : [ ]
      } ],
      "returns" : {
        "type" : "reference",
        "reference" : {
          "name" : "S3Path",
          "package" : "io.nominal.api"
        }
      },
      "docs" : "Uploads a file to S3. Intended for smaller files.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "The Upload Service manages file uploads to object storage.\n"
  }, {
    "serviceName" : {
      "name" : "InternalUserCreationService",
      "package" : "io.nominal.usercreation.api"
    },
    "endpoints" : [ {
      "endpointName" : "ensureDatabaseUserExists",
      "httpMethod" : "PUT",
      "httpPath" : "/user-creation/v1/database",
      "auth" : {
        "type" : "header",
        "header" : { }
      },
      "args" : [ ],
      "docs" : "Ensures that the user corresponding to the auth header provided exists in the database.\nWill do nothing if the user already exists.\n",
      "markers" : [ ],
      "tags" : [ ]
    } ],
    "docs" : "Internal service responsible for handling creation of new users.\n"
  } ],
  "extensions" : {
    "recommended-product-dependencies" : [ ]
  }
}