{
  "swagger": "2.0",
  "info": {
    "title": "ByteNite developers API",
    "version": "0.1",
    "contact": {
      "name": "ByteNite info",
      "url": "https://api.bytenite.com/",
      "email": "info@bytenite.com"
    }
  },
  "tags": [
    {
      "name": "Developer"
    }
  ],
  "host": "api.bytenite.com",
  "basePath": "/v1/dev",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json",
    "application/x-protobuf"
  ],
  "produces": [
    "application/json",
    "application/x-protobuf"
  ],
  "paths": {
    "/apps": {
      "get": {
        "summary": "Get distributed apps",
        "description": "List all distributed apps created by the user.\n\nUse this endpoint to fetch apps created by the user.",
        "operationId": "Developer_GetApps",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerAppListResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "orderBy",
            "description": "Field name to sort apps by (e.g., createdAt).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pagination.limit",
            "description": "Number of rows to return per page.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "pagination.offset",
            "description": "Number of rows to skip before starting to collect the result set.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "isPublic",
            "description": "Filter public apps only",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "apps"
        ]
      },
      "post": {
        "summary": "Upload a distributed app",
        "description": "Upload a distributed app to the server",
        "operationId": "Developer_UploadApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/appApp"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/developerUploadAppRequest"
            }
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/delete": {
      "post": {
        "summary": "Batch delete app",
        "description": "Delete multiple apps by ID",
        "operationId": "Developer_DeleteApps",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/commonBatchIdMessage"
            }
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/import": {
      "post": {
        "summary": "Import an app",
        "description": "Import a public app into user account",
        "operationId": "Developer_ImportApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/appApp"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/commonImportRequest"
            }
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{appTag}": {
      "get": {
        "summary": "Get the latest app details",
        "description": "Get the latest app de",
        "operationId": "Developer_GetAppByTag",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerAppResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appTag",
            "description": "Unique tag of the app",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{appTag}/activate": {
      "post": {
        "summary": "Activate a distributed app",
        "description": "Activate a distributed app",
        "operationId": "Developer_ActivateApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appTag",
            "description": "Unique tag of the app",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{appTag}/deactivate": {
      "post": {
        "summary": "Activate a distributed app",
        "description": "Activate a distributed app",
        "operationId": "Developer_DeactivateApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appTag",
            "description": "Unique tag of the app",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{appTag}/download": {
      "get": {
        "summary": "Get download link for an app",
        "description": "Get download link for an app",
        "operationId": "Developer_GetAppDownloadLink",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appTag",
            "description": "Unique tag of the app",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{appTag}/publish": {
      "post": {
        "summary": "Make an app public",
        "description": "Make an app public",
        "operationId": "Developer_PublishApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appTag",
            "description": "Unique tag of the app",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{appTag}/status": {
      "get": {
        "summary": "Get status of app",
        "description": "Get status of app",
        "operationId": "Developer_GetAppStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appTag",
            "description": "Unique tag of the app",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{appTag}/unpublish": {
      "post": {
        "summary": "Make an app private",
        "description": "Make an app private",
        "operationId": "Developer_UnpublishApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appTag",
            "description": "Unique tag of the app",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/apps/{id}": {
      "delete": {
        "summary": "Delete an app",
        "description": "Delete an app by ID",
        "operationId": "Developer_DeleteApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "apps"
        ]
      }
    },
    "/cache/files": {
      "get": {
        "summary": "List cache files",
        "description": "List cache files",
        "operationId": "Developer_ListCacheFiles",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerListCacheFileResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cacheType",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SHARED",
              "USER"
            ],
            "default": "SHARED"
          }
        ],
        "tags": [
          "Cache"
        ]
      }
    },
    "/cache/upload-url": {
      "get": {
        "summary": "Get user cache upload URL",
        "description": "Gets a signed URL for uploading user cache. The client can then use this URL to upload a file directly to a storage provider.",
        "operationId": "Developer_GetUserCacheUploadURL",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerGetUserCacheUploadURLResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "fileName",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Cache"
        ]
      }
    },
    "/engines": {
      "get": {
        "summary": "Get engines",
        "description": "List all engines owned by the user",
        "operationId": "Developer_GetEngines",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerEngineListResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "orderBy",
            "description": "Field name to sort apps by (e.g., createdAt).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pagination.limit",
            "description": "Number of rows to return per page.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "pagination.offset",
            "description": "Number of rows to skip before starting to collect the result set.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "isPublic",
            "description": "Filter public engines only",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Engines"
        ]
      },
      "post": {
        "summary": "Upload an engine",
        "description": "Upload a engine to the server",
        "operationId": "Developer_UploadEngine",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/engineEngine"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineTag",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineData",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "engineLink",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineStatus",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/delete": {
      "post": {
        "summary": "Batch delete engines",
        "description": "Delete multiple engines by ID",
        "operationId": "Developer_DeleteEngines",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/commonBatchIdMessage"
            }
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/import": {
      "post": {
        "summary": "Import an engine",
        "description": "Import a public engine into user account",
        "operationId": "Developer_ImportEngine",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/engineEngine"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/commonImportRequest"
            }
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{engineTag}": {
      "get": {
        "summary": "Get an engine",
        "description": "Get an engine by tag",
        "operationId": "Developer_GetEngineByTag",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/engineEngine"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineTag",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "engineId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineData",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "engineLink",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineStatus",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{engineTag}/activate": {
      "post": {
        "summary": "Activate an Engine",
        "description": "Activate an Engine",
        "operationId": "Developer_ActivateEngine",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerEngineMessage"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineTag",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "engineId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineData",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "engineLink",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineStatus",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{engineTag}/deactivate": {
      "post": {
        "summary": "Deactivate an Engine",
        "description": "Deactivate an Engine",
        "operationId": "Developer_DeactivateEngine",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerEngineMessage"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineTag",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "engineId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineData",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "engineLink",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineStatus",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{engineTag}/download": {
      "get": {
        "summary": "Download an Engine",
        "description": "Download an Engine",
        "operationId": "Developer_GetEngineLink",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerEngineMessage"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineTag",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "engineId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineData",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "engineLink",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineStatus",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{engineTag}/publish": {
      "post": {
        "summary": "Make an engine public",
        "description": "Make an engine public",
        "operationId": "Developer_PublishEngine",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerEngineMessage"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineTag",
            "description": "Unique tag of the engine",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{engineTag}/status": {
      "get": {
        "summary": "Get status of engine",
        "description": "Get status of engine",
        "operationId": "Developer_GetEngineStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerEngineMessage"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineTag",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "engineId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineData",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "engineLink",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "engineStatus",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{engineTag}/unpublish": {
      "post": {
        "summary": "Make an engine private",
        "description": "Make an engine private",
        "operationId": "Developer_UnpublishEngine",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerEngineMessage"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "engineTag",
            "description": "Unique tag of the engine",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/engines/{id}": {
      "delete": {
        "summary": "Delete an engine",
        "description": "Delete an engine by ID",
        "operationId": "Developer_DeleteEngine",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Engines"
        ]
      }
    },
    "/info": {
      "get": {
        "summary": "Retrieve information about service",
        "description": "Server software version and important messages",
        "operationId": "Developer_Info",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerServerInfoResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "info"
        ]
      }
    },
    "/templates": {
      "get": {
        "summary": "Get templates",
        "description": "List all templates created by the user",
        "operationId": "Developer_GetTemplates",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerTemplateListResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "orderBy",
            "description": "Field name to sort apps by (e.g., createdAt).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pagination.limit",
            "description": "Number of rows to return per page.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "pagination.offset",
            "description": "Number of rows to skip before starting to collect the result set.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "isPublic",
            "description": "Filter public templates only",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "templates"
        ]
      },
      "delete": {
        "summary": "Delete templates",
        "description": "Delete given templates by ID",
        "operationId": "Developer_DeleteTemplates",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonBatchOperationResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "templateId",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "templates"
        ]
      },
      "post": {
        "summary": "Upload a template",
        "description": "Upload a template to the server",
        "operationId": "Developer_UploadTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "The templates specific to each app are stored in this table.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jobJobTemplate"
            }
          }
        ],
        "tags": [
          "templates"
        ]
      }
    },
    "/templates/import": {
      "post": {
        "summary": "Import a template",
        "description": "Import a public template into user account",
        "operationId": "Developer_ImportTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/jobJobTemplate"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/commonImportRequest"
            }
          }
        ],
        "tags": [
          "templates"
        ]
      }
    },
    "/templates/{id}": {
      "get": {
        "summary": "Get a template",
        "description": "Get a template by id",
        "operationId": "Developer_GetTemplateById",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/jobJobTemplate"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "templates"
        ]
      }
    },
    "/templates/{id}/publish": {
      "post": {
        "summary": "Make a template public",
        "description": "Make a template public",
        "operationId": "Developer_PublishTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "templates"
        ]
      }
    },
    "/templates/{id}/unpublish": {
      "post": {
        "summary": "Make a template private",
        "description": "Make a template private",
        "operationId": "Developer_UnpublishTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonGenericResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "templates"
        ]
      }
    },
    "/tests": {
      "post": {
        "summary": "Run the app in a testing environment",
        "description": "Run the app in a testing environment",
        "operationId": "Developer_TestApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerTestAppResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/developerTestAppRequest"
            }
          }
        ],
        "tags": [
          "tests"
        ]
      }
    },
    "/tests/{id}": {
      "get": {
        "summary": "Get results for an app test",
        "description": "Get results for an app test",
        "operationId": "Developer_GetTestResults",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/developerTestResultsResponse"
            }
          },
          "400": {
            "description": "Returned when the users sends a malformed request.",
            "schema": {}
          },
          "401": {
            "description": "Returned when the user is not authenticated.",
            "schema": {}
          },
          "403": {
            "description": "Returned when the user does not have permission to access the resource.",
            "schema": {}
          },
          "404": {
            "description": "Returned when the resource does not exist.",
            "schema": {}
          },
          "500": {
            "description": "Returned when an error on the server occurred.",
            "schema": {}
          },
          "503": {
            "description": "Returned when the resource is temporarily unavailable.",
            "schema": {}
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "tests"
        ]
      }
    }
  },
  "definitions": {
    "appApp": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "description": "Unique identifier assigned to the distributed app (UUID).",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "example": "video-transcoding",
          "description": "Human-readable name of the app."
        },
        "version": {
          "type": "string",
          "example": "1.0",
          "title": "App version"
        },
        "owner": {
          "type": "string",
          "example": "b7aac91d-7e62-4923-898f-5c6d9ea48927",
          "description": "UUID of the user who owns the app."
        },
        "status": {
          "type": "string",
          "example": "active",
          "description": "Status of the app, e.g., active, inactive."
        },
        "deviceRequirements": {
          "$ref": "#/definitions/commonDeviceRequirements",
          "title": "Device requirements for running the app"
        },
        "isPublic": {
          "type": "boolean",
          "description": "Indicates whether the app is publicly accessible."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "UTC timestamp when the app was created.",
          "readOnly": true
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "UTC timestamp when the app was last updated.",
          "readOnly": true
        },
        "platform": {
          "type": "string",
          "example": "docker",
          "description": "Target platform for app execution (e.g., docker)."
        },
        "hash": {
          "type": "string",
          "example": "Plv5qqtm1jPtm8Brq4jMj9u/zSJMQV85fl62UNxltcM=",
          "description": "SHA256 checksum of the uploaded tar archive.",
          "readOnly": true
        },
        "link": {
          "type": "string",
          "description": "Currently contains the link to the app's source code."
        },
        "platformConfig": {
          "$ref": "#/definitions/commonPlatformConfig",
          "title": "Platform-specific configuration"
        },
        "entrypoint": {
          "type": "string",
          "example": "main.py",
          "description": "Main executable file or script to launch the application (e.g., main.py)."
        },
        "revision": {
          "type": "string",
          "format": "int64",
          "description": "Internal revision tracking number.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "Optional free-form description of the app."
        },
        "userName": {
          "type": "string",
          "example": "alice",
          "description": "User name of the app owner."
        }
      },
      "description": "Each bytenite job is tagged to an app which describes the type of job being run."
    },
    "appApps": {
      "type": "object",
      "properties": {
        "apps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/appApp"
          }
        }
      }
    },
    "commonBatchIdMessage": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "commonBatchOperationResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/commonError"
          }
        }
      },
      "title": "Generic response for batch operations"
    },
    "commonDeviceRequirements": {
      "type": "object",
      "properties": {
        "minCpu": {
          "type": "number",
          "format": "float",
          "example": 1,
          "description": "Minimum number of vCPUs required to run the app/engine."
        },
        "minMemory": {
          "type": "number",
          "format": "float",
          "example": 2,
          "description": "Minimum amount of RAM (GB) required to run the app."
        },
        "gpu": {
          "type": "array",
          "example": [
            "tesla t4",
            "nvidia a100-sxm4-40gb"
          ],
          "items": {
            "type": "string"
          },
          "description": "Array of GPU models requested to run the app/engine, in order of preference. Use the official GPU identifiers provided by the /wallet/rates endpoint. Leave blank if no GPU is required."
        }
      },
      "description": "DeviceRequirements represents the minimum hardware requirements for running the app/engine."
    },
    "commonError": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int64",
          "example": 404,
          "description": "Error code if the request failed."
        },
        "message": {
          "type": "string",
          "example": "Not Found",
          "description": "Short description of the error if occurred."
        },
        "description": {
          "type": "string",
          "example": "The requested resource was not found",
          "description": "Full detailed explanation of the error if applicable."
        }
      }
    },
    "commonFilter": {
      "type": "object",
      "properties": {
        "field": {
          "type": "string",
          "description": "The field to apply the filter on"
        },
        "condition": {
          "$ref": "#/definitions/commonFilterCondition",
          "description": "The condition to apply"
        },
        "value": {
          "type": "object",
          "$ref": "#/definitions/protobufAny",
          "example": {
            "@type": "type.googleapis.com/google.protobuf.Value",
            "value": "value to filter (any type)"
          },
          "description": "The value to filter on. Can be any type."
        }
      }
    },
    "commonFilterCondition": {
      "type": "string",
      "enum": [
        "FILTER_CONDITION_EQ",
        "FILTER_CONDITION_NEQ",
        "FILTER_CONDITION_GT",
        "FILTER_CONDITION_GTE",
        "FILTER_CONDITION_LT",
        "FILTER_CONDITION_LTE",
        "FILTER_CONDITION_ARRAY_CONTAINS",
        "FILTER_CONDITION_ARRAY_CONTAINS_ANY",
        "FILTER_CONDITION_IN",
        "FILTER_CONDITION_NOT_IN",
        "FILTER_CONDITION_LIKE"
      ],
      "default": "FILTER_CONDITION_EQ"
    },
    "commonGenericResponse": {
      "type": "object",
      "properties": {
        "ok": {
          "type": "boolean",
          "example": false,
          "description": "True if the request was successful."
        },
        "requestId": {
          "type": "string",
          "example": "xyz-123",
          "description": "Internal request identifier for tracing or support."
        },
        "message": {
          "type": "string",
          "example": "Request  failed",
          "description": "Additional message providing status or context."
        },
        "error": {
          "$ref": "#/definitions/commonError",
          "description": "Optional error information if the request failed."
        }
      }
    },
    "commonImportRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "entityRef": {
          "type": "string"
        },
        "overwrite": {
          "type": "boolean"
        }
      }
    },
    "commonLimitOffsetPagination": {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "format": "int64",
          "description": "Number of rows to return per page."
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of rows to skip before starting to collect the result set."
        }
      }
    },
    "commonPaginatedResponse": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer",
          "format": "int64",
          "description": "The total number of transactions available."
        },
        "offset": {
          "type": "integer",
          "format": "int64",
          "description": "The starting position of the current page of results, starting from 0."
        },
        "hasPrevious": {
          "type": "boolean",
          "description": "A boolean value (True/False) indicating whether there's a previous page of results. False if the current page is the first page."
        },
        "hasNext": {
          "type": "boolean",
          "description": "A boolean value indicating whether there's a next page of results."
        }
      },
      "description": "This section provides information about how the results are divided into pages."
    },
    "commonPlatformConfig": {
      "type": "object",
      "properties": {
        "container": {
          "type": "string",
          "example": "python:latest",
          "description": "Container image identifier."
        },
        "privateImage": {
          "type": "boolean",
          "description": "Indicates if the container image is from a private registry."
        },
        "username": {
          "type": "string",
          "description": "Username for accessing a private container registry (if applicable)."
        },
        "token": {
          "type": "string",
          "description": "Authentication token for accessing a private container registry (if applicable)."
        },
        "secrets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of secret names to be injected into the container as environment variables."
        }
      },
      "title": "PlatformConfig represents configuration for a platform"
    },
    "commonVersion": {
      "type": "object",
      "properties": {
        "major": {
          "type": "integer",
          "format": "int64",
          "example": 1
        },
        "minor": {
          "type": "integer",
          "format": "int64",
          "example": 0
        },
        "tag": {
          "type": "string",
          "example": 0
        }
      },
      "description": "A semantic version for managing updates."
    },
    "data_sourceDataSource": {
      "type": "object",
      "properties": {
        "dataSourceDescriptor": {
          "type": "string",
          "example": "s3",
          "description": "Data source selector."
        },
        "params": {
          "$ref": "#/definitions/protobufAny",
          "description": "Data source parameters."
        }
      },
      "description": "The data source object specifying configurations for inputs and outputs. Please refer to the dedicated guide for detailed instructions."
    },
    "developerAppListResponse": {
      "type": "object",
      "properties": {
        "apps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/appApp"
          }
        },
        "pagination": {
          "$ref": "#/definitions/commonPaginatedResponse"
        }
      }
    },
    "developerAppResponse": {
      "type": "object",
      "properties": {
        "app": {
          "$ref": "#/definitions/appApp"
        }
      },
      "title": "Responses"
    },
    "developerCacheType": {
      "type": "string",
      "enum": [
        "SHARED",
        "USER"
      ],
      "default": "SHARED"
    },
    "developerEngineListResponse": {
      "type": "object",
      "properties": {
        "engines": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/engineEngine"
          }
        },
        "pagination": {
          "$ref": "#/definitions/commonPaginatedResponse"
        }
      }
    },
    "developerEngineMessage": {
      "type": "object",
      "properties": {
        "engineId": {
          "type": "string"
        },
        "engineTag": {
          "type": "string"
        },
        "engineData": {
          "type": "string",
          "format": "byte"
        },
        "engineLink": {
          "type": "string"
        },
        "engineStatus": {
          "type": "string"
        }
      }
    },
    "developerGetUserCacheUploadURLResponse": {
      "type": "object",
      "properties": {
        "signedUrl": {
          "type": "string"
        }
      }
    },
    "developerListCacheFileResponse": {
      "type": "object",
      "properties": {
        "fileNames": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "developerServerInfoResponse": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/commonVersion"
        },
        "messages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "developerTemplateListResponse": {
      "type": "object",
      "properties": {
        "templates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jobJobTemplate"
          }
        },
        "pagination": {
          "$ref": "#/definitions/commonPaginatedResponse"
        }
      }
    },
    "developerTestAppRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "title": "Requests"
    },
    "developerTestAppResponse": {
      "type": "object"
    },
    "developerTestResultsResponse": {
      "type": "object"
    },
    "developerUploadAppRequest": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "format": "byte",
          "description": "Base64-encoded tar archive containing application code, configuration, and dependencies."
        }
      },
      "required": [
        "data"
      ]
    },
    "engineEngine": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "Unique UUID identifier for the engine"
        },
        "name": {
          "type": "string",
          "title": "Name of the engine"
        },
        "version": {
          "type": "string",
          "title": "Version string (e.g. \"1.2\")"
        },
        "owner": {
          "type": "string",
          "title": "Owner identifier"
        },
        "type": {
          "type": "string",
          "title": "Optional type of engine (e.g. \"partitioner\", \"assembler\")"
        },
        "status": {
          "type": "string",
          "title": "Status of the engine (e.g. \"inactive\", \"active\")"
        },
        "description": {
          "type": "string",
          "title": "Description of the engine"
        },
        "hash": {
          "type": "string",
          "title": "Optional content hash for engine integrity validation"
        },
        "link": {
          "type": "string",
          "title": "Link to download or access the engine"
        },
        "entrypoint": {
          "type": "string",
          "title": "Entrypoint file or script (default: \"main.py\")"
        },
        "revision": {
          "type": "integer",
          "format": "int32",
          "title": "Revision number for update tracking"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "title": "Timestamp of creation (ISO 8601 format)",
          "readOnly": true
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "title": "Timestamp of last update (ISO 8601 format)",
          "readOnly": true
        },
        "deletedAt": {
          "type": "string",
          "format": "date-time",
          "title": "Timestamp of soft deletion, if applicable",
          "readOnly": true
        },
        "platform": {
          "type": "string",
          "description": "Platform identifier where the engine runs."
        },
        "platformConfig": {
          "$ref": "#/definitions/commonPlatformConfig",
          "title": "Configuration specific to the platform"
        },
        "deviceRequirements": {
          "$ref": "#/definitions/commonDeviceRequirements",
          "title": "Minimum hardware requirements"
        },
        "isPublic": {
          "type": "boolean",
          "description": "Indicates whether the engine is publicly accessible."
        },
        "userName": {
          "type": "string",
          "example": "alice",
          "description": "User name of the engine owner."
        }
      },
      "title": "Represents custom partitioner and assembler engine and its metadata"
    },
    "engineEngines": {
      "type": "object",
      "properties": {
        "engines": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/engineEngine"
          }
        }
      },
      "title": "Array of Engine"
    },
    "jobJobConfig": {
      "type": "object",
      "properties": {
        "taskTimeout": {
          "type": "integer",
          "format": "int64",
          "title": "task timeout in seconds"
        },
        "jobTimeout": {
          "type": "integer",
          "format": "int64",
          "title": "job timeout in seconds"
        },
        "isTestJob": {
          "type": "boolean",
          "title": "'true' if this job is a test job"
        },
        "maxTaskRetries": {
          "type": "integer",
          "format": "int64",
          "title": "Maximum number of retries for each task in the job"
        }
      }
    },
    "jobJobTemplate": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "Unique ID for this Job Template (primary key)"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "title": "Creation time of the job template"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "title": "Timestamp when the job template was last updated"
        },
        "isPublic": {
          "type": "boolean",
          "title": "Indicates if this Job Template is public"
        },
        "partitioner": {
          "type": "string",
          "title": "How data is partitioned"
        },
        "assembler": {
          "type": "string",
          "title": "How data is assembled/merged"
        },
        "dataSource": {
          "$ref": "#/definitions/data_sourceDataSource",
          "title": "Input data source"
        },
        "dataDestination": {
          "$ref": "#/definitions/data_sourceDataSource",
          "title": "Output data destination"
        },
        "params": {
          "$ref": "#/definitions/jobParams",
          "title": "Parameters for the job"
        },
        "config": {
          "$ref": "#/definitions/jobJobConfig",
          "title": "Configuration for the job"
        },
        "userName": {
          "type": "string",
          "example": "alice",
          "description": "User name of the template owner."
        },
        "description": {
          "type": "string",
          "title": "Description of this Job Template"
        },
        "app": {
          "type": "string",
          "title": "The application associated with this Job Template"
        },
        "owner": {
          "type": "string",
          "title": "Owner of this Job Template (primary key)"
        }
      },
      "description": "The templates specific to each app are stored in this table."
    },
    "jobParams": {
      "type": "object",
      "properties": {
        "partitioner": {
          "type": "object"
        },
        "app": {
          "type": "object"
        },
        "assembler": {
          "type": "object"
        }
      },
      "title": "Parameters holds the parameters for the job"
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "protobufNullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "NULL_VALUE",
      "description": "'NullValue' is a singleton enumeration to represent the null value for the\n'Value' type union.\n\n The JSON representation for 'NullValue' is JSON 'null'.\n\n - NULL_VALUE: Null value."
    },
    "rpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    }
  },
  "securityDefinitions": {
    "ApiKeyAuth": {
      "type": "apiKey",
      "description": "Your ByteNite access token",
      "name": "Authorization",
      "in": "header"
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ]
}
