{
  "openapi": "3.0.0",
  "info": {
    "version": "1.1.0",
    "title": "Signaloid Cloud Compute Engine API",
    "description": "This is the Signaloid Cloud Compute Engine API OpenAPI specification.\nSignaloid provides a computing platform to quantify, transmit, and track\ndata uncertainty dynamically and throughout computations in unmodified\ncomputing workloads. The Signaloid Cloud Compute Engine API enables you\nto interface with the Signaloid Cloud Compute Engine programmatically.\n\n# Authentication\nThe Signaloid Cloud Compute Engine API currently offers authentication\nusing API keys. Authentication is required for all API requests and the\nrequest must include the API key in the `Authorization` header.\nRead more about how to obtain an API key in the\n[Authentication](/docs/api/guides/authentication) guide.\n\n# API Versioning\nThe Signaloid Cloud Compute Engine API is in beta. We make every\neffort to maintain backwards compatibility, but we reserve the right to make\nbreaking changes to the API while still in beta. We will announce breaking\nchanges in the [Signaloid Cloud Platform Release\nNotes](https://headwayapp.co/signaloid-cloud-platform-release-notes).\n\n# API Guides\nThe current page is the API reference. For more information about how to use\nthe Signaloid Cloud API in your application and combine different requests,\nsee the [API Guides](/docs/api/guides).\n",
    "termsOfService": "https://legal.signaloid.io/terms-of-service.html",
    "contact": {
      "name": "Signaloid Developer Support",
      "email": "developer-support@signaloid.com"
    }
  },
  "servers": [
    {
      "url": "https://api.signaloid.io"
    }
  ],
  "security": [
    {
      "ApiKey": []
    },
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Buckets"
    },
    {
      "name": "Builds"
    },
    {
      "name": "Cloud Storage"
    },
    {
      "name": "Cores"
    },
    {
      "name": "Drives"
    },
    {
      "name": "Health"
    },
    {
      "name": "Keys"
    },
    {
      "name": "Organizations"
    },
    {
      "name": "Plots"
    },
    {
      "name": "Repositories"
    },
    {
      "name": "Samples"
    },
    {
      "name": "Tasks"
    },
    {
      "name": "Things"
    },
    {
      "name": "User"
    },
    {
      "name": "Webhooks"
    },
    {
      "name": "WebSockets"
    }
  ],
  "paths": {
    "/cores": {
      "get": {
        "summary": "List Cores",
        "description": "Returns the list of custom Signaloid cores available to the account. The\nresponse does not include the default cores available to all accounts.\n",
        "operationId": "ListCores",
        "tags": [
          "Cores"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "default",
            "description": "By default this API will return your custom cores.\nBy providing this parameter you will get back the default cores, created and managed by Signaloid for you.\n\nThis is a presence flag: the parameter is enabled by being\npresent, whatever its value. `?default`, `?default=true` and\n`?default=false` all select the default cores; omit the parameter\nentirely to get your custom cores.\n",
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "UserID",
                    "Cores",
                    "Count"
                  ],
                  "properties": {
                    "UserID": {
                      "$ref": "#/components/schemas/UserID"
                    },
                    "Cores": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Core"
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "ContinuationKey": {
                      "description": "A continuation token that can be used to get the next page\nof results. When this field is not present, there are no\nmore results to return.\n",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/CoreID"
                        }
                      ]
                    }
                  }
                },
                "examples": {
                  "CoresGetResponseOK": {
                    "value": {
                      "UserID": "usr_b0bf834b1ec54d6cb332cc1300efdcba",
                      "Count": 3,
                      "ContinuationKey": "cor_051481609fe04665b576ab066e378257",
                      "Cores": [
                        {
                          "Object": "Core",
                          "CoreID": "cor_051481609fe04665b576ab066e378257",
                          "Owner": "usr_b0bf834b1ec54d6cb332cc1300efdcba",
                          "CreatedAt": 1670405103,
                          "UpdatedAt": 1670405103,
                          "Name": "My Custom Athens Core",
                          "Class": "C0",
                          "Microarchitecture": "Athens",
                          "CorrelationTracking": "Disable",
                          "MemorySize": 2000000,
                          "Precision": 32
                        },
                        {
                          "Object": "Core",
                          "CoreID": "cor_3c336f8d8dd343a2b91ca278de0ba32c",
                          "Owner": "usr_b0bf834b1ec54d6cb332cc1300efdcba",
                          "CreatedAt": 1669821723,
                          "UpdatedAt": 1669908393,
                          "Name": "Custom Reference Core",
                          "Class": "C0",
                          "Microarchitecture": "Reference",
                          "CorrelationTracking": "Disable",
                          "MemorySize": 32000000,
                          "Precision": 8
                        },
                        {
                          "Object": "Core",
                          "CoreID": "cor_cd6071a8c67f4a8caad3a8950417d703",
                          "Owner": "usr_b0bf834b1ec54d6cb332cc1300efdcba",
                          "CreatedAt": 1669822394,
                          "UpdatedAt": 1669822394,
                          "Name": "Enceladus",
                          "Class": "C0",
                          "Microarchitecture": "Athens",
                          "CorrelationTracking": "Autocorrelation",
                          "MemorySize": 2000000,
                          "Precision": 512
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create Core",
        "description": "Creates a new custom Signaloid Core. The new Core becomes available to\nthe account and is returned in the response.\n",
        "operationId": "CreateCore",
        "tags": [
          "Cores"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CorePost"
              },
              "examples": {
                "CoresPostRequest": {
                  "value": {
                    "Name": "My New Custom Core",
                    "Class": "C0",
                    "Microarchitecture": "Athens",
                    "CorrelationTracking": "Autocorrelation",
                    "MemorySize": 256000,
                    "Precision": 128
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core"
                },
                "examples": {
                  "CoresPostResponseOK": {
                    "value": {
                      "Object": "Core",
                      "CoreID": "cor_3ff9395ee9494f3d91a8e1b5999d737e",
                      "Owner": "usr_b0bf834b1ec54d6cb332cc1300efdcba",
                      "CreatedAt": 1677025457,
                      "UpdatedAt": 1677025457,
                      "Name": "My New Custom Core",
                      "Class": "C0",
                      "Microarchitecture": "Athens",
                      "CorrelationTracking": "Autocorrelation",
                      "MemorySize": 256000,
                      "Precision": 128
                    }
                  }
                }
              }
            },
            "links": {
              "get": {
                "operationId": "GetCore",
                "parameters": {
                  "coreID": "$response.body#/CoreID"
                }
              },
              "edit": {
                "operationId": "EditCore",
                "parameters": {
                  "coreID": "$response.body#/CoreID"
                }
              },
              "delete": {
                "operationId": "DeleteCore",
                "parameters": {
                  "coreID": "$response.body#/CoreID"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Empty request body"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Forbidden",
                      "message": "Custom Core limit reached. Please upgrade your account to create more cores."
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/cores/{CoreID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/CoreID"
        }
      ],
      "get": {
        "summary": "Get Core",
        "description": "Returns the custom Signaloid core identified by the `CoreID` path\nparameter.\n",
        "operationId": "GetCore",
        "tags": [
          "Cores"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "default",
            "description": "By default this API looks up a custom core owned by your account.\nBy providing this parameter you look up a default core, created\nand managed by Signaloid.\n\nThis is a presence flag: the parameter is enabled by being\npresent, whatever its value. `?default`, `?default=true` and\n`?default=false` all select the default cores; omit the parameter\nentirely to look up your custom cores.\n",
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Missing path parameter 'CoreID'"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete Core",
        "description": "Permanently deletes the custom Signaloid core identified by the `CoreID`\nparameter.\n",
        "operationId": "DeleteCore",
        "tags": [
          "Cores"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "OK"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Missing path parameter 'CoreID'"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update Core",
        "description": "Updates the custom Signaloid core identified by the `CoreID` parameter.\nThis method is useful for updating the core of a specific `CoreID`\nwithout having to edit integrations that use this core. The request must\nchange at least one of the editable Core properties for the Signaloid\nCloud API to accept it. The response is the edited core.\n",
        "operationId": "UpdateCore",
        "tags": [
          "Cores"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CorePatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "OK"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Nothing to update"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Forbidden",
                      "message": "Requested resources exceed your current tier limits"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Not Found",
                      "message": "Core not found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repositories": {
      "get": {
        "summary": "List connected repositories",
        "description": "Returns the list of git repositories available to the account.\n",
        "operationId": "GetConnectedRepositories",
        "tags": [
          "Repositories"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "startKey",
            "description": "Where to resume the list of Repositories. Use for paginating\nresponses. Pass back the `ContinuationKey` returned by the\nprevious response.\n",
            "schema": {
              "$ref": "#/components/schemas/RepositoryID"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "UserID",
                    "Repositories",
                    "Count"
                  ],
                  "properties": {
                    "UserID": {
                      "$ref": "#/components/schemas/UserID"
                    },
                    "Repositories": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Repository"
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "ContinuationKey": {
                      "description": "A continuation token that can be used to get the next page\nof results. When this field is not present, there are no\nmore results to return.\n",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/RepositoryID"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Connect a Repository",
        "description": "Creates a new connection to a git repository. The request must contain\nthe URL of the repository, commit, branch, build directory, and default\ncommand-line arguments. The `Arguments` field is required but may be the\nempty string. The response is the created connected repository resource.\n",
        "operationId": "ConnectRepository",
        "tags": [
          "Repositories"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositoryPost"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Repository"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Missing or malformed 'RemoteURL' field"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Forbidden",
                      "message": "Repositories limit reached. Please upgrade your account to create more repositories."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - A repository with the same URL and branch is already registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "existingRepository": {
                    "summary": "Repository with the same URL and branch already exists",
                    "value": {
                      "error": "Conflict",
                      "message": "A repository with the same URL and branch is already registered. Existing RepositoryID: <RepositoryID>"
                    }
                  },
                  "concurrentDuplicateRegistration": {
                    "summary": "Two concurrent requests raced to register the same URL and branch",
                    "value": {
                      "error": "Conflict",
                      "message": "A repository with the same URL and branch is already registered. Please use the existing RepositoryID."
                    }
                  },
                  "concurrentModification": {
                    "summary": "Concurrent write detected at the database level",
                    "value": {
                      "error": "Conflict",
                      "message": "Concurrent modification detected. Please retry."
                    }
                  },
                  "repositoryIDConflict": {
                    "summary": "Generated RepositoryID collided with an existing one",
                    "value": {
                      "error": "Conflict",
                      "message": "A repository with this ID already exists. Please retry."
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "repositoryPostRequest": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repositories/{RepositoryID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/RepositoryID"
        }
      ],
      "get": {
        "summary": "Get Repository",
        "description": "Returns the connected git repository resource identified by the\n`RepositoryID` parameter.\n",
        "operationId": "GetRepository",
        "tags": [
          "Repositories"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Repository"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Missing path parameter 'RepositoryID'"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete Repository",
        "description": "Permanently deletes the connected git repository resource identified by\nthe `RepositoryID` parameter.\n",
        "operationId": "DeleteRepository",
        "tags": [
          "Repositories"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "OK"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update Repository",
        "description": "Updates the connected git repository resource identified by the\n`RepositoryID` parameter. This method is useful for updating the\nconnected repository resource of a specific `RepositoryID` (e.g., to\nchange the branch it points at) without having to edit integrations that\nuse this repository. The request must change at least one of the\neditable repository properties for the Signaloid Cloud API to accept it.\nThe response is the edited repository resource.\n",
        "operationId": "UpdateRepository",
        "tags": [
          "Repositories"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "RemoteURL": {
                    "type": "string",
                    "format": "uri"
                  },
                  "Commit": {
                    "type": "string"
                  },
                  "Branch": {
                    "type": "string"
                  },
                  "BuildDirectory": {
                    "type": "string",
                    "description": "The directory in the repository where the Signaloid Cloud\nEngine should use as working directory when attempting to\nbuild the repository application. This directory is relative\nto the root of the repository.\n"
                  },
                  "Arguments": {
                    "type": "string",
                    "description": "Default command-line arguments that the Signaloid Cloud\nEngine should pass when executing the built repository\napplication.\n"
                  },
                  "Core": {
                    "$ref": "#/components/schemas/CoreID"
                  },
                  "DataSources": {
                    "$ref": "#/components/schemas/DataSources"
                  },
                  "TraceVariables": {
                    "description": "The default variables that the Signaloid Cloud Compute Engine should\ntrace when executing the Repository application.\n",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/TraceVariableRequest"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Repository"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Nothing to update"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - A repository with the same URL and branch is already registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "summary": "The updated URL and branch collide with another of the user's repositories",
                    "value": {
                      "error": "Conflict",
                      "message": "A repository with the same URL and branch is already registered for this account."
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repositories/{RepositoryID}/builds": {
      "parameters": [
        {
          "$ref": "#/components/parameters/RepositoryID"
        }
      ],
      "get": {
        "summary": "List Builds for a Repository",
        "description": "Returns the list of Builds created from the Repository identified by\nthe `RepositoryID` path parameter. The list is sorted by field\n`CreatedAt` in descending order and is limited to 25 Builds per page.\n",
        "operationId": "GetRepositoryBuilds",
        "tags": [
          "Repositories"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "startKey",
            "description": "Where to resume the list of Builds. Use for paginating responses.\nPass back the `ContinuationKey` returned by the previous response.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "Filter Builds by creation date - only include Builds created on or\nafter this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "to",
            "description": "Filter Builds by creation date - only include Builds created on or\nbefore this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "RepositoryID",
                    "Builds",
                    "Count"
                  ],
                  "properties": {
                    "RepositoryID": {
                      "$ref": "#/components/schemas/RepositoryID"
                    },
                    "Builds": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Build"
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "ContinuationKey": {
                      "type": "string",
                      "description": "Where to resume the listing. Present only when more\nBuilds are available. Pass it back as the `startKey`\nquery parameter to fetch the next page.\n"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create Build from Repository",
        "description": "Creates a new build from the specified repository.\n",
        "operationId": "CreateRepositoryBuild",
        "tags": [
          "Repositories",
          "Builds"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "DiscoverVariables",
            "description": "If set to the string `\"true\"`, the build will attempt to discover\nvariables that can be traced. The comparison is exact and\ncase-sensitive: any other value — including `\"TRUE\"` and `\"1\"` —\nis treated as `\"false\"`.\n",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "default": "false"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "CoreID": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/CoreID"
                      }
                    ],
                    "description": "The Core to build for. Defaults to the Repository's `Core`\nfield.\n"
                  },
                  "TraceVariables": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/TraceVariableRequest"
                    },
                    "description": "Variables to trace in the built application. Defaults to\nthe Repository's `TraceVariables`, or to an empty list if\nthe Repository does not define any.\n"
                  },
                  "DataSources": {
                    "type": "array",
                    "minItems": 0,
                    "maxItems": 5,
                    "items": {
                      "$ref": "#/components/schemas/DataSource"
                    },
                    "description": "Data sources to use with this build. Defaults to the\nRepository's `DataSources`, or to an empty list if the\nRepository does not define any. Must be empty for the\n`C0-microSD` and `C0-microSD-plus` Core classes, which\notherwise return `403 Forbidden`.\n"
                  },
                  "Arguments": {
                    "type": "string",
                    "description": "Command-line arguments to pass to the application.\nDefaults to the Repository's `Arguments`, or to the empty\nstring if the Repository does not define any.\n"
                  },
                  "IsPublic": {
                    "type": "boolean",
                    "default": false,
                    "description": "Marks the build as publicly accessible. When enabled, other users can run tasks based on this build without requiring authorization.\nOnly the literal value `true` enables this; any other\nvalue, and omitting the field, leaves the build private.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "BuildID": {
                      "$ref": "#/components/schemas/BuildID"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - Resource limits reached",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/repositories/lookup": {
      "get": {
        "summary": "Lookup Repository",
        "description": "Looks up a connected repository by its remote URL and branch. Returns the\nRepositoryID if a matching connected repository is found.\n",
        "operationId": "LookupRepository",
        "tags": [
          "Repositories"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "remoteURL",
            "required": true,
            "description": "The remote URL of the repository (e.g., https://github.com/owner/repo.git).",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "branch",
            "required": true,
            "description": "The branch name to look up.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "RepositoryID"
                  ],
                  "properties": {
                    "RepositoryID": {
                      "$ref": "#/components/schemas/RepositoryID"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks": {
      "get": {
        "summary": "List Tasks",
        "description": "Returns the list of Tasks in the account. The list is sorted by field\n`CreatedAt` in descending order. To learn more about Tasks, see the Tasks section\nin the Signaloid Cloud Platform Documentation.\n",
        "operationId": "GetTasks",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "description": "Filter the list of Tasks by status. By default the list includes\nall Tasks. Repeat the parameter to filter on more than one status,\nfor example `?status=Completed&status=Stopped`.\n",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "default": [],
              "items": {
                "$ref": "#/components/schemas/TaskStatus"
              }
            }
          },
          {
            "in": "query",
            "name": "startKey",
            "description": "Where to resume the list of Tasks. Use for paginating responses.\nPass back the `ContinuationKey` returned by the previous response.\nThe value must be of the form `<CreatedAt>#<TaskID>`, where\n`<CreatedAt>` is an ISO 8601 UTC timestamp with millisecond\nprecision — for example\n`2026-01-31T12:00:00.000Z#tsk_0123456789abcdef0123456789abcdef`.\nA value that does not match this format is rejected with\n`400 Bad Request`.\n",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z#tsk_[A-Za-z0-9]+$"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "Filter tasks by creation date - only include tasks created on or after this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "to",
            "description": "Filter tasks by creation date - only include tasks created on or before this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "noexpand",
            "description": "By default each entry in `Tasks` is a fully expanded Task object.\nSet this parameter to the string `true` to return unexpanded\nentries instead, which raises the maximum page size from 25 to\n500. Any value other than `true` is treated as `false`.\n",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "default": "false"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "description": "The maximum number of Tasks to return in one page. The effective\nmaximum — and the value used when this parameter is omitted, is\nnot a number, or exceeds the maximum — is 25 for expanded\nresponses and 500 when `noexpand=true`.\n",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "UserID",
                    "Tasks",
                    "Count"
                  ],
                  "properties": {
                    "UserID": {
                      "$ref": "#/components/schemas/UserID"
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "The number of Tasks in the list."
                    },
                    "ContinuationKey": {
                      "type": "string",
                      "description": "Where to resume the listing. Present only when more\nTasks are available. Pass it back as the `startKey`\nquery parameter to fetch the next page.\n"
                    },
                    "Tasks": {
                      "type": "array",
                      "description": "Fully expanded Task objects by default. When\n`noexpand=true`, each entry is a `TaskListItem`\ncarrying only the `TaskID`, `Owner` and `CreatedAt`\nfields. Every entry in a given response has the same\nshape.\n",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/components/schemas/Task"
                          },
                          {
                            "$ref": "#/components/schemas/TaskListItem"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{TaskID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TaskID"
        }
      ],
      "get": {
        "summary": "Get Task",
        "description": "Returns the Task resource identified by the `TaskID` path parameter. To\nlearn more about Tasks, see the Tasks section in the Signaloid Cloud\nDeveloper Platform Documentation.\n",
        "operationId": "GetTask",
        "tags": [
          "Tasks"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Task"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Empty request body"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete Task",
        "description": "Permanently deletes the Task identified by the `TaskID` path parameter.\nThis operation cannot be performed on active tasks.\n",
        "operationId": "DeleteTask",
        "tags": [
          "Tasks"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - Cannot remove active task",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{TaskID}/public": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TaskID"
        }
      ],
      "get": {
        "summary": "Open (authentication-free) Get Task",
        "description": "Returns the Task resource identified by the `TaskID` path parameter.  \nYou can only use this authentication-free endpoint for tasks created from public builds.  \nTo learn more about Tasks, see the Tasks section in the Signaloid Cloud Developer Platform Documentation.\n",
        "operationId": "PublicGetTask",
        "tags": [
          "Tasks"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Task"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Empty request body"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{TaskID}/cancel": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TaskID"
        }
      ],
      "post": {
        "summary": "Cancel Task",
        "description": "Cancels the active Task identified by the `TaskID` path parameter.\n",
        "operationId": "CancelTask",
        "tags": [
          "Tasks"
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "example": "Cancel Task Signal sent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Missing path parameter 'TaskID'"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - Task already terminated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{TaskID}/outputs": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TaskID"
        }
      ],
      "get": {
        "summary": "Get Task Outputs",
        "description": "Returns URLs to the output files associated with the task.\n",
        "operationId": "GetTaskOutputs",
        "tags": [
          "Tasks"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskOutputReturn"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{TaskID}/outputs/public": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TaskID"
        }
      ],
      "get": {
        "summary": "Open (authentication-free) Get Task Outputs",
        "description": "Returns URLs to the output files for the specified task. This endpoint is authentication-free and you can only use it for tasks created from public builds.\n",
        "operationId": "PublicGetTaskOutputs",
        "security": [],
        "tags": [
          "Tasks"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskOutputReturn"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{TaskID}/output/{Stream}": {
      "get": {
        "description": "Returns the requested output (Stdout or Stderr) for a specific task. Returns the plain text output, or a redirect to a download URL if output is larger than 5 MB. Optional query param to skip cache.",
        "summary": "Get Task Stream Output",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "description": "Task ID",
            "in": "path",
            "name": "TaskID",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Output stream (Stdout or Stderr)",
            "in": "path",
            "name": "Stream",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Stdout",
                "Stderr"
              ]
            }
          },
          {
            "description": "If true, bypass the cached copy of the output.",
            "in": "query",
            "name": "skipCache",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Plain text stream output"
          },
          "302": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Redirect, see header\" Header:\"Location"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad request (missing or invalid parameters)"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal server error"
          }
        }
      }
    },
    "/tasks/{TaskID}/output/public": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TaskID"
        }
      ],
      "get": {
        "summary": "Open (authentication-free) Get Task Stream Output",
        "operationId": "GetPublicTaskStreamOutput",
        "description": "Returns an output stream (Stdout or Stderr) for a Task that belongs to\na public Build. This endpoint is authentication-free. It returns the\noutput as plain text, or redirects to a download URL if the output\nexceeds 5 MB.\n\n> **Note:** this operation is currently non-functional. The deployed\n> route exposes no way to select the output stream, so every request\n> is rejected with `400 Bad Request`. Use\n> `GET /tasks/{TaskID}/outputs/public` until this is resolved.\n",
        "tags": [
          "Tasks"
        ],
        "security": [],
        "parameters": [
          {
            "description": "If true, bypass the cached copy of the output.",
            "in": "query",
            "name": "skipCache",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Plain text stream output"
          },
          "302": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Redirect to a download URL. See the `Location` header."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad request (missing or invalid parameters)"
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal server error"
          }
        }
      }
    },
    "/tasks/{TaskID}/values/{ValueID}/samples": {
      "get": {
        "summary": "List of generated samples in Reference Core runs",
        "description": "Returns the list of samples that were generated for the provided ValueID during the Reference Core task with the provided TaskID.\nIn Reference Core Tasks, the Value identifiers (ValueID) are part of the standard output streams.\n",
        "operationId": "GetTaskValueSamplesFromValueID",
        "tags": [
          "Samples"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "count",
            "description": "By default this API will return up to 10000 samples.\nBy providing this parameter you can specify the number of samples returned.\nThis parameter has a maximum limit of 100000.\n",
            "schema": {
              "type": "integer",
              "default": 10000,
              "minimum": 0,
              "maximum": 100000
            }
          },
          {
            "in": "query",
            "name": "continuationToken",
            "description": "Opaque pagination token. Omit on the first request; on subsequent\nrequests pass the `ContinuationToken` value returned by the\nprevious response to continue from where it left off. An\nunparseable token is treated as if it were absent, and reading\nrestarts from the first sample.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/TaskID"
          },
          {
            "$ref": "#/components/parameters/ValueID"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/generateSamplesGetReply"
                },
                "examples": {
                  "GenerateSamplesGetReply": {
                    "value": {
                      "Samples": [
                        -1.0824527064791272,
                        -1.1310969119258107,
                        -1.0961994836548592,
                        -1.0720671348781252,
                        -1.1521749654880011,
                        -1.1528152657116664,
                        -1.1087047905171288,
                        -1.1326621923296623,
                        -1.0653820188992815,
                        -1.0858505883930254,
                        -1.1296963560287887,
                        -1.1013858150162135,
                        -1.0817764623439143,
                        -1.1775805891128661,
                        -1.070222023706863,
                        -1.0750953816720847,
                        -1.1568745145008779,
                        -1.1036719268767403,
                        -1.0878985057236494,
                        -1.0993357638716614,
                        -1.1407131752971837,
                        -1.1437027951679817,
                        -1.0901123548429996,
                        -1.0891835247279822,
                        -1.1566131594680455,
                        -1.1163989797228004,
                        -1.1022456684084043,
                        -1.1367967100453717,
                        -1.0960555317070564,
                        -1.112673925381313,
                        -1.1045915034476725,
                        -1.1336645059101502
                      ],
                      "Count": 32
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Not Found"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{TaskID}/values/{ValueID}/plot": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TaskID"
        },
        {
          "$ref": "#/components/parameters/ValueID"
        }
      ],
      "post": {
        "summary": "Plot Value ID",
        "operationId": "PlotValueID",
        "description": "Plot a Reference Core run output value identified by the `TaskID` and `ValueID` path parameters.\nReturns a `PlotID` and a direct URL that can be used to retrieve the\nplot image.\n",
        "tags": [
          "Plots"
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/plotPostReply"
                },
                "examples": {
                  "plotPostReply": {
                    "$ref": "#/components/examples/plotPostReply"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/samples": {
      "get": {
        "summary": "Random samples from hexadecimal (\"Ux\") data",
        "description": "Returns a list of random samples from the provided Hexadecimal (\"Ux\") Data Format (Ux string).\nIn non-Reference Core Tasks, distributions encoded as Ux strings are part of the standard output streams.\"\n",
        "operationId": "GetTaskValueSamplesFromUxString",
        "tags": [
          "Samples"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "count",
            "description": "By default this API will return up to 10000 samples.\nBy providing this parameter you can specify the number of samples returned.\nThis parameter has a maximum limit of 100000.\n",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 10000,
              "maximum": 100000
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "The request body is required on this operation. A request without a\n`payload` field is rejected with `400 Bad Request`.\n",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SamplesGenerateByUxStringRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/generateSamplesGetReply"
                },
                "examples": {
                  "GenerateSamplesGetReply": {
                    "value": {
                      "Samples": [
                        -1.0824527064791272,
                        -1.1310969119258107,
                        -1.0961994836548592,
                        -1.0720671348781252,
                        -1.1521749654880011,
                        -1.1528152657116664,
                        -1.1087047905171288,
                        -1.1326621923296623,
                        -1.0653820188992815,
                        -1.0858505883930254,
                        -1.1296963560287887,
                        -1.1013858150162135,
                        -1.0817764623439143,
                        -1.1775805891128661,
                        -1.070222023706863,
                        -1.0750953816720847,
                        -1.1568745145008779,
                        -1.1036719268767403,
                        -1.0878985057236494,
                        -1.0993357638716614,
                        -1.1407131752971837,
                        -1.1437027951679817,
                        -1.0901123548429996,
                        -1.0891835247279822,
                        -1.1566131594680455,
                        -1.1163989797228004,
                        -1.1022456684084043,
                        -1.1367967100453717,
                        -1.0960555317070564,
                        -1.112673925381313,
                        -1.1045915034476725,
                        -1.1336645059101502
                      ],
                      "Count": 32
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/plot": {
      "post": {
        "summary": "Plot Ux String",
        "operationId": "PlotUxString",
        "description": "Plot a Laplace Core run Ux string by passing into the body of the request.\nReturns a `PlotID` and a direct URL that can be used to retrieve the\nplot image.\n",
        "tags": [
          "Plots"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlotUxStringRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/plotPostReply"
                },
                "examples": {
                  "plotPostReply": {
                    "$ref": "#/components/examples/plotPostReply"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/files": {
      "get": {
        "summary": "List Files or Directories",
        "operationId": "listFiles",
        "tags": [
          "Cloud Storage"
        ],
        "parameters": [
          {
            "name": "path",
            "in": "query",
            "required": false,
            "description": "Directory to list, relative to the authenticated user's storage\nroot. Defaults to the empty string, which — like `/` — lists the\nroot directory. Path traversal sequences (`..`) are rejected with\n`400 Bad Request`.\n",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "startKey",
            "in": "query",
            "required": false,
            "description": "Continuation token for paginated results. Omit on the first\nrequest; on subsequent requests pass the URL-encoded\n`nextContinuationToken` returned by the previous response. At most\n100 items are returned per page.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of files and directories.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "Number of items returned."
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "path": {
                            "type": "string",
                            "description": "Relative path to the file or directory."
                          },
                          "last_modified": {
                            "type": "integer",
                            "description": "Timestamp of the last modification."
                          },
                          "size": {
                            "type": "integer",
                            "description": "Size of the file in bytes."
                          },
                          "etag": {
                            "type": "string",
                            "description": "ETag of the file."
                          }
                        }
                      }
                    },
                    "nextContinuationToken": {
                      "type": "string",
                      "description": "Token for fetching the next page of results."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/files/{path}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/path"
        }
      ],
      "get": {
        "summary": "Download a file or list a directory",
        "operationId": "GetStorageFile",
        "tags": [
          "Cloud Storage"
        ],
        "parameters": [
          {
            "name": "download",
            "in": "query",
            "description": "If provided, returns a pre-signed download URL for the specified\nfile instead of its metadata.\n\nThis is a presence flag: the parameter is enabled by being\npresent, whatever its value. `?download`, `?download=true` and\n`?download=false` all request a download; omit the parameter\nentirely to get metadata.\n",
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "path",
            "in": "path",
            "description": "The relative path to the file or directory.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "File metadata or directory contents.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/fileList"
                    },
                    {
                      "$ref": "#/components/schemas/fileDownload"
                    }
                  ]
                },
                "examples": {
                  "fileList": {
                    "$ref": "#/components/examples/fileList"
                  },
                  "fileDownload": {
                    "$ref": "#/components/examples/fileDownload"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid or malformed path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found - File or directory does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Upload a file or create a directory",
        "operationId": "PutStorageFile",
        "tags": [
          "Cloud Storage"
        ],
        "parameters": [
          {
            "name": "directory",
            "in": "query",
            "description": "If provided, creates a directory at the specified path instead of\nuploading a file.\n\nThis is a presence flag: the parameter is enabled by being\npresent, whatever its value. `?directory`, `?directory=true` and\n`?directory=false` all create a directory; omit the parameter\nentirely to upload a file.\n",
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the file to be uploaded, in bytes. Required for file\nuploads: when `directory` is not set, omitting this parameter is\nequivalent to sending `0` and is rejected with `400 Bad Request`.\nIgnored when creating a directory. The maximum is 5 GiB\n(5368709120 bytes), the largest single-part S3 upload.\n",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5368709120
            },
            "required": false
          },
          {
            "name": "path",
            "in": "path",
            "description": "The relative path where the file or directory will be created.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Success - Directory created or pre-signed URL generated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "upload_url": {
                      "type": "string",
                      "description": "Pre-signed URL for uploading the file."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid or malformed path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - Storage limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found - Parent directory does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a file or directory",
        "operationId": "DeleteStorageFile",
        "tags": [
          "Cloud Storage"
        ],
        "parameters": [
          {
            "name": "recursive",
            "in": "query",
            "description": "If provided, deletes directories and their contents recursively.\nValid only together with `directory`; sending `recursive` without\n`directory` is rejected with `400 Bad Request`.\n\nThis is a presence flag: the parameter is enabled by being\npresent, whatever its value. `?recursive`, `?recursive=true` and\n`?recursive=false` all enable recursive deletion; omit the\nparameter entirely to disable it.\n",
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "directory",
            "in": "query",
            "description": "If provided, specifies that the path refers to a directory.\n\nThis is a presence flag: the parameter is enabled by being\npresent, whatever its value. `?directory`, `?directory=true` and\n`?directory=false` all mark the path as a directory; omit the\nparameter entirely to delete a file.\n",
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          },
          {
            "name": "path",
            "in": "path",
            "description": "The relative path to the file or directory to delete.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Success - File or directory deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid query parameter or malformed path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found - File or directory does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/builds": {
      "get": {
        "summary": "List Builds",
        "description": "Returns the list of builds.\n",
        "operationId": "ListBuilds",
        "tags": [
          "Builds"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "startKey",
            "description": "Where to resume the list of Builds. Use for paginating responses.\nPass back the `ContinuationKey` returned by the previous response.\nThe value is of the form `<CreatedAt>#<BuildID>`, where\n`<CreatedAt>` is an ISO 8601 UTC timestamp with millisecond\nprecision — for example\n`2026-01-31T12:00:00.000Z#bld_0123456789abcdef0123456789abcdef`.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "Filter builds by creation date - only include builds created on or after this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "to",
            "description": "Filter builds by creation date - only include builds created on or before this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Filter the list of builds by status. By default the list includes\nall Builds. Repeat the parameter to filter on more than one\nstatus, for example `?status=Completed&status=Stopped`.\n",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "default": [],
              "items": {
                "$ref": "#/components/schemas/BuildStatus"
              }
            }
          },
          {
            "in": "query",
            "name": "noexpand",
            "description": "By default each entry in `Builds` is a fully expanded Build\nobject. Set this parameter to the string `true` to return\nunexpanded entries instead, which raises the maximum page size\nfrom 25 to 500. Any value other than `true` is treated as\n`false`.\n",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "default": "false"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "description": "The maximum number of Builds to return in one page. The effective\nmaximum — and the value used when this parameter is omitted, is\nnot a number, or exceeds the maximum — is 25 for expanded\nresponses and 500 when `noexpand=true`.\n",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "UserID",
                    "Builds",
                    "Count"
                  ],
                  "properties": {
                    "UserID": {
                      "$ref": "#/components/schemas/UserID"
                    },
                    "Builds": {
                      "type": "array",
                      "description": "Fully expanded Build objects by default. When\n`noexpand=true`, each entry is a `BuildListItem`\ncarrying only the `BuildID`, `Owner` and `CreatedAt`\nfields. Every entry in a given response has the same\nshape.\n",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/components/schemas/Build"
                          },
                          {
                            "$ref": "#/components/schemas/BuildListItem"
                          }
                        ]
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "ContinuationKey": {
                      "type": "string",
                      "description": "Where to resume the listing. Present only when more\nBuilds are available. Pass it back as the `startKey`\nquery parameter to fetch the next page.\n"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/builds/{BuildID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/BuildID"
        }
      ],
      "get": {
        "summary": "Get Build",
        "description": "Returns the build resource identified by the `BuildID` path parameter.\n",
        "operationId": "GetBuild",
        "tags": [
          "Builds"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Build"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update Build",
        "description": "Updates the build resource identified by the `BuildID` path parameter.\nCurrently supports updating the `IsPublic` field to control public accessibility of the build.\n",
        "operationId": "UpdateBuild",
        "tags": [
          "Builds"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "IsPublic": {
                    "type": "boolean",
                    "description": "Marks the build as publicly accessible. When enabled, other users can run tasks based on this build without requiring authorization.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Build"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete Build",
        "description": "Permanently deletes the build asset identified by the `BuildID` path parameter.\nThis operation cannot be performed on active builds.\n",
        "operationId": "DeleteBuild",
        "tags": [
          "Builds"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - Cannot remove active build",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/builds/{BuildID}/binary": {
      "parameters": [
        {
          "$ref": "#/components/parameters/BuildID"
        }
      ],
      "get": {
        "summary": "Get Build Binary",
        "description": "Returns a pre-signed URL to download the binary artifact for the build identified by the `BuildID` path parameter.\nThis is only available for builds with C0-microSD core class.\n",
        "operationId": "GetBuildBinary",
        "tags": [
          "Builds"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Presigned URL to download the binary"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Binary download is only available for C0-microSD core class",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/builds/{BuildID}/outputs": {
      "parameters": [
        {
          "$ref": "#/components/parameters/BuildID"
        }
      ],
      "get": {
        "summary": "Get Build Outputs",
        "description": "Returns URLs to the output files associated with the build.\n",
        "operationId": "GetBuildOutputs",
        "tags": [
          "Builds"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuildOutputReturn"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/builds/{BuildID}/variables": {
      "parameters": [
        {
          "$ref": "#/components/parameters/BuildID"
        }
      ],
      "get": {
        "summary": "Get Build Variables",
        "description": "Returns the list of variables discovered in the build.\n",
        "operationId": "GetBuildVariables",
        "tags": [
          "Builds"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "startKey",
            "description": "The key to start from when returning the list of variables. Used for paginating responses.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "BuildID": {
                      "type": "string"
                    },
                    "Variables": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Variable"
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "ContinuationKey": {
                      "type": "string",
                      "description": "Token for paginating responses.\n"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/builds/{BuildID}/cancel": {
      "parameters": [
        {
          "$ref": "#/components/parameters/BuildID"
        }
      ],
      "post": {
        "summary": "Cancel Build",
        "description": "Cancels an active build identified by the `BuildID` path parameter.\n",
        "operationId": "CancelBuild",
        "tags": [
          "Builds"
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "example": "Cancel Build Signal sent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - Build already terminated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/builds/{BuildID}/tasks": {
      "parameters": [
        {
          "$ref": "#/components/parameters/BuildID"
        }
      ],
      "get": {
        "summary": "List Build Tasks",
        "description": "Returns the list of tasks associated with the specified build.\n",
        "operationId": "GetBuildTasks",
        "tags": [
          "Builds"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "startKey",
            "description": "The key to start from when returning the list of tasks. Used for paginating responses.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "Filter tasks by creation date - only include tasks created on or after this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "to",
            "description": "Filter tasks by creation date - only include tasks created on or before this date.\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "BuildID": {
                      "$ref": "#/components/schemas/BuildID"
                    },
                    "Tasks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Task"
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "ContinuationKey": {
                      "type": "string",
                      "description": "Token for paginating responses.\n"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create Task from Build",
        "description": "Creates a new task using the specified build.\n",
        "operationId": "CreateBuildTask",
        "tags": [
          "Builds"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Arguments": {
                    "type": "string",
                    "description": "Command-line arguments to pass to the application.\nDefaults to the Build's `DefaultArguments`, or to the\nempty string if the Build does not define any.\n"
                  },
                  "DataSources": {
                    "type": "array",
                    "minItems": 0,
                    "maxItems": 5,
                    "items": {
                      "$ref": "#/components/schemas/DataSource"
                    },
                    "description": "Data sources to attach to the Task. Defaults to the\nBuild's `DefaultDataSources`, or to an empty list if the\nBuild does not define any.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "TaskID": {
                      "$ref": "#/components/schemas/TaskID"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - Resource limits reached",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/sourcecode/builds": {
      "post": {
        "summary": "Create Build From Single-file Source Code",
        "description": "Creates a new build from a single-file source code. The source code is compiled and built using the specified core.\n",
        "operationId": "CreateSourceCodeBuild",
        "tags": [
          "Builds"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "DiscoverVariables",
            "description": "If set to the string `\"true\"`, the build will attempt to discover\nvariables that can be traced. The comparison is exact and\ncase-sensitive: any other value — including `\"TRUE\"` and `\"1\"` —\nis treated as `\"false\"`.\n",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "default": "false"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "Code",
                  "Language"
                ],
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "The source code to build. Can be provided as plain text or Base64 encoded.\n"
                  },
                  "Language": {
                    "type": "string",
                    "enum": [
                      "C",
                      "C++",
                      "Fortran"
                    ],
                    "description": "The programming language of the source code. `Fortran` is\nrecognised but not yet supported and is rejected with\n`400 Bad Request`.\n"
                  },
                  "CoreID": {
                    "type": "string",
                    "description": "The ID of the core to use for building. If omitted, the\nSignaloid Cloud Platform assigns the default Core with the\nlowest precision that is available to your account.\n"
                  },
                  "TraceVariables": {
                    "type": "array",
                    "default": [],
                    "items": {
                      "$ref": "#/components/schemas/TraceVariableRequest"
                    },
                    "description": "Variables to trace in the built application. Defaults to\nan empty list.\n"
                  },
                  "DataSources": {
                    "type": "array",
                    "minItems": 0,
                    "maxItems": 5,
                    "items": {
                      "$ref": "#/components/schemas/DataSource"
                    },
                    "default": [],
                    "description": "Data sources to use with this build. Defaults to an empty\nlist. Must be empty for the `C0-microSD` and\n`C0-microSD-plus` Core classes, which otherwise return\n`400 Bad Request`.\n"
                  },
                  "Arguments": {
                    "type": "string",
                    "default": "",
                    "description": "Command-line arguments to pass to the compiled program at\nruntime. Defaults to the empty string.\n"
                  },
                  "IsPublic": {
                    "type": "boolean",
                    "default": false,
                    "description": "Marks the build as publicly accessible. When enabled, other users can run tasks based on this build without requiring authorization.\nOnly the literal value `true` enables this; any other\nvalue, and omitting the field, leaves the build private.\n"
                  },
                  "ConfigMk": {
                    "type": "string",
                    "description": "Contents of a `config.mk` file to customize the build. Can be provided as plain text or Base64-encoded. Maximum size is 64 KB after decoding.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "BuildID": {
                      "$ref": "#/components/schemas/BuildID"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/buckets": {
      "get": {
        "summary": "List connected Buckets",
        "operationId": "GetBuckets",
        "tags": [
          "Buckets"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bucketGetReply"
                },
                "examples": {
                  "bucketGetReply": {
                    "$ref": "#/components/examples/bucketGetReply"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Connect a Bucket",
        "description": "Connect a blob storage bucket from a third-party creating a Bucket\nresource. Currently supports Amazon S3 buckets.\n",
        "operationId": "ConnectBucket",
        "tags": [
          "Buckets"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/bucketPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bucketPostReply"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/buckets/{bucketID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/bucketID"
        }
      ],
      "get": {
        "summary": "Get Bucket",
        "operationId": "GetBucket",
        "tags": [
          "Buckets"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bucketPostReply"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update Bucket",
        "operationId": "EditBucket",
        "tags": [
          "Buckets"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/bucketPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bucketPostReply"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete Bucket",
        "operationId": "DeleteBucket",
        "tags": [
          "Buckets"
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/drives": {
      "get": {
        "summary": "List Drives",
        "operationId": "GetUserDrives",
        "tags": [
          "Drives"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/driveGetReply"
                },
                "examples": {
                  "driveGetReply": {
                    "$ref": "#/components/examples/driveGetReply"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a Drive",
        "operationId": "CreateDrive",
        "tags": [
          "Drives"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/drivePostRequest"
              },
              "examples": {
                "drivePostRequest": {
                  "$ref": "#/components/examples/drivePostRequest"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Item created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/drivePostReply"
                },
                "examples": {
                  "drivePostReply": {
                    "$ref": "#/components/examples/drivePostReply"
                  }
                }
              }
            },
            "links": {
              "get": {
                "operationId": "GetDrive",
                "parameters": {
                  "driveID": "$response.body#/DriveID"
                }
              },
              "edit": {
                "operationId": "EditDrive",
                "parameters": {
                  "driveID": "$response.body#/DriveID"
                }
              },
              "delete": {
                "operationId": "DeleteDrive",
                "parameters": {
                  "driveID": "$response.body#/DriveID"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/drives/{driveID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/driveID"
        }
      ],
      "delete": {
        "summary": "Delete drive",
        "operationId": "DeleteDrive",
        "tags": [
          "Drives"
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get Drive",
        "operationId": "GetDrive",
        "tags": [
          "Drives"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/driveIdGetReply"
                },
                "examples": {
                  "driveIdGetReply": {
                    "$ref": "#/components/examples/driveIdGetReply"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update drive",
        "operationId": "EditDrive",
        "tags": [
          "Drives"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/drivePatchRequest"
              },
              "examples": {
                "drivePatchRequest": {
                  "$ref": "#/components/examples/drivePatchRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/things": {
      "get": {
        "summary": "List Things",
        "operationId": "GetThings",
        "tags": [
          "Things"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/thingsGetReply"
                },
                "examples": {
                  "thingsGetReply": {
                    "$ref": "#/components/examples/thingsGetReply"
                  }
                }
              }
            },
            "links": {
              "get": {
                "operationId": "GetThing",
                "parameters": {
                  "thingID": "$response.body#/thing_ids/0"
                }
              },
              "getFile": {
                "operationId": "GetThingFiles",
                "parameters": {
                  "thingID": "$response.body#/thing_ids/0"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/things/{thingID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/thingID"
        }
      ],
      "get": {
        "summary": "Get Thing",
        "operationId": "GetThing",
        "tags": [
          "Things"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/thingProfile"
                },
                "examples": {
                  "thingProfile": {
                    "$ref": "#/components/examples/thingProfile"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/things/{thingID}/files": {
      "parameters": [
        {
          "$ref": "#/components/parameters/thingID"
        }
      ],
      "get": {
        "summary": "List Thing files",
        "operationId": "GetThingFiles",
        "tags": [
          "Things"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/thingFileList"
                },
                "examples": {
                  "thingFileList": {
                    "$ref": "#/components/examples/thingFileList"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/me": {
      "get": {
        "summary": "Get Current User",
        "description": "Returns the profile of the currently authenticated user.\nThis is a convenience endpoint that does not require knowing your own UserID.\n",
        "operationId": "GetCurrentUser",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/userProfile"
                },
                "examples": {
                  "userProfile": {
                    "$ref": "#/components/examples/userProfile"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/{UserID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "get": {
        "summary": "Get User",
        "operationId": "GetUser",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/userProfile"
                },
                "examples": {
                  "userProfile": {
                    "$ref": "#/components/examples/userProfile"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "Missing path parameter UserID"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update User",
        "operationId": "UpdateUserPreferences",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "remove",
            "description": "Names of preference keys to delete. Repeat the parameter to remove\nmore than one key, for example\n`?remove=Editor_Layout_VariableViewer&remove=Editor_Theme`.\n\nWhen this parameter is present the request body is ignored, and\nthe operation only removes keys. A request that supplies neither a\nbody nor this parameter is rejected with `400 Bad Request`.\n",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "default": [],
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Preferences": {
                    "type": "object"
                  }
                },
                "required": [
                  "Preferences"
                ]
              },
              "examples": {
                "changeLayout": {
                  "value": {
                    "Preferences": {
                      "Editor_Layout_VariableViewer": "true"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/BadRequestError"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete User",
        "description": "Deletes the user account identified by the UserID path parameter.\nThis operation initiates account deletion by disabling the account,\ninvalidating all sessions, and scheduling data cleanup.\n",
        "operationId": "DeleteUser",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/users/{UserID}/logout-all-sessions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "post": {
        "summary": "Sign Out From All Devices",
        "description": "Signs out the user from all devices by invalidating all active sessions.\nThis operation revokes all refresh tokens associated with the user, requiring\nre-authentication on all devices. Only the authenticated user can perform\nthis action on their own account.\n",
        "operationId": "LogoutAllSessions",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Successfully logged out from all sessions"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - Not authorized to perform this action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/NotFoundError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/{UserID}/customization": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "get": {
        "summary": "Get User Customization",
        "description": "Returns the customization settings for the specified user, including logo URL and organization membership.",
        "operationId": "GetUserCustomization",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "UserID": {
                      "$ref": "#/components/schemas/UserID"
                    },
                    "Object": {
                      "type": "string",
                      "example": "Customization"
                    },
                    "LogoURL": {
                      "type": "string",
                      "format": "uri"
                    },
                    "AtomicNetworks": {
                      "type": "boolean"
                    },
                    "Organizations": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/users/{UserID}/integrations/github": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "get": {
        "summary": "Get GitHub Integration",
        "description": "Returns the GitHub integration status and details for the specified user.",
        "operationId": "GetGitHubIntegration",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "UserID": {
                      "$ref": "#/components/schemas/UserID"
                    },
                    "Object": {
                      "type": "string",
                      "example": "GitHubIntegration"
                    },
                    "GitHubLogin": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Create or Update GitHub Integration",
        "description": "Creates or updates the GitHub integration for the specified user using an OAuth authorization code.",
        "operationId": "SetGitHubIntegration",
        "tags": [
          "User"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "Code"
                ],
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "GitHub OAuth authorization code."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete GitHub Integration",
        "description": "Removes the GitHub OAuth integration for the specified user.",
        "operationId": "DeleteGitHubIntegration",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/users/{UserID}/logs": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "get": {
        "summary": "Get User Activity Logs",
        "description": "Returns the activity logs for the specified user, queried from\nCloudWatch Logs. Logs are available only for your own account;\nrequesting another user's logs returns `403 Forbidden`.\n",
        "operationId": "GetUserLogs",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "startTime",
            "description": "Start of the query window, as a Unix timestamp in milliseconds.\nDefaults to seven days before the time of the request.\n",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "description": "End of the query window, as a Unix timestamp in milliseconds.\nDefaults to the time of the request.\n",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "description": "The maximum number of log entries to return. Defaults to 100.\n",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "logs": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/proxy/github/{proxy+}": {
      "parameters": [
        {
          "name": "proxy+",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "The GitHub API path to proxy."
        }
      ],
      "get": {
        "summary": "GitHub API Proxy",
        "description": "Proxies GET requests to the GitHub API on behalf of the authenticated user, using their stored GitHub credentials.",
        "operationId": "ProxyGitHub",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions": {
      "get": {
        "summary": "Get Subscription",
        "description": "Returns the current subscription information for the authenticated user, including tier and billing period.",
        "operationId": "GetSubscription",
        "tags": [
          "User"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "subscription": {
                      "type": "object",
                      "properties": {
                        "Tier": {
                          "type": "string",
                          "description": "Current subscription tier."
                        },
                        "BillingPeriod": {
                          "type": "string",
                          "enum": [
                            "monthly",
                            "yearly"
                          ]
                        },
                        "Status": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update Subscription",
        "description": "Updates the subscription tier or billing period for the authenticated user.",
        "operationId": "UpdateSubscription",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "freeTrialOption",
            "description": "Request the change as a free trial.\n\nThis is a presence flag: any non-empty value enables it. Omitting\nthe parameter, or sending it empty, requests a normal\nsubscription change.\n",
            "allowEmptyValue": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "PriceID": {
                    "type": "string",
                    "description": "Stripe price ID for the new subscription plan."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/organizations": {
      "post": {
        "summary": "Create Organization",
        "description": "Creates a new organization. Only users with an Enterprise tier subscription can create organizations.\nA user may only belong to one organization.\n",
        "operationId": "CreateOrganization",
        "tags": [
          "Organizations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "Name"
                ],
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The display name of the organization."
                  },
                  "DedicatedInstanceName": {
                    "type": "string",
                    "description": "Optional dedicated compute instance name."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Organization"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - Insufficient subscription tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - User already belongs to an organization",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/organizations/invitations": {
      "get": {
        "summary": "List Organization Invitations",
        "description": "Returns all pending organization invitations for the currently authenticated user.",
        "operationId": "GetOrganizationInvitations",
        "tags": [
          "Organizations"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Invitations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "OrganizationID": {
                            "type": "string"
                          },
                          "OrganizationName": {
                            "type": "string"
                          },
                          "InvitedBy": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/organizations/{OrganizationID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/OrganizationID"
        }
      ],
      "get": {
        "summary": "Get Organization",
        "description": "Returns the organization resource identified by the OrganizationID path parameter.",
        "operationId": "GetOrganization",
        "tags": [
          "Organizations"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Organization"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/organizations/{OrganizationID}/users": {
      "parameters": [
        {
          "$ref": "#/components/parameters/OrganizationID"
        }
      ],
      "get": {
        "summary": "List Organization Users",
        "description": "Returns the list of users belonging to the specified organization.",
        "operationId": "GetOrganizationUsers",
        "tags": [
          "Organizations"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "OrganizationID": {
                      "type": "string"
                    },
                    "Users": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "UserID": {
                            "$ref": "#/components/schemas/UserID"
                          },
                          "Username": {
                            "type": "string"
                          },
                          "Role": {
                            "type": "string",
                            "enum": [
                              "Owner",
                              "Member"
                            ]
                          }
                        }
                      }
                    },
                    "Count": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Add User to Organization",
        "description": "Invites a user to join the specified organization, sending an invitation email.",
        "operationId": "AddOrganizationUser",
        "tags": [
          "Organizations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "Email"
                ],
                "properties": {
                  "Email": {
                    "type": "string",
                    "format": "email",
                    "description": "Email address of the user to invite."
                  },
                  "Role": {
                    "type": "string",
                    "enum": [
                      "Owner",
                      "Member"
                    ],
                    "description": "Role to assign to the user. Defaults to Member."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - User already in organization",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/organizations/{OrganizationID}/users/{UserID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/OrganizationID"
        },
        {
          "$ref": "#/components/parameters/UserID"
        }
      ],
      "patch": {
        "summary": "Update Organization User",
        "description": "Updates the role of a user within the specified organization.",
        "operationId": "UpdateOrganizationUser",
        "tags": [
          "Organizations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Role": {
                    "type": "string",
                    "enum": [
                      "Owner",
                      "Member"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Remove User from Organization",
        "description": "Removes the specified user from the organization.",
        "operationId": "RemoveOrganizationUser",
        "tags": [
          "Organizations"
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/health": {
      "get": {
        "summary": "Get system health status",
        "description": "Returns the health status of Signaloid Cloud services.\n\nThe health check system monitors:\n- Signaloid Cloud Developer Platform (SCDP)\n- Signaloid Cloud Compute Engine (SCCE) API\n- SCCE Compute Engine\n- SCCE Build Engine\n",
        "tags": [
          "Health"
        ],
        "responses": {
          "200": {
            "description": "System health status",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/healthStatus"
                    },
                    {
                      "$ref": "#/components/schemas/serviceHealth"
                    }
                  ]
                },
                "examples": {
                  "allServices": {
                    "value": {
                      "timestamp": "2025-05-16T13:55:25.605Z",
                      "services": [
                        {
                          "service": "scdp",
                          "status": "healthy",
                          "timestamp": "2025-05-16T13:55:13.205Z",
                          "details": {
                            "responseTime": 147
                          }
                        },
                        {
                          "service": "scce-api",
                          "status": "healthy",
                          "timestamp": "2025-05-16T13:54:55.718Z",
                          "details": {
                            "responseTime": 1103,
                            "endpoints": {
                              "builds": {
                                "status": 200,
                                "responseTime": 810
                              },
                              "tasks": {
                                "status": 200,
                                "responseTime": 182
                              }
                            }
                          }
                        },
                        {
                          "service": "scce-compute",
                          "status": "healthy",
                          "timestamp": "2025-05-16T13:45:51.347Z",
                          "details": {
                            "responseTime": 5660,
                            "taskStatus": {
                              "id": "tsk_54b1033f215343ecb714c687eee74220",
                              "status": "Completed",
                              "duration": 5506
                            }
                          }
                        },
                        {
                          "service": "scce-build",
                          "status": "healthy",
                          "timestamp": "2025-05-16T13:45:44.654Z",
                          "details": {
                            "responseTime": 14263,
                            "buildStatus": {
                              "id": "bld_2858641292e34c3186ae0058526fcccd",
                              "status": "Completed",
                              "duration": 14170
                            },
                            "repoBuildStatus": {
                              "id": "bld_765567fee84f4f47838ffee7e16c9ca7",
                              "status": "Completed",
                              "duration": 13423
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            },
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string"
                },
                "description": "CORS header"
              },
              "Content-Type": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "application/json"
                  ]
                },
                "description": "Response content type"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                },
                "example": {
                  "error": "Internal server error while fetching health check results"
                }
              }
            },
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string"
                }
              },
              "Content-Type": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "application/json"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/keys": {
      "get": {
        "summary": "List API Keys",
        "description": "Returns the list of API keys for the authenticated user.\n",
        "operationId": "ListKeys",
        "tags": [
          "Keys"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/keysGetReply"
                },
                "examples": {
                  "keysGetReply": {
                    "value": {
                      "UserID": "usr_000000000000000000000000000000ab",
                      "Keys": [
                        {
                          "Object": "Key",
                          "KeyID": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
                          "Name": "My API Key",
                          "Owner": "usr_000000000000000000000000000000ab",
                          "CreatedAt": 1698241879,
                          "ValidUntil": null
                        }
                      ],
                      "Count": 1
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create API Key",
        "description": "Creates a new API key for the authenticated user. The full API key is\nonly returned once upon creation and cannot be retrieved again.\n",
        "operationId": "CreateKey",
        "tags": [
          "Keys"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/keysPostRequest"
              },
              "examples": {
                "keysPostRequest": {
                  "value": {
                    "Name": "My New API Key",
                    "ValidUntil": 1735689600
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/keysPostReply"
                },
                "examples": {
                  "keysPostReply": {
                    "value": {
                      "Object": "Key",
                      "Key": "scce_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2_12345678",
                      "KeyID": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
                      "Name": "My New API Key",
                      "Owner": "usr_000000000000000000000000000000ab",
                      "ValidUntil": 1735689600,
                      "CreatedAt": 1698241879
                    }
                  }
                }
              }
            },
            "links": {
              "delete": {
                "operationId": "DeleteKey",
                "parameters": {
                  "KeyID": "$response.body#/KeyID"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "The 'Name' field is required. Please provide a string value."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Forbidden",
                      "message": "You have reached the API Key limit for your account. Please upgrade your account to create more keys."
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/keys/{KeyID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/KeyID"
        }
      ],
      "delete": {
        "summary": "Delete API Key",
        "description": "Deletes an API key for the authenticated user. The key will be\nimmediately invalidated and can no longer be used for authentication.\n",
        "operationId": "DeleteKey",
        "tags": [
          "Keys"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/keysDeleteReply"
                },
                "examples": {
                  "keysDeleteReply": {
                    "value": {
                      "message": "OK"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Bad Request",
                      "message": "The 'KeyID' path parameter is required."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "value": {
                      "error": "Not Found",
                      "message": "The requested API Key was not found."
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/InternalServerError"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/webhooks": {
      "post": {
        "summary": "Create a new webhook",
        "description": "Creates a new webhook endpoint for receiving event notifications.\n\n## Available Webhook Events\n\nThe infrastructure API supports webhook notifications for the following events:\n\n### 1. Task Status Changed (`task-status`)\nTriggered when a task's status changes through any of these states:\n- `Initializing` - Task is being set up\n- `In Progress` - Task is actively running\n- `Completed` - Task finished successfully\n- `Cancelled` - Task was cancelled by user\n- `Stopped` - Task was stopped by system\n- `Failed` - Task encountered an error\n\n**Payload includes:** `taskId`, `status`, `message`, and `updatedAt`.\n\n### 2. Build Status Changed (`build-status`)\nTriggered when a build's status changes through any of these states:\n- `Initializing` - Build is being set up\n- `In Progress` - Build is actively running\n- `Completed` - Build finished successfully\n- `Cancelled` - Build was cancelled by user\n- `Stopped` - Build was stopped by system\n- `Failed` - Build encountered an error\n\n**Payload includes:** `buildId`, `status`, `message`, and `updatedAt`.\n\n### 3. Task Count Changed (`task-count`)\nTriggered when a user's task count changes (tasks created or completed).\n\n**Payload includes:** `userId`, `IncrementTaskCount`, and `DecrementTaskCount`.\n\n### 4. Build Count Changed (`build-count`)\nTriggered when a user's build count changes (builds created or completed).\n\n**Payload includes:** `userId`, `IncrementBuildCount`, and `DecrementBuildCount`.\n\n### 5. Task Stats Changed (`task-stats`)\nTriggered when a user's task execution stats are updated.\n\n**Payload includes:** `userId`, `TotalDynamicInstructions`, and `TotalExecutionTime`.\n\n### 6. Build Stats Changed (`build-stats`)\nTriggered when a user's build stats are updated.\n\n**Payload includes:** `userId`, `TotalBuildSize`, and `TotalBuildTime`.\n\n## Webhook Payload Structure\n\nAll webhook payloads follow this consistent structure:\n\n```json\n{\n  \"version\": \"1.0\",\n  \"eventType\": \"task-status|build-status|task-count|build-count|task-stats|build-stats\",\n  \"userId\": \"usr_[32-char-alphanumeric]\",\n  \"timestamp\": \"2024-03-20T10:00:00Z\",\n  \"data\": {\n    // Event-specific data varies by event type\n  }\n}\n```\n\n## Security\n\n- All webhooks include a signature header for verification\n- Webhooks support retry logic for failed deliveries\n- Rate limiting applies to webhook deliveries\n",
        "operationId": "CreateWebhook",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Webhook created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "error": "Bad Request",
                  "message": "URL and at least one event are required"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "List all webhooks",
        "description": "Retrieves a list of all webhooks for the authenticated user",
        "operationId": "ListWebhooks",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "List of webhooks retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookList"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/builds/{BuildID}/tasks/public": {
      "parameters": [
        {
          "$ref": "#/components/parameters/BuildID"
        }
      ],
      "post": {
        "summary": "Open (authentication-free) Create Task from Build",
        "description": "Creates a new task from a publicly accessible build. You can use this endpoint only with builds marked as public and does not require authorization.\n",
        "operationId": "CreatePublicBuildTask",
        "security": [],
        "tags": [
          "Builds"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Arguments": {
                    "type": "string",
                    "description": "Command-line arguments to pass to the application.\nDefaults to the Build's `DefaultArguments`, or to the\nempty string if the Build does not define any.\n"
                  },
                  "DataSources": {
                    "type": "array",
                    "minItems": 0,
                    "maxItems": 5,
                    "items": {
                      "$ref": "#/components/schemas/DataSource"
                    },
                    "description": "Data sources to attach to the Task. Defaults to the\nBuild's `DefaultDataSources`, or to an empty list if the\nBuild does not define any.\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "TaskID": {
                      "$ref": "#/components/schemas/TaskID"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - Resource limits reached",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/{WebhookID}": {
      "parameters": [
        {
          "name": "WebhookID",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "The webhook ID"
        }
      ],
      "get": {
        "summary": "Get a webhook",
        "description": "Retrieves details of a specific webhook.",
        "operationId": "GetWebhook",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Webhook details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Webhook not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a webhook",
        "description": "Updates the configuration of an existing webhook.",
        "operationId": "UpdateWebhook",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Webhook not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a webhook",
        "description": "Deletes a webhook endpoint.",
        "operationId": "DeleteWebhook",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "204": {
            "description": "Webhook deleted successfully"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/UnauthorizedError"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Webhook not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/realtime": {
      "get": {
        "tags": [
          "WebSockets"
        ],
        "summary": "WebSockets",
        "description": "WebSocket connections to receive real-time events.\nThis is a WebSocket-only endpoint that supports both JWT and API Key authentication.\n\n## Available Channels\n\nThe infrastructure API supports real-time events through the following channels:\n\n### 1. Build Status (`build-status/{userId}`)\nNotifies about build lifecycle state changes:\n- `Accepted` - Build request has been accepted\n- `Initializing` - Build environment is being set up\n- `In Progress` - Build is actively running\n- `Rescheduled` - Build has been rescheduled\n- `Completed` - Build finished successfully\n- `Cancelled` - Build was cancelled by user\n- `Stopped` - Build was stopped by system\n\n**Payload includes:** `buildId`, `status`, `message`, and `timestamp`.\n\n### 2. Task Status (`task-status/{userId}`)\nNotifies about task lifecycle state changes:\n- `Accepted` - Task request has been accepted\n- `Initializing` - Task environment is being set up\n- `In Progress` - Task is actively running\n- `Rescheduled` - Task has been rescheduled\n- `Completed` - Task finished successfully\n- `Cancelled` - Task was cancelled by user\n- `Stopped` - Task was stopped by system\n\n**Payload includes:** `taskId`, `status`, `message`, and `timestamp`.\n\n### 3. Build Stats (`build-stats/{userId}`)\nProvides build stats updates:\n- `TotalBuildSize` - Size of the build in bytes\n- `TotalBuildTime` - Total build time in seconds\n\n**Payload includes:** `buildId`, `TotalBuildSize`, and `TotalBuildTime`.\n\n### 4. Task Stats (`task-stats/{userId}`)\nProvides task stats updates:\n- `TotalDynamicInstructions` - Number of dynamic instructions executed\n- `TotalExecutionTime` - Total execution time in milliseconds\n\n**Payload includes:** `taskId`, `TotalDynamicInstructions`, and `TotalExecutionTime`.\n\n### 5. Build Count (`build-count/{userId}`)\nUpdates about build count changes:\n- `IncrementBuildCount` - Number of builds added\n- `DecrementBuildCount` - Number of builds removed\n\n**Payload includes:** `userId`, `IncrementBuildCount`, and `DecrementBuildCount`.\n\n### 6. Task Count (`task-count/{userId}`)\nUpdates about task count changes:\n- `IncrementTaskCount` - Number of tasks added\n- `DecrementTaskCount` - Number of tasks removed\n\n**Payload includes:** `userId`, `IncrementTaskCount`, and `DecrementTaskCount`.\n\n## Channel ID Helper\nUse the following helper function to extract the correct portion of IDs:\n```javascript\nfunction idToChannel(signaloidUserId) {\n    return id.split(\"_\")[1];\n}\n```\n\n## Connection Protocol\n1. Connect with authorization header\n2. Send connection_init message\n3. Receive connection_ack\n4. Subscribe to channels\n\n## Authentication\nThe WebSocket endpoint must be configured with a valid API key or JWT token.\nAll messages are signed for verification.\n\n## Message Structure\nAll WebSocket messages follow this consistent structure:\n```json\n{\n  \"type\": \"connection_init|connection_ack|subscribe|subscribe_success|data|error|ka\",\n  \"id\": \"123e4567-e89b-12d3-a456-426614174000\",\n  \"channel\": \"builds/bld_123/status\",\n  \"payload\": {\n    // Channel-specific data varies by event type\n  }\n}\n```\n## Quick Start (Node.js)\n\n```js\nconst WebSocket = require(\"ws\");\nconst { v4: uuidv4 } = require(\"uuid\");\n\nconst HTTP_DOMAIN = \"realtime.signaloid.io\";\nconst REALTIME_ENDPOINT = \"wss://realtime.signaloid.io/event/realtime\";\nconst SIGNALOID_API_KEY = \"scce_xxx\";\nconst USER_ID = \"usr_xxx\";\n\nfunction getBase64URLEncoded(obj) {\n  return Buffer.from(JSON.stringify(obj)).toString(\"base64\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\nfunction getAuthProtocol() {\n  const header = getBase64URLEncoded({ host: HTTP_DOMAIN, authorization: SIGNALOID_API_KEY });\n  return [`header-${header}`, \"aws-appsync-event-ws\"];\n}\n\nfunction idToChannel(id) { return id.split(\"_\")[1]; }\n\nlet ws = null; \nlet ready = false;\n\nfunction subscribe(channel) {\n  if (!ws || !ready) return;\n  ws.send(JSON.stringify({\n    id: uuidv4(),\n    type: \"subscribe\",\n    channel,\n    authorization: { host: HTTP_DOMAIN, authorization: SIGNALOID_API_KEY }\n  }));\n  console.log(\"Subscribed:\", channel);\n}\n\nasync function connect() {\n  return new Promise((resolve, reject) => {\n    ws = new WebSocket(REALTIME_ENDPOINT, getAuthProtocol());\n    ws.on(\"open\", () => ws.send(JSON.stringify({ type: \"connection_init\" })));\n    ws.on(\"message\", (buf) => {\n      const msg = JSON.parse(buf.toString());\n      if (msg.type === \"connection_ack\") {\n        ready = true;\n        const uid = idToChannel(USER_ID);\n        subscribe(`build-status/${uid}`);\n        subscribe(`task-status/${uid}`);\n        subscribe(`build-stats/${uid}`);\n        subscribe(`task-stats/${uid}`);\n        subscribe(`build-count/${uid}`);\n        subscribe(`task-count/${uid}`);\n        resolve();\n      }\n      if (msg.type === \"data\") console.log(\"Event:\", msg.payload || msg.event || msg);\n    });\n    ws.on(\"error\", reject);\n  });\n}\n\n(async () => { await connect(); })();\n```\n",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "ApiKey": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Authorization",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Base64 URL encoded authorization header. Format:\n{\n  \"host\": \"realtime.signaloid.io\",\n  \"authorization\": \"Bearer <jwt_token>\" or \"scce_<api_key>\"\n}\n"
          },
          {
            "in": "header",
            "name": "Sec-WebSocket-Protocol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "WebSocket protocol header. Must include:\n- header-{base64_encoded_auth}\n- aws-appsync-event-ws\n"
          }
        ],
        "responses": {
          "101": {
            "description": "WebSocket connection established",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebSocketMessage"
                },
                "examples": {
                  "connection_init": {
                    "value": {
                      "type": "connection_init"
                    }
                  },
                  "connection_ack": {
                    "value": {
                      "type": "connection_ack"
                    }
                  },
                  "subscribe": {
                    "value": {
                      "type": "subscribe",
                      "id": "123e4567-e89b-12d3-a456-426614174000",
                      "channel": "builds/bld_123/status"
                    }
                  },
                  "subscribe_success": {
                    "value": {
                      "type": "subscribe_success",
                      "id": "123e4567-e89b-12d3-a456-426614174000"
                    }
                  },
                  "build_status": {
                    "value": {
                      "type": "data",
                      "payload": {
                        "$ref": "#/components/schemas/BuildStatusEvent"
                      }
                    }
                  },
                  "task_status": {
                    "value": {
                      "type": "data",
                      "payload": {
                        "$ref": "#/components/schemas/TaskStatusEvent"
                      }
                    }
                  },
                  "user_metadata": {
                    "value": {
                      "type": "data",
                      "payload": {
                        "$ref": "#/components/schemas/UserMetadataEvent"
                      }
                    }
                  },
                  "error": {
                    "value": {
                      "type": "error",
                      "errors": [
                        {
                          "message": "Authentication failed"
                        }
                      ]
                    }
                  },
                  "keep_alive": {
                    "value": {
                      "type": "ka"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/public.realtime": {
      "x-appsync": {
        "api_name": "SignaloidPublicRealtimeApi-{ENV}",
        "endpoint_ws": "wss://{public_api_id}.appsync-realtime-api.{region}.amazonaws.com/event"
      },
      "get": {
        "tags": [
          "WebSockets"
        ],
        "summary": "WebSockets Public",
        "description": "WebSocket connections to receive real-time events.\n\n## Available Channels\n\nThe infrastructure API supports real-time events through the following channels:\n\n### Public Task Status (`public-task-status/{taskId}`)\nNotifies about task lifecycle state changes:\n- `Accepted` - Task request has been accepted\n- `Initializing` - Task environment is being set up\n- `In Progress` - Task is actively running\n- `Rescheduled` - Task has been rescheduled\n- `Completed` - Task finished successfully\n- `Cancelled` - Task was cancelled by user\n- `Stopped` - Task was stopped by system\n\n**Payload includes:** `taskId`, `status`, `message`, and `timestamp`.\n\n### Public Build Status (`public-build-status/{buildId}`)\nNotifies about build lifecycle state changes.\n\n**Payload includes:** `buildId`, `status`, `message`, and `timestamp`.\n\n### Public Task Stats (`public-task-stats/{taskId}`)\nNotifies about task execution metric updates.\n\n**Payload includes:** `taskId`, `TotalDynamicInstructions`, `TotalExecutionTime`.\n\n### Public Build Stats (`public-build-stats/{buildId}`)\nNotifies about build metric updates.\n\n**Payload includes:** `buildId`, `TotalBuildSize`, `TotalBuildTime`.\n\n### Public Task Count (`public-task-count/{userId}`)\nNotifies about changes to a user's running task count.\n\n### Public Build Count (`public-build-count/{userId}`)\nNotifies about changes to a user's running build count.\n\n## Channel ID Helper\nUse the following helper function to extract the correct portion of IDs:\n```javascript\nfunction idToChannel(signaloidUserId) {\n    return id.split(\"_\")[1];\n}\n```\n\n## Connection Protocol\n1. Connect with authorization header\n2. Send connection_init message\n3. Receive connection_ack\n4. Subscribe to channels\n\n## Message Structure\nAll WebSocket messages follow this consistent structure:\n```json\n{\n  \"type\": \"connection_init|connection_ack|subscribe|subscribe_success|data|error|ka\",\n  \"id\": \"123e4567-e89b-12d3-a456-426614174000\",\n  \"channel\": \"builds/bld_123/status\",\n  \"payload\": {\n    // Channel-specific data varies by event type\n  }\n}\n```\n## Quick Start (Node.js)\n\n```js\nconst WebSocket = require(\"ws\");\nconst { v4: uuidv4 } = require(\"uuid\");\n\nconst HTTP_DOMAIN = \"public.realtime.signaloid.io\";\nconst REALTIME_ENDPOINT = \"wss://public.realtime.signaloid.io/event/realtime\";\nconst TASK_ID = \"tsk_xxx\";\nconst SIGNALOID_API_KEY = \"scce_xxx\";\n\nfunction getBase64URLEncoded(obj) {\n  return Buffer.from(JSON.stringify(obj)).toString(\"base64\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\nfunction getAuthProtocol() {\n  const header = getBase64URLEncoded({ host: HTTP_DOMAIN, authorization: \"public\" });\n  return [`header-${header}`, \"aws-appsync-event-ws\"];\n}\n\nfunction idToChannel(id) { return id.split(\"_\")[1]; }\n\nlet ws = null; \nlet ready = false;\n\nfunction subscribe(channel) {\n  if (!ws || !ready) return;\n  ws.send(JSON.stringify({\n    id: uuidv4(),\n    type: \"subscribe\",\n    channel,\n    authorization: { host: HTTP_DOMAIN, authorization: \"public\" }\n  }));\n  console.log(\"Subscribed:\", channel);\n}\n\nasync function connect() {\n  return new Promise((resolve, reject) => {\n    ws = new WebSocket(REALTIME_ENDPOINT, getAuthProtocol());\n    ws.on(\"open\", () => ws.send(JSON.stringify({ type: \"connection_init\" })));\n    ws.on(\"message\", (buf) => {\n      const msg = JSON.parse(buf.toString());\n      if (msg.type === \"connection_ack\") {\n        ready = true;\n        const taskId = idToChannel(TASK_ID);\n        subscribe(`task-status/${taskId}`);\n        resolve();\n      }\n      if (msg.type === \"data\") console.log(\"Event:\", msg.payload || msg.event || msg);\n    });\n    ws.on(\"error\", reject);\n  });\n}\n\n(async () => { await connect(); })();\n```\n",
        "parameters": [
          {
            "in": "header",
            "name": "Authorization",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Base64 URL encoded authorization header. Format:\n{\n  \"host\": \"public.realtime.signaloid.io\",\n  \"authorization\": \"public\"\n}\n"
          },
          {
            "in": "header",
            "name": "Sec-WebSocket-Protocol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "WebSocket protocol header. Must include:\n- header-{base64_encoded_auth}\n- aws-appsync-event-ws\n"
          }
        ],
        "responses": {
          "101": {
            "description": "WebSocket connection established",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebSocketMessage"
                },
                "examples": {
                  "connection_init": {
                    "value": {
                      "type": "connection_init"
                    }
                  },
                  "connection_ack": {
                    "value": {
                      "type": "connection_ack"
                    }
                  },
                  "subscribe": {
                    "value": {
                      "type": "subscribe",
                      "id": "123e4567-e89b-12d3-a456-426614174000",
                      "channel": "builds/bld_123/status"
                    }
                  },
                  "subscribe_success": {
                    "value": {
                      "type": "subscribe_success",
                      "id": "123e4567-e89b-12d3-a456-426614174000"
                    }
                  },
                  "task_status": {
                    "value": {
                      "type": "data",
                      "payload": {
                        "$ref": "#/components/schemas/TaskStatusEvent"
                      }
                    }
                  },
                  "keep_alive": {
                    "value": {
                      "type": "ka"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "x-webhooks": {
    "taskStatusChanged": {
      "post": {
        "summary": "Task Status Changed",
        "tags": [
          "Webhooks"
        ],
        "description": "Sent when the status of a task changes. This webhook is triggered for all task status transitions.\n\n## Event Types\n- Initializing\n- In Progress\n- Completed\n- Cancelled\n- Stopped\n- Failed\n\n## Authentication\nThe webhook endpoint must be configured with a valid API key or JWT token.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "version",
                  "eventType",
                  "userId",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "version": {
                    "type": "string",
                    "description": "Webhook payload version",
                    "example": "1.0"
                  },
                  "eventType": {
                    "type": "string",
                    "description": "Type of the event",
                    "example": "task-status"
                  },
                  "userId": {
                    "type": "string",
                    "description": "ID of the user who owns the task",
                    "pattern": "^usr_[a-zA-Z0-9]{32}$",
                    "example": "usr_1234567890abcdef1234567890abcdef"
                  },
                  "timestamp": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Time when the event occurred",
                    "example": "2024-03-20T10:00:00Z"
                  },
                  "data": {
                    "type": "object",
                    "required": [
                      "taskId",
                      "status"
                    ],
                    "properties": {
                      "taskId": {
                        "type": "string",
                        "pattern": "^tsk_[a-zA-Z0-9]{32}$",
                        "example": "tsk_1234567890abcdef1234567890abcdef"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "Initializing",
                          "In Progress",
                          "Completed",
                          "Cancelled",
                          "Stopped",
                          "Failed"
                        ],
                        "example": "In Progress"
                      },
                      "message": {
                        "type": "string",
                        "description": "Optional status message",
                        "example": "Task started successfully"
                      },
                      "updatedAt": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2024-03-20T10:00:00Z"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook processed successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid authentication"
          },
          "403": {
            "description": "Forbidden - Invalid API key or token"
          },
          "429": {
            "description": "Too Many Requests - Rate limit exceeded"
          }
        }
      }
    },
    "buildStatusChanged": {
      "post": {
        "summary": "Build Status Changed",
        "tags": [
          "Webhooks"
        ],
        "description": "Sent when the status of a build changes. This webhook is triggered for all build status transitions.\n\n## Event Types\n- Initializing\n- In Progress\n- Completed\n- Cancelled\n- Stopped\n- Failed\n\n## Authentication\nThe webhook endpoint must be configured with a valid API key or JWT token.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "version",
                  "eventType",
                  "userId",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "version": {
                    "type": "string",
                    "description": "Webhook payload version",
                    "example": "1.0"
                  },
                  "eventType": {
                    "type": "string",
                    "description": "Type of the event",
                    "example": "build-status"
                  },
                  "userId": {
                    "type": "string",
                    "description": "ID of the user who owns the build",
                    "pattern": "^usr_[a-zA-Z0-9]{32}$",
                    "example": "usr_1234567890abcdef1234567890abcdef"
                  },
                  "timestamp": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Time when the event occurred",
                    "example": "2024-03-20T10:00:00Z"
                  },
                  "data": {
                    "type": "object",
                    "required": [
                      "buildId",
                      "status"
                    ],
                    "properties": {
                      "buildId": {
                        "type": "string",
                        "pattern": "^bld_[a-zA-Z0-9]{32}$",
                        "example": "bld_1234567890abcdef1234567890abcdef"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "Initializing",
                          "In Progress",
                          "Completed",
                          "Cancelled",
                          "Stopped",
                          "Failed"
                        ],
                        "example": "In Progress"
                      },
                      "message": {
                        "type": "string",
                        "description": "Optional status message",
                        "example": "Build started successfully"
                      },
                      "updatedAt": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2024-03-20T10:00:00Z"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook processed successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid authentication"
          },
          "403": {
            "description": "Forbidden - Invalid API key or token"
          },
          "429": {
            "description": "Too Many Requests - Rate limit exceeded"
          }
        }
      }
    },
    "taskCountChanged": {
      "post": {
        "summary": "Task Count Changed",
        "tags": [
          "Webhooks"
        ],
        "description": "Sent when a user's task count changes. This webhook is triggered when tasks are created or completed.\n\n## Authentication\nThe webhook endpoint must be configured with a valid API key or JWT token.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "version",
                  "eventType",
                  "userId",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "version": {
                    "type": "string",
                    "description": "Webhook payload version",
                    "example": "1.0"
                  },
                  "eventType": {
                    "type": "string",
                    "description": "Type of the event",
                    "example": "task-count"
                  },
                  "userId": {
                    "type": "string",
                    "description": "ID of the user whose task count changed",
                    "pattern": "^usr_[a-zA-Z0-9]{32}$",
                    "example": "usr_1234567890abcdef1234567890abcdef"
                  },
                  "timestamp": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Time when the event occurred",
                    "example": "2024-03-20T10:00:00Z"
                  },
                  "data": {
                    "type": "object",
                    "required": [
                      "UserID",
                      "Object",
                      "ResourceUsage"
                    ],
                    "properties": {
                      "UserID": {
                        "type": "string",
                        "pattern": "^usr_[a-zA-Z0-9]{32}$",
                        "example": "usr_1234567890abcdef1234567890abcdef"
                      },
                      "Object": {
                        "type": "string",
                        "example": "User"
                      },
                      "ResourceUsage": {
                        "type": "object",
                        "required": [
                          "IncrementTaskCount",
                          "DecrementTaskCount"
                        ],
                        "properties": {
                          "IncrementTaskCount": {
                            "type": "integer",
                            "description": "Number of tasks added",
                            "example": 1
                          },
                          "DecrementTaskCount": {
                            "type": "integer",
                            "description": "Number of tasks completed/cancelled",
                            "example": 0
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook processed successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid authentication"
          },
          "403": {
            "description": "Forbidden - Invalid API key or token"
          },
          "429": {
            "description": "Too Many Requests - Rate limit exceeded"
          }
        }
      }
    },
    "buildCountChanged": {
      "post": {
        "summary": "Build Count Changed",
        "tags": [
          "Webhooks"
        ],
        "description": "Sent when a user's build count changes. This webhook is triggered when builds are created or completed.\n\n## Authentication\nThe webhook endpoint must be configured with a valid API key or JWT token.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "version",
                  "eventType",
                  "userId",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "version": {
                    "type": "string",
                    "description": "Webhook payload version",
                    "example": "1.0"
                  },
                  "eventType": {
                    "type": "string",
                    "description": "Type of the event",
                    "example": "build-count"
                  },
                  "userId": {
                    "type": "string",
                    "description": "ID of the user whose build count changed",
                    "pattern": "^usr_[a-zA-Z0-9]{32}$",
                    "example": "usr_1234567890abcdef1234567890abcdef"
                  },
                  "timestamp": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Time when the event occurred",
                    "example": "2024-03-20T10:00:00Z"
                  },
                  "data": {
                    "type": "object",
                    "required": [
                      "UserID",
                      "Object",
                      "ResourceUsage"
                    ],
                    "properties": {
                      "UserID": {
                        "type": "string",
                        "pattern": "^usr_[a-zA-Z0-9]{32}$",
                        "example": "usr_1234567890abcdef1234567890abcdef"
                      },
                      "Object": {
                        "type": "string",
                        "example": "User"
                      },
                      "ResourceUsage": {
                        "type": "object",
                        "required": [
                          "IncrementBuildCount",
                          "DecrementBuildCount"
                        ],
                        "properties": {
                          "IncrementBuildCount": {
                            "type": "integer",
                            "description": "Number of builds added",
                            "example": 1
                          },
                          "DecrementBuildCount": {
                            "type": "integer",
                            "description": "Number of builds completed/cancelled",
                            "example": 0
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook processed successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid authentication"
          },
          "403": {
            "description": "Forbidden - Invalid API key or token"
          },
          "429": {
            "description": "Too Many Requests - Rate limit exceeded"
          }
        }
      }
    },
    "taskStatsChanged": {
      "post": {
        "summary": "Task Stats Changed",
        "tags": [
          "Webhooks"
        ],
        "description": "Sent when a user's task stats are updated. This webhook is triggered when task execution metrics change.\n\n## Authentication\nThe webhook endpoint must be configured with a valid API key or JWT token.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "version",
                  "eventType",
                  "userId",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "version": {
                    "type": "string",
                    "description": "Webhook payload version",
                    "example": "1.0"
                  },
                  "eventType": {
                    "type": "string",
                    "description": "Type of the event",
                    "example": "task-stats"
                  },
                  "userId": {
                    "type": "string",
                    "description": "ID of the user whose task stats changed",
                    "pattern": "^usr_[a-zA-Z0-9]{32}$",
                    "example": "usr_1234567890abcdef1234567890abcdef"
                  },
                  "timestamp": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Time when the event occurred",
                    "example": "2024-03-20T10:00:00Z"
                  },
                  "data": {
                    "type": "object",
                    "required": [
                      "UserID",
                      "Object",
                      "ResourceUsage"
                    ],
                    "properties": {
                      "UserID": {
                        "type": "string",
                        "pattern": "^usr_[a-zA-Z0-9]{32}$",
                        "example": "usr_1234567890abcdef1234567890abcdef"
                      },
                      "Object": {
                        "type": "string",
                        "example": "User"
                      },
                      "ResourceUsage": {
                        "type": "object",
                        "required": [
                          "TotalDynamicInstructions",
                          "TotalExecutionTime"
                        ],
                        "properties": {
                          "TotalDynamicInstructions": {
                            "type": "integer",
                            "description": "Total number of dynamic instructions executed",
                            "example": 1000000
                          },
                          "TotalExecutionTime": {
                            "type": "integer",
                            "description": "Total execution time in milliseconds",
                            "example": 5000
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook processed successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid authentication"
          },
          "403": {
            "description": "Forbidden - Invalid API key or token"
          },
          "429": {
            "description": "Too Many Requests - Rate limit exceeded"
          }
        }
      }
    },
    "buildStatsChanged": {
      "post": {
        "summary": "Build Stats Changed",
        "tags": [
          "Webhooks"
        ],
        "description": "Sent when a user's build stats are updated. This webhook is triggered when build metrics like size and time change.\n\n## Authentication\nThe webhook endpoint must be configured with a valid API key or JWT token.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "version",
                  "eventType",
                  "userId",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "version": {
                    "type": "string",
                    "description": "Webhook payload version",
                    "example": "1.0"
                  },
                  "eventType": {
                    "type": "string",
                    "description": "Type of the event",
                    "example": "build-stats"
                  },
                  "userId": {
                    "type": "string",
                    "description": "ID of the user whose build stats changed",
                    "pattern": "^usr_[a-zA-Z0-9]{32}$",
                    "example": "usr_1234567890abcdef1234567890abcdef"
                  },
                  "timestamp": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Time when the event occurred",
                    "example": "2024-03-20T10:00:00Z"
                  },
                  "data": {
                    "type": "object",
                    "required": [
                      "UserID",
                      "Object",
                      "ResourceUsage"
                    ],
                    "properties": {
                      "UserID": {
                        "type": "string",
                        "pattern": "^usr_[a-zA-Z0-9]{32}$",
                        "example": "usr_1234567890abcdef1234567890abcdef"
                      },
                      "Object": {
                        "type": "string",
                        "example": "User"
                      },
                      "ResourceUsage": {
                        "type": "object",
                        "required": [
                          "TotalBuildSize",
                          "TotalBuildTime"
                        ],
                        "properties": {
                          "TotalBuildSize": {
                            "type": "integer",
                            "description": "Total size of builds in bytes",
                            "example": 1048576
                          },
                          "TotalBuildTime": {
                            "type": "integer",
                            "description": "Total build time in milliseconds",
                            "example": 5000
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook processed successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid authentication"
          },
          "403": {
            "description": "Forbidden - Invalid API key or token"
          },
          "429": {
            "description": "Too Many Requests - Rate limit exceeded"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "ApiKey": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
      }
    },
    "parameters": {
      "UserID": {
        "name": "UserID",
        "description": "The identifier of the User resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/UserID"
        },
        "required": true
      },
      "bucketID": {
        "name": "bucketID",
        "description": "The identifier of the Bucket resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/bucketID"
        },
        "required": true
      },
      "CoreID": {
        "name": "CoreID",
        "description": "The identifier of the Core resource.",
        "in": "path",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/CoreID"
        }
      },
      "RepositoryID": {
        "name": "RepositoryID",
        "description": "The identifier of the connected Repository resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/RepositoryID"
        },
        "required": true
      },
      "PipelineID": {
        "name": "PipelineID",
        "description": "The identifier of the Pipeline resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/PipelineID"
        },
        "required": true
      },
      "BuildID": {
        "name": "BuildID",
        "description": "The identifier of the Build resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/BuildID"
        },
        "required": true
      },
      "TaskID": {
        "name": "TaskID",
        "description": "The identifier of the Task resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/TaskID"
        },
        "required": true
      },
      "ValueID": {
        "name": "ValueID",
        "description": "The identifier of the Value resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/valueID"
        },
        "required": true
      },
      "driveID": {
        "name": "driveID",
        "description": "The identifier of the Drive resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/driveID"
        },
        "required": true
      },
      "thingID": {
        "name": "thingID",
        "description": "The identifier of the Thing resource.",
        "in": "path",
        "schema": {
          "$ref": "#/components/schemas/thingID"
        },
        "required": true
      },
      "path": {
        "name": "path",
        "description": "path (file/directory)",
        "in": "path",
        "schema": {
          "type": "string"
        },
        "required": true
      },
      "KeyID": {
        "name": "KeyID",
        "description": "The identifier of the API Key resource.",
        "in": "path",
        "schema": {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        "required": true
      },
      "OrganizationID": {
        "name": "OrganizationID",
        "description": "The identifier of the Organization resource.",
        "in": "path",
        "schema": {
          "type": "string"
        },
        "required": true
      }
    },
    "schemas": {
      "bucketGetReply": {
        "type": "object",
        "properties": {
          "bucket_count": {
            "type": "integer",
            "minimum": 0
          },
          "bucket_ids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/bucketID"
            }
          },
          "user_id": {
            "$ref": "#/components/schemas/UserID"
          }
        },
        "required": [
          "bucket_count",
          "bucket_ids",
          "user_id"
        ]
      },
      "bucketPostRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string"
          },
          "Account": {
            "type": "string"
          },
          "MountPath": {
            "type": "string",
            "default": "/",
            "description": "Where the bucket is mounted inside the execution environment.\nDefaults to `/`. An empty string is also stored as `/`.\n"
          },
          "Read": {
            "type": "boolean",
            "default": true,
            "description": "Whether the bucket is readable from the execution environment.\nDefaults to `true`.\n"
          },
          "Write": {
            "type": "boolean",
            "default": false,
            "description": "Whether the bucket is writable from the execution environment.\nDefaults to `false`.\n"
          }
        },
        "required": [
          "Name",
          "Account"
        ]
      },
      "bucketPatchRequest": {
        "type": "object",
        "description": "Partial update. Only the fields present in the request body are\nmodified; omitted fields are left unchanged, and no defaults are\napplied. At least one field must be present, otherwise the request is\nrejected with `400 Bad Request`.\n",
        "minProperties": 1,
        "properties": {
          "Name": {
            "type": "string"
          },
          "Account": {
            "type": "string"
          },
          "MountPath": {
            "type": "string"
          },
          "Read": {
            "type": "boolean"
          },
          "Write": {
            "type": "boolean"
          }
        }
      },
      "bucketPostReply": {
        "type": "object",
        "properties": {
          "Object": {
            "allOf": [
              {
                "$ref": "#/components/schemas/objectType"
              },
              {
                "type": "string",
                "enum": [
                  "Bucket"
                ]
              }
            ]
          },
          "BucketID": {
            "$ref": "#/components/schemas/bucketID"
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "CreatedAt": {
            "type": "integer",
            "minimum": 0
          },
          "UpdatedAt": {
            "type": "integer",
            "minimum": 0
          },
          "Name": {
            "type": "string"
          },
          "Account": {
            "type": "string"
          },
          "MountPath": {
            "type": "string"
          },
          "Read": {
            "type": "boolean"
          },
          "Write": {
            "type": "boolean"
          }
        },
        "required": [
          "Object",
          "BucketID",
          "Owner",
          "CreatedAt",
          "UpdatedAt",
          "Name",
          "Account",
          "MountPath",
          "Read",
          "Write"
        ]
      },
      "driveGetReply": {
        "type": "object",
        "properties": {
          "drive_count": {
            "type": "integer",
            "minimum": 0
          },
          "drive_ids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/driveID"
            }
          },
          "user_id": {
            "$ref": "#/components/schemas/UserID"
          }
        },
        "required": [
          "drive_count",
          "drive_ids",
          "user_id"
        ]
      },
      "thingsGetReply": {
        "type": "object",
        "properties": {
          "thing_count": {
            "type": "integer",
            "minimum": 0
          },
          "thing_ids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/thingID"
            }
          },
          "user_id": {
            "$ref": "#/components/schemas/UserID"
          }
        },
        "required": [
          "thing_count",
          "thing_ids",
          "user_id"
        ]
      },
      "thingProfile": {
        "type": "object",
        "properties": {
          "CreatedAt": {
            "type": "integer",
            "minimum": 0
          },
          "Name": {
            "type": "string"
          },
          "Object": {
            "allOf": [
              {
                "$ref": "#/components/schemas/objectType"
              },
              {
                "type": "string",
                "enum": [
                  "Thing"
                ]
              }
            ]
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "ThingID": {
            "$ref": "#/components/schemas/thingID"
          },
          "ThingStatus": {
            "type": "object",
            "properties": {
              "local_ipv4_address": {
                "type": "string",
                "format": "ipv4"
              },
              "updated_at": {
                "type": "integer",
                "minimum": 0
              }
            }
          },
          "Topics": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "UpdatedAt": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "CreatedAt",
          "Name",
          "Object",
          "Owner",
          "ThingID",
          "ThingStatus",
          "Topics",
          "UpdatedAt"
        ]
      },
      "thingFileList": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "thing_id": {
            "$ref": "#/components/schemas/thingID"
          },
          "user_id": {
            "$ref": "#/components/schemas/UserID"
          }
        },
        "required": [
          "items",
          "thing_id",
          "user_id"
        ]
      },
      "userProfile": {
        "type": "object",
        "properties": {
          "CreatedAt": {
            "type": "integer"
          },
          "Object": {
            "allOf": [
              {
                "$ref": "#/components/schemas/objectType"
              },
              {
                "type": "string",
                "enum": [
                  "User"
                ]
              }
            ]
          },
          "Preferences": {
            "type": "object",
            "properties": {
              "Editor_Compilation_Flags": {
                "type": "string"
              },
              "Editor_Execution_Arguments": {
                "type": "string"
              },
              "Editor_Execution_CodeLanguage": {
                "type": "string"
              },
              "Editor_Execution_Core": {
                "type": "string"
              },
              "Editor_Execution_DataSources": {
                "type": "string"
              },
              "Editor_Layout": {
                "type": "string"
              },
              "Editor_Layout_VariableViewer": {
                "description": "Whether the variable viewer pane is shown in the editor. The\nAPI stores whichever JSON type is sent, so this may be either\na boolean or its string form.\n",
                "oneOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "Editor_SourceCode": {
                "type": "string"
              },
              "Editor_Theme": {
                "type": "string"
              },
              "Execution_DefaultDataSources": {
                "type": "string"
              },
              "Execution_DefaultCore": {
                "type": "string"
              },
              "Execution_DefaultReferenceCore": {
                "type": "string",
                "description": "The `CoreID` of the Core used by default for Reference Core\nruns.\n"
              },
              "PlatformTheme": {
                "type": "string"
              },
              "UpdatedAt": {
                "type": "integer"
              }
            }
          },
          "ResourceUsage": {
            "type": "object",
            "properties": {
              "APIAccessCount": {
                "type": "integer",
                "minimum": 0
              },
              "BucketCount": {
                "type": "integer",
                "minimum": 0
              },
              "CloudStorageBytes": {
                "type": "integer",
                "minimum": 0
              },
              "DataDriveCount": {
                "type": "integer",
                "minimum": 0
              },
              "DynamicInstructionCount": {
                "type": "integer",
                "minimum": 0
              },
              "GatewayCount": {
                "type": "integer",
                "minimum": 0
              },
              "ConcurrentTaskCount": {
                "type": "integer",
                "minimum": 0
              },
              "CoreCount": {
                "type": "integer",
                "minimum": 0
              },
              "DataSourceCount": {
                "type": "integer",
                "minimum": 0
              },
              "KeyCount": {
                "type": "integer",
                "minimum": 0
              },
              "PlotCount": {
                "type": "integer",
                "minimum": 0
              },
              "RepositoryCount": {
                "type": "integer",
                "minimum": 0
              },
              "TaskCount": {
                "type": "integer",
                "minimum": 0
              },
              "ResetsAt": {
                "type": "integer"
              },
              "UpdatedAt": {
                "type": "integer"
              }
            },
            "required": [
              "APIAccessCount",
              "BucketCount",
              "CloudStorageBytes",
              "ConcurrentTaskCount",
              "CoreCount",
              "DataDriveCount",
              "DataSourceCount",
              "DynamicInstructionCount",
              "GatewayCount",
              "KeyCount",
              "PlotCount",
              "RepositoryCount",
              "ResetsAt",
              "TaskCount",
              "UpdatedAt"
            ]
          },
          "UserID": {
            "$ref": "#/components/schemas/UserID"
          },
          "Username": {
            "type": "string",
            "format": "email"
          }
        },
        "required": [
          "CreatedAt",
          "Object",
          "Preferences",
          "ResourceUsage",
          "UserID",
          "Username"
        ]
      },
      "drivePostRequest": {
        "type": "object",
        "properties": {
          "DataSources": {
            "$ref": "#/components/schemas/DataSources"
          },
          "Name": {
            "type": "string"
          }
        },
        "required": [
          "DataSources",
          "Name"
        ]
      },
      "drivePatchRequest": {
        "type": "object",
        "description": "Partial update. Only the fields present in the request body are\nmodified; omitted fields are left unchanged, and no defaults are\napplied. At least one of `Name` or `DataSources` must be present,\notherwise the request is rejected with `400 Bad Request`.\n",
        "minProperties": 1,
        "properties": {
          "DataSources": {
            "$ref": "#/components/schemas/DataSources"
          },
          "Name": {
            "type": "string"
          }
        }
      },
      "drivePostReply": {
        "type": "object",
        "properties": {
          "CreatedAt": {
            "type": "integer",
            "minimum": 0
          },
          "DataSources": {
            "$ref": "#/components/schemas/DataSources"
          },
          "DriveID": {
            "$ref": "#/components/schemas/driveID"
          },
          "Name": {
            "type": "string"
          },
          "Object": {
            "allOf": [
              {
                "$ref": "#/components/schemas/objectType"
              },
              {
                "type": "string",
                "enum": [
                  "Drive"
                ]
              }
            ]
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "UpdatedAt": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "CreatedAt",
          "DataSources",
          "DriveID",
          "Name",
          "Object",
          "Owner",
          "UpdatedAt"
        ]
      },
      "driveIdGetReply": {
        "type": "object",
        "properties": {
          "CreatedAt": {
            "type": "integer",
            "minimum": 0
          },
          "DataSources": {
            "$ref": "#/components/schemas/DataSources"
          },
          "DriveID": {
            "$ref": "#/components/schemas/driveID"
          },
          "Name": {
            "type": "string"
          },
          "Object": {
            "allOf": [
              {
                "$ref": "#/components/schemas/objectType"
              },
              {
                "type": "string",
                "enum": [
                  "Drive"
                ]
              }
            ]
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "UpdatedAt": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "CreatedAt",
          "DataSources",
          "DriveID",
          "Name",
          "Object",
          "Owner",
          "UpdatedAt"
        ]
      },
      "plotPostReply": {
        "type": "object",
        "properties": {
          "plotID": {
            "type": "string",
            "format": "uuid"
          },
          "presignedURL": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "plotID",
          "presignedURL"
        ]
      },
      "generateSamplesGetReply": {
        "type": "object",
        "properties": {
          "Count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000,
            "description": "The number of samples in the `Samples` array."
          },
          "Samples": {
            "type": "array",
            "description": "The generated samples, as double-precision floating point values.\n",
            "items": {
              "type": "number",
              "format": "double"
            }
          },
          "ContinuationToken": {
            "type": "string",
            "description": "Opaque token identifying the position after the last sample\nreturned. Present only when more samples are available, and only\non the `/tasks/{TaskID}/values/{ValueID}/samples` operation. Pass\nit back as the `continuationToken` query parameter to fetch the\nnext page.\n"
          }
        },
        "required": [
          "Samples",
          "Count"
        ]
      },
      "fileDescription": {
        "type": "object",
        "properties": {
          "etag": {
            "type": "string"
          },
          "last_modified": {
            "type": "integer",
            "minimum": 0
          },
          "path": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "etag",
          "last_modified",
          "path",
          "size"
        ]
      },
      "fileList": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "minimum": 0
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/fileDescription"
            }
          }
        },
        "required": [
          "count",
          "items"
        ]
      },
      "fileDownload": {
        "type": "object",
        "properties": {
          "content_type": {
            "type": "string"
          },
          "download_url": {
            "type": "string",
            "format": "uri"
          },
          "etag": {
            "type": "string"
          },
          "last_modified": {
            "type": "integer",
            "minimum": 0
          },
          "size": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "content_type",
          "download_url",
          "etag",
          "last_modified",
          "size"
        ]
      },
      "healthStatus": {
        "type": "object",
        "description": "Health status for all services",
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Current timestamp of the health check"
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/serviceHealth"
            },
            "description": "Array of health status for each service"
          }
        },
        "required": [
          "timestamp",
          "services"
        ]
      },
      "serviceHealth": {
        "type": "object",
        "description": "Health status for a single service",
        "properties": {
          "service": {
            "type": "string",
            "enum": [
              "scdp",
              "scce-api",
              "scce-compute",
              "scce-build"
            ],
            "description": "The service identifier"
          },
          "status": {
            "type": "string",
            "enum": [
              "healthy",
              "unhealthy",
              "degraded"
            ],
            "description": "The health status of the service"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of the last health check"
          },
          "details": {
            "type": "object",
            "properties": {
              "responseTime": {
                "type": "integer",
                "description": "Response time in milliseconds"
              },
              "endpoints": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "HTTP status code of the endpoint"
                    },
                    "responseTime": {
                      "type": "integer",
                      "description": "Response time in milliseconds"
                    }
                  },
                  "required": [
                    "status",
                    "responseTime"
                  ]
                },
                "description": "Status of individual endpoints (for SCCE API)"
              },
              "buildStatus": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^bld_[a-zA-Z0-9]{32}$",
                    "description": "Build ID"
                  },
                  "status": {
                    "type": "string",
                    "description": "Build status"
                  },
                  "duration": {
                    "type": "integer",
                    "description": "Build duration in milliseconds"
                  }
                },
                "required": [
                  "id",
                  "status",
                  "duration"
                ],
                "description": "Status of the latest build (for SCCE Build)"
              },
              "repoBuildStatus": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^bld_[a-zA-Z0-9]{32}$",
                    "description": "Repository build ID"
                  },
                  "status": {
                    "type": "string",
                    "description": "Repository build status"
                  },
                  "duration": {
                    "type": "integer",
                    "description": "Repository build duration in milliseconds"
                  }
                },
                "required": [
                  "id",
                  "status",
                  "duration"
                ],
                "description": "Status of the latest repository build (for SCCE Build)"
              },
              "taskStatus": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^tsk_[a-zA-Z0-9]{32}$",
                    "description": "Task ID"
                  },
                  "status": {
                    "type": "string",
                    "description": "Task status"
                  },
                  "duration": {
                    "type": "integer",
                    "description": "Task duration in milliseconds"
                  }
                },
                "required": [
                  "id",
                  "status",
                  "duration"
                ],
                "description": "Status of the latest task (for SCCE Compute)"
              },
              "error": {
                "type": "string",
                "description": "Error message if the health check failed"
              }
            }
          }
        },
        "required": [
          "service",
          "status",
          "timestamp",
          "details"
        ]
      },
      "keysGetReply": {
        "type": "object",
        "properties": {
          "UserID": {
            "$ref": "#/components/schemas/UserID"
          },
          "Keys": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Object": {
                  "type": "string",
                  "enum": [
                    "Key"
                  ]
                },
                "KeyID": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{32}$"
                },
                "Name": {
                  "type": "string"
                },
                "Owner": {
                  "$ref": "#/components/schemas/UserID"
                },
                "CreatedAt": {
                  "type": "integer",
                  "minimum": 0
                },
                "ValidUntil": {
                  "type": "integer",
                  "minimum": 0,
                  "nullable": true
                }
              },
              "required": [
                "Object",
                "KeyID",
                "Name",
                "Owner",
                "CreatedAt",
                "ValidUntil"
              ]
            }
          },
          "Count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "UserID",
          "Keys",
          "Count"
        ]
      },
      "keysPostRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "minLength": 1
          },
          "ValidUntil": {
            "type": "integer",
            "minimum": 0,
            "nullable": true
          }
        },
        "required": [
          "Name"
        ]
      },
      "keysPostReply": {
        "type": "object",
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "Key"
            ]
          },
          "Key": {
            "type": "string",
            "description": "The full API key. Only returned once upon creation."
          },
          "KeyID": {
            "type": "string",
            "pattern": "^[a-f0-9]{32}$"
          },
          "Name": {
            "type": "string"
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "ValidUntil": {
            "type": "integer",
            "minimum": 0,
            "nullable": true
          },
          "CreatedAt": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "Object",
          "Key",
          "KeyID",
          "Name",
          "Owner",
          "ValidUntil",
          "CreatedAt"
        ]
      },
      "keysDeleteReply": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ]
      },
      "WebhookCreateRequest": {
        "type": "object",
        "required": [
          "url",
          "events"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "example": "https://webhook.site/1406bd34-bd36-4e83-8341-90d0bcec5b13",
            "description": "The URL where webhook events will be sent"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "task-status",
                "build-status",
                "task-stats",
                "build-stats",
                "task-count",
                "build-count"
              ]
            },
            "example": [
              "task-status",
              "build-status"
            ],
            "description": "List of events to subscribe to"
          },
          "description": {
            "type": "string",
            "default": "",
            "example": "Test webhook",
            "description": "Optional description of the webhook. Defaults to the empty\nstring. A newly created webhook always starts with `status` set\nto `active`.\n"
          }
        }
      },
      "WebhookUpdateRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "example": "https://webhook.site/1406bd34-bd36-4e83-8341-90d0bcec5b13"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "task-status",
                "build-status",
                "task-stats",
                "build-stats",
                "task-count",
                "build-count"
              ]
            },
            "example": [
              "task-status",
              "build-status"
            ]
          },
          "description": {
            "type": "string",
            "example": "Updated test webhook"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "disabled"
            ],
            "example": "disabled"
          }
        }
      },
      "Organization": {
        "type": "object",
        "properties": {
          "OrganizationID": {
            "type": "string",
            "description": "Unique identifier for the organization."
          },
          "Name": {
            "type": "string",
            "description": "Display name of the organization."
          },
          "Object": {
            "type": "string",
            "example": "Organization"
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "CreatedAt": {
            "type": "integer",
            "description": "Unix timestamp of when the organization was created."
          },
          "UpdatedAt": {
            "type": "integer",
            "description": "Unix timestamp of when the organization was last updated."
          },
          "DedicatedInstanceName": {
            "type": "string",
            "description": "Optional dedicated compute instance name."
          }
        }
      },
      "Webhook": {
        "type": "object",
        "properties": {
          "WebhookID": {
            "type": "string",
            "example": "wh-1234567890abcdef1234567890abcdef"
          },
          "URL": {
            "type": "string",
            "format": "uri",
            "example": "https://webhook.site/1406bd34-bd36-4e83-8341-90d0bcec5b13"
          },
          "Events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "task-status",
                "build-status",
                "task-stats",
                "build-stats",
                "task-count",
                "build-count"
              ]
            },
            "example": [
              "task-status",
              "build-status"
            ]
          },
          "Description": {
            "type": "string",
            "example": "Test webhook"
          },
          "Status": {
            "type": "string",
            "enum": [
              "active",
              "disabled"
            ],
            "example": "active"
          },
          "Secret": {
            "type": "string",
            "example": "whsec_1234567890abcdef1234567890abcdef",
            "description": "Secret key for webhook signature verification"
          },
          "CreatedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2025-05-19T16:37:44.962Z"
          },
          "UpdatedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2025-05-19T16:37:44.962Z"
          },
          "FailureCount": {
            "type": "integer",
            "minimum": 0,
            "example": 0
          },
          "LastDeliveryStatus": {
            "type": "string",
            "nullable": true,
            "example": null,
            "enum": [
              "success",
              "failed-429",
              null
            ]
          },
          "LastDeliveryTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": null
          },
          "Object": {
            "type": "string",
            "example": "webhook"
          }
        }
      },
      "WebhookList": {
        "type": "object",
        "properties": {
          "webhooks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Webhook"
            }
          },
          "count": {
            "type": "integer",
            "example": 4
          }
        }
      },
      "WebSocketMessage": {
        "type": "object",
        "description": "Base WebSocket message structure",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "connection_init",
              "connection_ack",
              "subscribe",
              "subscribe_success",
              "data",
              "error",
              "ka"
            ],
            "description": "Message type identifier"
          },
          "id": {
            "type": "string",
            "description": "Unique message ID (for subscribe messages)",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "channel": {
            "type": "string",
            "description": "Channel name for subscription",
            "example": "builds/bld_123/status"
          },
          "payload": {
            "type": "object",
            "description": "Message payload (for data messages)"
          },
          "errors": {
            "type": "array",
            "description": "Error details (for error messages)",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "BuildStatusEvent": {
        "type": "object",
        "description": "Build status update event",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "Initializing",
              "In Progress",
              "Completed",
              "Cancelled",
              "Stopped"
            ],
            "example": "In Progress"
          },
          "buildId": {
            "type": "string",
            "pattern": "^bld_[a-zA-Z0-9]{32}$",
            "example": "bld_1234567890abcdef1234567890abcdef"
          },
          "data": {
            "type": "object",
            "description": "Additional build status data",
            "properties": {
              "message": {
                "type": "string",
                "example": "Build started successfully"
              },
              "timestamp": {
                "type": "string",
                "format": "date-time",
                "example": "2024-03-20T10:00:00Z"
              }
            }
          }
        }
      },
      "TaskStatusEvent": {
        "type": "object",
        "description": "Task status update event",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "Initializing",
              "In Progress",
              "Completed",
              "Cancelled",
              "Stopped"
            ],
            "example": "In Progress"
          },
          "taskId": {
            "type": "string",
            "pattern": "^tsk_[a-zA-Z0-9]{32}$",
            "example": "tsk_1234567890abcdef1234567890abcdef"
          },
          "data": {
            "type": "object",
            "description": "Additional task status data",
            "properties": {
              "message": {
                "type": "string",
                "example": "Task started successfully"
              },
              "timestamp": {
                "type": "string",
                "format": "date-time",
                "example": "2024-03-20T10:00:00Z"
              }
            }
          }
        }
      },
      "UserMetadataEvent": {
        "type": "object",
        "description": "User metadata update event",
        "properties": {
          "channel": {
            "type": "string",
            "pattern": "^user-metadata/usr_[a-zA-Z0-9]{32}$",
            "example": "user-metadata/usr_1234567890abcdef1234567890abcdef"
          },
          "data": {
            "type": "object",
            "description": "User metadata update data",
            "properties": {
              "ResourceUsage": {
                "type": "object",
                "properties": {
                  "TotalDynamicInstructions": {
                    "type": "integer",
                    "example": 123456789
                  },
                  "TotalExecutionTime": {
                    "type": "integer",
                    "example": 98765
                  }
                }
              },
              "timestamp": {
                "type": "string",
                "format": "date-time",
                "example": "2024-03-20T10:00:00Z"
              }
            }
          }
        }
      },
      "errorResponse": {
        "type": "object",
        "description": "Error response",
        "properties": {
          "error": {
            "type": "string",
            "description": "Error message"
          }
        },
        "required": [
          "error"
        ]
      },
      "UserID": {
        "type": "string",
        "pattern": "usr_[a-z0-9]{32}"
      },
      "CoreID": {
        "type": "string",
        "pattern": "cor_[a-z0-9]{32}"
      },
      "Microarchitecture": {
        "type": "string",
        "enum": [
          "Athens",
          "Atlas",
          "Jupiter",
          "Bypass",
          "Reference"
        ],
        "description": "The Core microarchitecture. The value is case-sensitive.\nNote that the `Atlas` microarchitecture is not supported for the `C0` Core\nclass; requesting that combination returns `400 Bad Request`.\n"
      },
      "CorrelationTracking": {
        "type": "string",
        "description": "The value is case-sensitive.",
        "enum": [
          "Autocorrelation",
          "Disable"
        ]
      },
      "Core": {
        "type": "object",
        "required": [
          "Object",
          "CoreID",
          "Owner",
          "Name",
          "Class",
          "Precision",
          "Microarchitecture",
          "MemorySize",
          "CorrelationTracking",
          "CreatedAt",
          "UpdatedAt"
        ],
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "Core"
            ]
          },
          "CoreID": {
            "$ref": "#/components/schemas/CoreID"
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "Name": {
            "type": "string",
            "minLength": 1
          },
          "Class": {
            "type": "string",
            "enum": [
              "C0",
              "C0Pro",
              "C0-microSD",
              "C0-microSD-plus"
            ]
          },
          "Precision": {
            "type": "integer",
            "minimum": 4,
            "maximum": 1000000,
            "description": "The precision of the core. The\nminimum value is 4. The maximum value is\n8000 for the Athens Microarchitecture, and 1000000 (1M) for the Reference Microarchitecture.\n"
          },
          "Microarchitecture": {
            "$ref": "#/components/schemas/Microarchitecture"
          },
          "MemorySize": {
            "type": "integer",
            "minimum": 256000,
            "maximum": 4000000000
          },
          "CorrelationTracking": {
            "$ref": "#/components/schemas/CorrelationTracking"
          },
          "CreatedAt": {
            "type": "integer",
            "format": "timestamp"
          },
          "UpdatedAt": {
            "type": "integer",
            "format": "timestamp"
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "A short, machine-readable error type",
            "enum": [
              "Bad Request",
              "Unauthorized",
              "Forbidden",
              "Not Found",
              "Conflict",
              "Internal Server Error"
            ]
          },
          "message": {
            "type": "string",
            "description": "A human-readable message explaining the error and potential solutions"
          }
        }
      },
      "CorePost": {
        "type": "object",
        "required": [
          "Name",
          "Class",
          "Precision",
          "MemorySize",
          "Microarchitecture",
          "CorrelationTracking"
        ],
        "properties": {
          "Name": {
            "type": "string",
            "minLength": 1
          },
          "Class": {
            "type": "string",
            "enum": [
              "C0",
              "C0Pro",
              "C0-microSD",
              "C0-microSD-plus"
            ]
          },
          "Precision": {
            "type": "integer",
            "minimum": 4,
            "maximum": 1000000,
            "description": "The precision of the core. The\nminimum value is 4. The maximum value is\n8000 for the Athens Microarchitecture, and 1000000 (1M) for the Reference Microarchitecture.\n"
          },
          "MemorySize": {
            "type": "integer",
            "minimum": 256000,
            "maximum": 4000000000
          },
          "Microarchitecture": {
            "$ref": "#/components/schemas/Microarchitecture"
          },
          "CorrelationTracking": {
            "$ref": "#/components/schemas/CorrelationTracking"
          }
        }
      },
      "CorePatch": {
        "type": "object",
        "required": [
          "Name",
          "Class",
          "Precision",
          "MemorySize",
          "Microarchitecture",
          "CorrelationTracking"
        ],
        "properties": {
          "Name": {
            "type": "string",
            "minLength": 1
          },
          "Class": {
            "type": "string",
            "enum": [
              "C0",
              "C0Pro",
              "C0-microSD",
              "C0-microSD-plus"
            ]
          },
          "Precision": {
            "type": "integer",
            "minimum": 4,
            "maximum": 1000000,
            "description": "The precision of the core. The\nminimum value is 4. The maximum value is\n8000 for the Athens Microarchitecture, and 1000000 (1M) for the Reference Microarchitecture.\n"
          },
          "MemorySize": {
            "type": "integer",
            "minimum": 256000,
            "maximum": 4000000000
          },
          "Microarchitecture": {
            "$ref": "#/components/schemas/Microarchitecture"
          },
          "CorrelationTracking": {
            "$ref": "#/components/schemas/CorrelationTracking"
          }
        }
      },
      "RepositoryID": {
        "type": "string",
        "pattern": "rep_[a-z0-9]{32}"
      },
      "resourceType": {
        "type": "string",
        "enum": [
          "Gateway",
          "Bucket",
          "Drive",
          "SignaloidCloudStorage"
        ]
      },
      "DataSource": {
        "type": "object",
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "DataSource"
            ]
          },
          "Location": {
            "type": "string"
          },
          "ResourceID": {
            "type": "string"
          },
          "ResourceType": {
            "$ref": "#/components/schemas/resourceType"
          }
        },
        "required": [
          "Object",
          "Location",
          "ResourceID",
          "ResourceType"
        ]
      },
      "DataSources": {
        "type": "array",
        "minItems": 0,
        "maxItems": 5,
        "items": {
          "$ref": "#/components/schemas/DataSource"
        }
      },
      "TraceVariableRequest": {
        "type": "object",
        "required": [
          "File",
          "LineNumber",
          "Expression"
        ],
        "properties": {
          "File": {
            "type": "string"
          },
          "LineNumber": {
            "type": "integer",
            "minimum": 0
          },
          "Expression": {
            "description": "The expression to trace. E.g., `x[0]`. To learn more about tracing\nexpressions, see the Tracing Variables section in the API Guides.\n",
            "type": "string"
          }
        }
      },
      "Repository": {
        "type": "object",
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "Repository"
            ]
          },
          "RepositoryID": {
            "type": "string"
          },
          "Owner": {
            "type": "string"
          },
          "RemoteURL": {
            "type": "string",
            "format": "uri"
          },
          "Commit": {
            "type": "string"
          },
          "Branch": {
            "type": "string"
          },
          "BuildDirectory": {
            "type": "string"
          },
          "Arguments": {
            "type": "string"
          },
          "Core": {
            "type": "string"
          },
          "DataSources": {
            "$ref": "#/components/schemas/DataSources"
          },
          "TraceVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TraceVariableRequest"
            }
          },
          "CreatedAt": {
            "type": "integer"
          },
          "UpdatedAt": {
            "type": "integer"
          }
        },
        "required": [
          "Object",
          "RepositoryID",
          "Owner",
          "RemoteURL",
          "Commit",
          "Branch",
          "BuildDirectory",
          "CreatedAt"
        ]
      },
      "RepositoryPost": {
        "type": "object",
        "required": [
          "RemoteURL",
          "Commit",
          "Branch",
          "BuildDirectory",
          "Arguments"
        ],
        "properties": {
          "RemoteURL": {
            "type": "string",
            "format": "uri",
            "description": "The URL of the git repository.\n"
          },
          "Commit": {
            "type": "string",
            "description": "The commit hash to check out.\n"
          },
          "Branch": {
            "type": "string",
            "description": "The branch name to check out.\n"
          },
          "BuildDirectory": {
            "type": "string",
            "description": "The directory in the repository where the Signaloid Cloud\nEngine should use as working directory when attempting to\nbuild the repository application. This directory is relative\nto the root of the repository.\n"
          },
          "Arguments": {
            "type": "string",
            "nullable": true,
            "default": "",
            "description": "Default command-line arguments that the Signaloid Cloud\nEngine should pass when executing the built repository\napplication. This field is required, but may be the empty\nstring. If sent as `null`, it is stored as the empty string.\n"
          },
          "Core": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CoreID"
              }
            ],
            "description": "The ID of the core to use for building. If omitted, the\nSignaloid Cloud Platform assigns the default Core with the\nlowest precision that is available to your account.\n"
          },
          "DataSources": {
            "type": "array",
            "minItems": 0,
            "maxItems": 5,
            "items": {
              "$ref": "#/components/schemas/DataSource"
            },
            "default": [],
            "description": "Default data sources to use with this repository.\nDefaults to an empty list.\n"
          },
          "TraceVariables": {
            "description": "The default variables that the Signaloid Cloud Compute Engine should\ntrace when executing the Repository application.\nDefaults to an empty list.\n",
            "type": "array",
            "default": [],
            "items": {
              "$ref": "#/components/schemas/TraceVariableRequest"
            }
          }
        }
      },
      "BuildID": {
        "type": "string",
        "pattern": "bld_[a-z0-9]{32}"
      },
      "BuildStatus": {
        "type": "string",
        "enum": [
          "Accepted",
          "Initialising",
          "Rescheduled",
          "In Progress",
          "Completed",
          "Cancelled",
          "Stopped"
        ],
        "description": "- **Accepted:** The Build is accepted and queued for execution. The Build is _inactive_.\n- **Initialising:** The Signaloid Cloud Compute Engine has picked up the Build and is initialising the infrastructure to execute it. The Build is _active_.\n- **Rescheduled:** The Signaloid Cloud Compute Engine scheduling the Build to another worker, due to an interruption on the previous worker. The Build is _active_.\n- **In Progress:** The Build is running. The Build is _active_.\n- **Completed:** The Build exited with a zero exit code. The Build is _inactive_.\n- **Cancelled:** The Build exited with a non-zero exit code and . The Build is _inactive_.\n- **Stopped:** The Build exited with a non-zero exit code. The Build is _inactive_.\n"
      },
      "SourceCode": {
        "type": "object",
        "required": [
          "Object",
          "Code",
          "Language"
        ],
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "SourceCode"
            ]
          },
          "Code": {
            "type": "string"
          },
          "Language": {
            "type": "string",
            "enum": [
              "C",
              "C++"
            ],
            "description": "The programming language that the source code is written in. This\nfield is required. The value `Fortran` is recognised but not yet\nsupported and is rejected with `400 Bad Request`.\n"
          },
          "Arguments": {
            "type": "string",
            "default": ""
          }
        }
      },
      "Build": {
        "type": "object",
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "Build"
            ]
          },
          "BuildID": {
            "$ref": "#/components/schemas/BuildID"
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "Status": {
            "$ref": "#/components/schemas/BuildStatus"
          },
          "StatusTransitions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Status": {
                  "type": "string"
                },
                "Timestamp": {
                  "type": "integer"
                },
                "Message": {
                  "type": "string"
                }
              }
            }
          },
          "StartedAt": {
            "type": "integer"
          },
          "DefaultArguments": {
            "type": "string"
          },
          "DefaultDataSources": {
            "$ref": "#/components/schemas/DataSources"
          },
          "Application": {
            "type": "object",
            "properties": {
              "Type": {
                "type": "string",
                "enum": [
                  "SourceCode",
                  "Repository"
                ]
              },
              "SourceCode": {
                "$ref": "#/components/schemas/SourceCode"
              },
              "Repository": {
                "$ref": "#/components/schemas/Repository"
              }
            }
          },
          "UpdatedAt": {
            "type": "integer"
          },
          "CreatedAt": {
            "type": "integer"
          },
          "FinishedAt": {
            "type": "integer"
          },
          "BuildArtifactAvailable": {
            "type": "boolean"
          },
          "IsPublic": {
            "type": "boolean",
            "description": "Whether other users can create Tasks from this Build without\nauthorization. Always present on `GET /builds` responses.\n"
          },
          "BuildCoreSpecs": {
            "type": "object",
            "properties": {
              "Class": {
                "type": "string"
              },
              "Precision": {
                "type": "integer"
              },
              "MemorySize": {
                "type": "integer"
              },
              "Microarchitecture": {
                "type": "string"
              },
              "CorrelationTracking": {
                "type": "string"
              }
            }
          },
          "TraceVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TraceVariableRequest"
            }
          },
          "Stats": {
            "type": "object",
            "properties": {
              "BuildTimeInMilliseconds": {
                "type": "integer"
              },
              "BuildSizeInBytes": {
                "type": "integer"
              },
              "CreatedAt": {
                "type": "integer"
              }
            }
          }
        },
        "required": [
          "Object",
          "BuildID",
          "Owner",
          "Status",
          "CreatedAt"
        ]
      },
      "TaskStatus": {
        "type": "string",
        "enum": [
          "Accepted",
          "Initialising",
          "Rescheduled",
          "In Progress",
          "Completed",
          "Cancelled",
          "Stopped"
        ],
        "description": "- **Accepted:** The Task is accepted and queued for execution. The Task is _inactive_.\n- **Initialising:** The Signaloid Cloud Compute Engine has picked up the Task and is initialising the infrastructure to execute it. The Task is _active_.\n- **Rescheduled:** The Signaloid Cloud Compute Engine scheduling the Task to another worker, due to an interruption on the previous worker. The Task is _active_.\n- **In Progress:** The Task is running. The Task is _active_.\n- **Completed:** The Task exited with a zero exit code. The Task is _inactive_.\n- **Cancelled:** The Task exited with a non-zero exit code and . The Task is _inactive_.\n- **Stopped:** The Task exited with a non-zero exit code. The Task is _inactive_.\n"
      },
      "Task": {
        "type": "object",
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "Task"
            ],
            "description": "Present on single-Task responses. Omitted from the expanded\n`GET /tasks` listing, which projects a fixed field set.\n"
          },
          "TaskID": {
            "type": "string"
          },
          "BuildID": {
            "type": "string"
          },
          "Owner": {
            "type": "string"
          },
          "Status": {
            "$ref": "#/components/schemas/TaskStatus"
          },
          "StatusTransitions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Status": {
                  "type": "string"
                },
                "Timestamp": {
                  "type": "integer"
                },
                "Message": {
                  "type": "string"
                }
              }
            }
          },
          "Arguments": {
            "type": "string"
          },
          "DataSources": {
            "$ref": "#/components/schemas/DataSources"
          },
          "StartedAt": {
            "type": "integer"
          },
          "UpdatedAt": {
            "type": "integer"
          },
          "CreatedAt": {
            "type": "integer"
          },
          "FinishedAt": {
            "type": "integer"
          },
          "Stats": {
            "type": "object",
            "properties": {
              "DynamicInstructions": {
                "type": "integer"
              },
              "ProcessorTime": {
                "type": "number"
              },
              "ExecutionTimeInMilliseconds": {
                "type": "integer"
              }
            }
          }
        },
        "required": [
          "TaskID",
          "Owner",
          "Status",
          "CreatedAt"
        ]
      },
      "TaskID": {
        "type": "string",
        "pattern": "tsk_[a-z0-9]{32}"
      },
      "TaskListItem": {
        "type": "object",
        "description": "The reduced Task representation returned by `GET /tasks` when\n`noexpand=true`.\n",
        "additionalProperties": false,
        "required": [
          "TaskID",
          "Owner",
          "CreatedAt"
        ],
        "properties": {
          "TaskID": {
            "$ref": "#/components/schemas/TaskID"
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "CreatedAt": {
            "type": "integer"
          }
        }
      },
      "TaskOutputReturn": {
        "type": "object",
        "description": "The returned object is a list of URLs providing direct access to the content streams related to the executed task.\n",
        "properties": {
          "Stdout": {
            "type": "string",
            "description": "The URL to the stream content of the standard output (stdout) file. This file captures all the standard output generated by executed task.",
            "format": "Url string"
          },
          "Stderr": {
            "type": "string",
            "description": "The URL to the stream content of the standard error (stderr) file. This file contains all error messages and diagnostics emitted by executed task.",
            "format": "Url string"
          },
          "StdoutChunks": {
            "type": "array",
            "description": "A list of URLs pointing to the compressed chunks of the stdout file stream. For large stdout files, the content is split into manageable chunks and compressed using GZIP to facilitate easier download and handling.",
            "format": "Array of URL strings",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "valueID": {
        "type": "string",
        "pattern": "val_[a-z0-9]{32}"
      },
      "SamplesGenerateByUxStringRequest": {
        "type": "object",
        "required": [
          "payload"
        ],
        "properties": {
          "payload": {
            "type": "string"
          }
        }
      },
      "PlotUxStringRequest": {
        "type": "object",
        "required": [
          "payload"
        ],
        "properties": {
          "payload": {
            "type": "string"
          }
        }
      },
      "BuildListItem": {
        "type": "object",
        "description": "The reduced Build representation returned by `GET /builds` when\n`noexpand=true`.\n",
        "additionalProperties": false,
        "required": [
          "BuildID",
          "Owner",
          "CreatedAt"
        ],
        "properties": {
          "BuildID": {
            "$ref": "#/components/schemas/BuildID"
          },
          "Owner": {
            "$ref": "#/components/schemas/UserID"
          },
          "CreatedAt": {
            "type": "integer"
          }
        }
      },
      "BuildOutputReturn": {
        "type": "object",
        "description": "The returned object is a list of URLs providing direct access to the content streams related to the executed build.\n",
        "properties": {
          "Build": {
            "type": "string",
            "description": "The URL to the stream content of the build file. This file includes comprehensive details about the build process, useful for debugging and verification of build steps.",
            "format": "Url string"
          }
        }
      },
      "Variable": {
        "type": "object",
        "properties": {
          "Object": {
            "type": "string",
            "enum": [
              "Variable"
            ]
          },
          "Name": {
            "type": "string",
            "pattern": "[a-zA-Z][a-zA-Z0-9]*"
          },
          "Type": {
            "type": "string",
            "enum": [
              "Variable",
              "FormalParameter"
            ]
          },
          "File": {
            "type": "string"
          },
          "Line": {
            "type": "integer",
            "format": "int",
            "minimum": 0
          },
          "Function": {
            "type": "string"
          }
        },
        "required": [
          "Object",
          "Name",
          "Kind",
          "File",
          "Line",
          "Function"
        ]
      },
      "bucketID": {
        "type": "string",
        "pattern": "bkt_[a-z0-9]{32}"
      },
      "objectType": {
        "type": "string",
        "enum": [
          "User",
          "Thing",
          "Gateway",
          "Bucket",
          "Drive",
          "SignaloidCloudStorage"
        ]
      },
      "driveID": {
        "type": "string",
        "pattern": "drv_[a-z0-9]{32}"
      },
      "thingID": {
        "type": "string",
        "pattern": "thg_[a-z0-9]{32}"
      },
      "PipelineID": {
        "type": "string",
        "pattern": "pip_[a-z0-9]{32}"
      }
    },
    "examples": {
      "bucketGetReply": {
        "value": {
          "bucket_count": 0,
          "bucket_ids": [],
          "user_id": "usr_000000000000000000000000000000ab"
        }
      },
      "driveGetReply": {
        "value": {
          "drive_count": 0,
          "drive_ids": [],
          "user_id": "usr_000000000000000000000000000000ab"
        }
      },
      "thingsGetReply": {
        "value": {
          "thing_count": 1,
          "thing_ids": [
            "thg_2cb6173b9248462d8c5c21e5e683cadc"
          ],
          "user_id": "usr_000000000000000000000000000000ab"
        }
      },
      "thingProfile": {
        "value": {
          "CreatedAt": 1641031200,
          "Name": "My Signaloid Test Thing (John Doe)",
          "Object": "Thing",
          "Owner": "usr_000000000000000000000000000000ab",
          "ThingID": "thg_2cb6173b9248462d8c5c21e5e683cadc",
          "ThingStatus": {
            "local_ipv4_address": "172.22.22.66",
            "updated_at": 1645177974
          },
          "Topics": [
            "thg_2cb6173b9248462d8c5c21e5e683cadc/stream",
            "thg_2cb6173b9248462d8c5c21e5e683cadc/device"
          ],
          "UpdatedAt": 0
        }
      },
      "thingFileList": {
        "value": {
          "items": [],
          "thing_id": "thg_2cb6173b9248462d8c5c21e5e683cadc",
          "user_id": "usr_000000000000000000000000000000ab"
        }
      },
      "userProfile": {
        "value": {
          "CreatedAt": 1642170191405,
          "Object": "User",
          "Preferences": {
            "Editor_Execution_Arguments": "",
            "Editor_Execution_Core": "cor_0d65d1e8f57459079c0a036a3e09ae1d",
            "Editor_Execution_DataSources": "{\"Location\":\"sd0\",\"ResourceID\":\"signaloid-cloud-storage:/usr_000000000000000000000000000000ab\",\"ResourceType\":\"SignaloidCloudStorage\"}",
            "Editor_Layout": "vertical",
            "Editor_Layout_VariableViewer": false,
            "Editor_SourceCode": "CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dXhody5oPgoKaW50Cm1haW4oaW50IGFyZ2MsIGNoYXIgKiAgYXJndltdKQp7Cglkb3VibGUJYSwgYiwgYzsKCglhID0gVXhId0RvdWJsZUdhdXNzRGlzdCgxMCwyKTsKCWIgPSBVeEh3RG91YmxlVW5pZm9ybURpc3QoMiwxMik7CglwcmludGYoImEgPSAlbGZcbiIsIGEpOwoJcHJpbnRmKCJiID0gJWxmXG4iLCBiKTsKCXByaW50ZigiYSA9ICVsZlxuIiwgYSk7CglwcmludGYoImIgPSAlbGZcbiIsIGIpOwoJcHJpbnRmKCJhID0gJWxmXG4iLCBhKTsKCXByaW50ZigiYiA9ICVsZlxuIiwgYik7CglwcmludGYoImEgPSAlbGZcbiIsIGEpOwoJcHJpbnRmKCJiID0gJWxmXG4iLCBiKTsKCgljID0gKGErYikvKGEtYik7CglwcmludGYoImMgPSAlbGZcbiIsIGMpOwoKCXJldHVybiAwOwp9",
            "Editor_Theme": "dawn",
            "Execution_DefaultCore": "cor_0d65d1e8f57459079c0a036a3e09ae1d",
            "Execution_DefaultDataSources": "{\"Location\":\"sd0\",\"ResourceID\":\"signaloid-cloud-storage:/usr_000000000000000000000000000000ab\",\"ResourceType\":\"SignaloidCloudStorage\"}",
            "Execution_DefaultReferenceCore": "cor_9a3efb0094405df5aeb61cf1f29606a0",
            "UpdatedAt": 1666627357
          },
          "ResourceUsage": {
            "APIAccessCount": 1,
            "BucketCount": 0,
            "CloudStorageBytes": 16738,
            "ConcurrentTaskCount": 0,
            "CoreCount": 1,
            "DataDriveCount": 1,
            "DataSourceCount": 0,
            "DynamicInstructionCount": 32507228791,
            "GatewayCount": 0,
            "KeyCount": 1,
            "PlotCount": 127,
            "RepositoryCount": 0,
            "ResetsAt": 1698800400,
            "TaskCount": 181,
            "UpdatedAt": 1698241879
          },
          "UserID": "usr_000000000000000000000000000000ab",
          "Username": "firstname.lastname@example.com"
        }
      },
      "drivePostRequest": {
        "value": {
          "DataSources": [
            {
              "Location": "/mountPoint",
              "Object": "DataSource",
              "ResourceID": "signaloid-cloud-storage:/usr_000000000000000000000000000000ab",
              "ResourceType": "SignaloidCloudStorage"
            }
          ],
          "Name": "sampleDrive"
        }
      },
      "drivePatchRequest": {
        "value": {
          "DataSources": [],
          "Name": "sampleDrive"
        }
      },
      "drivePostReply": {
        "value": {
          "CreatedAt": 1666947436,
          "DataSources": [
            {
              "Location": "/mountPoint",
              "Object": "DataSource",
              "ResourceID": "signaloid-cloud-storage:/usr_000000000000000000000000000000ab",
              "ResourceType": "SignaloidCloudStorage"
            }
          ],
          "DriveID": "drv_c5ef68a00ba445ca8b191e4d24224002",
          "Name": "sampleDrive",
          "Object": "Drive",
          "Owner": "usr_000000000000000000000000000000ab",
          "UpdatedAt": 1666947436
        }
      },
      "driveIdGetReply": {
        "value": {
          "CreatedAt": 1666947436,
          "DataSources": [],
          "DriveID": "drv_c5ef68a00ba445ca8b191e4d24224002",
          "Name": "sampleDrive",
          "Object": "Drive",
          "Owner": "usr_000000000000000000000000000000ab",
          "UpdatedAt": 1666947455
        }
      },
      "plotPostReply": {
        "value": {
          "plotID": "c6900a71-fe4f-4ebd-b2c0-8fc25f5b3a35",
          "presignedURL": "https://plotbucket97cc3f04-1ow0gt1t9hif2.s3.amazonaws.com/c6900a71-fe4f-4ebd-b2c0-8fc25f5b3a35.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA42JDQETPVD7OWCXF%2F20221028%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221028T085959Z&X-Amz-Expires=604799&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCWV1LXdlc3QtMiJFMEMCHyP7bcPbr%2B4D7DuBeGeQshs952XFrvm2oeSFUrykfGMCIHrd0C3bvvBsTdZEfVz4UBgszsO2YLBpj%2BE%2Fm8ltFDtiKr0DCCoQAhoMODgxMDc5NjI0OTI3Igyuspu6If32vY4su00qmgN7MslY41LQvvJAqeK76NvAXXjyjr6rGMuPX1Gs27dXGkDeAMMOVgs9fdYP3c9CnpJ%2FA7jrDiwcAZsIgppC3o1Q%2FaLLt99Du9NGNGyObyZJcK1q%2BdWXN649c9fhNOnAjHH3Kc6OqZNbKmGRfSenvEdSeDLo%2BW90oqfSyXi2xfBtjiNHrnWksM%2BN79d4ZV8X1i0PX9DAaTp9GJeh06SmkwoSR9CJqkNdy%2BttcH7THTb63%2F0nK8fuEck5Y9SKru9spmc2TcdDEmBduD4W%2B3uNcrpbclhyd8702ZCbg4eITmoCvcXjkvL33Y65%2BSlVMK7W3Bm4iDfbjxmpKe2bq1Xy7oDWE37xbRD7VNodKX28ExTPhlNG9Iy50qghxXoVMh4cs6RD%2Bw8Ds5%2BuGrWNl3GY0q2jsbvLD1ERb4EidMCZFydWPMP3ir4cxNlz8dpvAlbq9r9UpM8VdW4rKXru8AxEmGRvVs3mafA%2FZje1q7JJddnKk3dFg%2B4fyx7OqDUvFwiEiUZSXemGEmKnq6xLLF59CgPH5evQ0MdCEuJKojCLtO6aBjqgAQ8NOqM%2FligH%2FCyznqzWENFhAVy516KLmqq%2B77iZsaIeR64Pl2FmaRxKc5tyX6Of2dURAw%2BtIjRVKTgBROKu%2B0CyIrlyP%2Fz%2BG%2BDMKChfX9WlEwoTR%2B0uLvI4R%2FCYLciTWbNfBUciBpDvU7IyJI%2Bv79p%2F6bvwkbt6e4b88yBLKssuterABiOKTlM%2BfDNfd9jPZuVLkGrDKe18TLPHyJsSk30%3D&X-Amz-Signature=111d24ed3f49e31599ccb1d5fd2756947b61d9b5b972aa9efc8ffec18aa673a4"
        }
      },
      "fileList": {
        "value": {
          "count": 6,
          "items": [
            {
              "etag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
              "last_modified": 1665672906000,
              "path": "",
              "size": 0
            },
            {
              "etag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
              "last_modified": 1665672906000,
              "path": "Signaloid/",
              "size": 0
            },
            {
              "etag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
              "last_modified": 1665672906000,
              "path": "Signaloid/example-loadDistFromFile/",
              "size": 0
            },
            {
              "etag": "\"18cedf0c989594d5d7b66d58ac2a499d\"",
              "last_modified": 1665672906000,
              "path": "Signaloid/example-loadDistFromFile/example.csd",
              "size": 4205
            },
            {
              "etag": "\"3c41b0823f05cf86da0d560b0e033c03\"",
              "last_modified": 1665672907000,
              "path": "Signaloid/example-loadDistFromFile/example.csv",
              "size": 21
            },
            {
              "etag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
              "last_modified": 1666947334000,
              "path": "sampleDir/",
              "size": 0
            }
          ]
        }
      },
      "fileDownload": {
        "value": {
          "content_type": "text/csv",
          "download_url": "https://signaloid-cloud-storage-staging.s3.eu-west-2.amazonaws.com/usr_000000000000000000000000000000ab/Signaloid/example-loadDistFromFile/example.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIA42JDQETPSMT4S3WA%2F20221028%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221028T085331Z&X-Amz-Expires=900&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCWV1LXdlc3QtMiJGMEQCIBEYvuHfr47Wj7CTekvcphD0yrTEBZSuOwhnaIncTdBoAiBRg04QrE0SSWcf9ewuDtDNJGXX76Tgs2aoZ73MpDLrzirHAwgqEAIaDDg4MTA3OTYyNDkyNyIM9EsTjt6yFHdWaj3gKqQDFZTcOmyobhK%2FpzH8Y5iFSsQeoGhZYroC7vX8xdaipWiZ2uqAoOZpsU%2FI0zAVhtdm0YBfbW5%2B6RVx7Tohn2Reiux7Gl5juKPc6PhQD%2BZjC7ta3awiLOCZhrCOgA4qrdvRol3%2F2PZqCryT8oruLvVH8iR5Q07ryQBbwrX19yjwy0y5bPU2qgwFFgK3ga8MjPpJ%2FTU0P8BfDywtkXS00EAotvfmM0V4rfH4UZOZEETkDZD0kR7ECMOJ8IPk8PwrUnOOZEIZ%2F559ioyBfAPIeMzV81UBM5uvVh7g%2BD4mndOcuwptlqE%2Fz7lgjxKYGpodCKNOg56sOjJZm0KTgYtk1xUx12PjzVqejBvY3Wk2G3JSreP6lFbLtbWJI%2B3bWgscKtKQMnNRmEJ5ZAg9NgweVe3Hus%2BfarAHvTqLgsFT5MzINag98VGQiQAl9E3NH8fef01SsjjpybrlrNuWxffCMP0IFPh3pABTCSrGaC%2Bc0ZE4kdMQoPpkEqPsPRiuvfshDeWI4mqPOmwECuJcA1Ofe55J%2FEObi1RxRIQAdms3KyzjyPT2L1N%2FMIqx7poGOp8BRSo3Y5CheR4dgRI1SsvMzZLZ3pJnBTsFSAR%2BiGFEfS6N0cvMSfgPuMeu9yxhCjeCDUDMZId%2Bs3Z%2BSM%2BT5eNfewIGeWM26J2dBaI3TWsA9zGpQrSJeKIIilcYzF7q1X98NU2a7K2axVCH%2FPG66Uwk5qOWkN3N0%2FCNqP3xYGT9%2Fli4Hg5MdBqKiUlZ29kpKOmSfjiyge8TT6uc%2F33DEglf&X-Amz-Signature=d1436f6d73737b7fabcd32d963136cb3422aaeda4ab5a46ac8274d949d5580cb&X-Amz-SignedHeaders=host&x-id=GetObject",
          "etag": "\"3c41b0823f05cf86da0d560b0e033c03\"",
          "last_modified": 1665672907000,
          "size": 21
        }
      },
      "UnauthorizedError": {
        "value": {
          "error": "Unauthorized",
          "message": "Not authorized request."
        }
      },
      "NotFoundError": {
        "value": {
          "error": "Not Found"
        }
      },
      "InternalServerError": {
        "value": {
          "error": "Internal Server Error",
          "message": "There was a database error while performing this operation. If this issue persists, please contact Signaloid Support at developer-support@signaloid.com."
        }
      },
      "BadRequestError": {
        "value": {
          "error": "Bad Request",
          "message": "Missing or malformed 'Name' field"
        }
      }
    }
  }
}
