{
  "openapi": "3.0.4",
  "info": {
    "title": "Public API",
    "version": "v1"
  },
  "paths": {
    "/v1/files/{fileId}/versions/{versionId}/download": {
      "get": {
        "tags": [
          "Download"
        ],
        "summary": "Download a file version",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/files:download": {
      "post": {
        "tags": [
          "Download"
        ],
        "summary": "Request an asynchronous download job, e.g. for multiple files — each file's latest version\n           is included regardless of release status (`InProgress`/`PendingApproval` included, not just\n           `Released`). Contrast with `files:metadata`'s omitted-`versionId` behavior, which\n           resolves to the latest <em>released</em> version only.",
        "parameters": [
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestDownloadRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestDownloadRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RequestDownloadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDownloadResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDownloadResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestDownloadResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/downloads/{jobId}": {
      "get": {
        "tags": [
          "Download"
        ],
        "summary": "Get the status of a download job",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetDownloadJobResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDownloadJobResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDownloadJobResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/downloads/{jobId}/file": {
      "get": {
        "tags": [
          "Download"
        ],
        "summary": "Get the resulting file of a completed download job",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/export": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Export the whole workspace — every top-level folder, its complete folder/file tree, every\n           file's versions, and the users referenced by them — as a single downloadable JSON file",
        "parameters": [
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/files": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List/search files across the tenant, cursor-paginated",
        "description": "Also accepts arbitrary `prop.{propertyName}` query parameters, filtering by a custom\n           metadata property value — `prop.X=value` for an exact match, or `prop.X=contains:value` for a\n           substring match. Multiple `prop.*` filters combine with AND semantics.",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Last seen file Id from the previous page; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "topLevelFolderId",
            "in": "query",
            "description": "Optional: restrict to a single top-level folder",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Optional: case-insensitive substring match on file name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "releaseStatus",
            "in": "query",
            "description": "Optional: only files with a version at this release status — one of `InProgress`, `PendingApproval`, `Released` (case-insensitive)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "releasedAfter",
            "in": "query",
            "description": "Optional: only files released (approved) on or after this timestamp (ISO 8601)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFilesResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFilesResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFilesResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get a file by id",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files:lookup": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Look up files by name — a file matches if its name contains any one of the given values",
        "parameters": [
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LookupFilesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LookupFilesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LookupFilesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LookupFilesResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupFilesResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupFilesResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files:metadata": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Fetch metadata for a batch of `(fileId, versionId?)` entries in one call — partial\n           success: each item carries its own `status` (`Ok`/`NotFound`/`NoAccess`/\n           `NoReleasedVersion`) rather than dropping unresolvable entries. An omitted/null `versionId`\n           selects the file's current (latest released) version.",
        "parameters": [
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetFilesMetadataBatchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetFilesMetadataBatchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetFilesMetadataBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFilesMetadataBatchResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFilesMetadataBatchResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFilesMetadataBatchResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}/versions": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List versions of a file, offset-paginated",
        "description": "Every version is listed with its status; none of them is flagged as the current one, because\n           \"current\" is a resolution rule and the API applies two different ones. Metadata read without a version resolves\n           to the latest <em>released</em> version, while a download deliberately takes the latest version whatever its\n           release status.",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "File Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Offset from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionsResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionsResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionsResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}/versions/{versionId}/metadata": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get metadata of a file version",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "File Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "description": "Version Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "configurationName",
            "in": "query",
            "description": "Optional: resolve values from this specific configuration instead of the version's active one",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionMetadataResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionMetadataResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionMetadataResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}/versions/{versionId}/configurations": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List the configurations captured on one specific file version",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "File Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "description": "Version Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionConfigurationsResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionConfigurationsResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionConfigurationsResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}/configurations/{configurationName}": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Resolve a specific configuration of a file, by name",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "File Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "configurationName",
            "in": "path",
            "description": "Configuration name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetConfigurationResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetConfigurationResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetConfigurationResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}/configurations/{configurationName}/whereUsed": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Files that reference this specific configuration",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "File Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "configurationName",
            "in": "path",
            "description": "Configuration name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetConfigurationWhereUsedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetConfigurationWhereUsedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetConfigurationWhereUsedResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}/versions/{versionId}/bom": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Get the BOM of a file version; its rows are offset-paginated",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "File Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "description": "Version Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Offset from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Row page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionBomResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionBomResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionBomResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/bom:batch": {
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Get the BOM of a batch of `(fileId, versionId?)` entries in one call. Rows across every\n           resolved file are flattened into one list and offset-paginated by a single cursor; per-file status\n           (`Ok`/`NotFound`/`NoAccess`/`NoReleasedVersion`), columns, and row counts are in the\n           result's `columnsByFileId` map, keyed by file id — columns differ per file, so they can't be a\n           single shared header the way a normal collection endpoint's would be. An omitted/null `versionId`\n           selects the file's current (latest released) version.",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Offset from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Row page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "requestBody": {
          "description": "The batch request body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetBomBatchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetBomBatchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetBomBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetBomBatchResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBomBatchResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetBomBatchResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/{fileId}/versions/{versionId}/artifacts": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List artifacts of a file version, offset-paginated",
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "File Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "description": "Version Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Offset from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionArtifactsResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionArtifactsResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileVersionArtifactsResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/files/changes": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List file changes (creations, new versions, deletions, release-status changes) across\n           the tenant's accessible files, cursor-paginated. Change types: `Created`, `VersionCreated`,\n           `Deleted`, `ReleaseStatusChanged` (carries a `releaseStatus` of `InProgress`,\n           `Released`, or `PendingApproval`).",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Optional: resolved to the nearest cursor position by when a change was\n            <em>recorded</em>, not when it happened (ISO 8601) — a convenience entry point for the first call;\n            ignored once a real cursor is supplied. Usually the same thing, but not after a\n            backfill: a `since` of yesterday can return changes whose own timestamp is years old, because that\n            history was only recorded (backfilled) recently",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Opaque cursor from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileChangesResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileChangesResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileChangesResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/items/{itemId}": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get an item (folder) by id",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetItemResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetItemResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetItemResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/items/{itemId}/children": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get the direct children of a folder, offset-paginated",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The folder's Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Offset from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetItemChildrenResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetItemChildrenResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetItemChildrenResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/top-level-folders": {
      "get": {
        "tags": [
          "TopLevelFolders"
        ],
        "summary": "List the top-level folders of the caller's tenant, offset-paginated",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Offset from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetTopLevelFoldersResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTopLevelFoldersResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTopLevelFoldersResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/top-level-folders/{topLevelFolderId}/children": {
      "get": {
        "tags": [
          "TopLevelFolders"
        ],
        "summary": "Get the children of a top-level folder, offset-paginated",
        "parameters": [
          {
            "name": "topLevelFolderId",
            "in": "path",
            "description": "Top-Level Folder Unique Identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Offset from the previous page's `nextCursor`; omit for the first page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size; defaults to 10, capped at 50",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetTopLevelFolderChildrenResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTopLevelFolderChildrenResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTopLevelFolderChildrenResult"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users:lookup": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Look up users by id — e.g. the `createdBy`/`modifiedBy` ids exposed on file versions",
        "parameters": [
          {
            "name": "Client-Source",
            "in": "header",
            "description": "Client source (web, add-in, backend, etc.)",
            "schema": {
              "type": "string"
            },
            "example": "swagger"
          },
          {
            "name": "Client-Version",
            "in": "header",
            "description": "Client version",
            "schema": {
              "type": "string"
            },
            "example": "1.2.3.4"
          },
          {
            "name": "Client-Context",
            "in": "header",
            "description": "Client context: base64 JSON { sessionId, distinctId, windowId }",
            "schema": {
              "type": "string"
            },
            "example": "eyJzZXNzaW9uSWQiOiIiLCJkaXN0aW5jdElkIjoiIn0="
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LookupUsersRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LookupUsersRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LookupUsersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LookupUsersResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupUsersResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupUsersResult"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "GetBomBatchRequest": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetBomBatchRequest.FileItem"
            },
            "description": "The `(fileId, versionId?)` entries to fetch BOM for — an omitted/null\n            `versionId` selects the file's current (latest released) version",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request body of `POST /v1/bom:batch`"
      },
      "GetBomBatchRequest.FileItem": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "versionId": {
            "type": "integer",
            "description": "Version Unique Identifier, or omitted/null for the current version",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One entry in the request."
      },
      "GetBomBatchResult": {
        "type": "object",
        "properties": {
          "columnsByFileId": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/GetBomBatchResult.FileEntry"
            },
            "description": "Per-file outcome, keyed by the requested file id — present for every entry\n            of the request regardless of which page of Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.Rows is currently being returned",
            "nullable": true
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetBomBatchResult.ItemEntry"
            },
            "description": "Rows across every successfully-resolved file in the batch, in request order then each\n            file's BOM display order; offset-paginated as a whole",
            "nullable": true
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page of Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.Rows; null when there are no more pages",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result of `POST /v1/bom:batch` — BOM rows across a batch of files flattened into one\n           cursor-paginated list (Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.Rows), plus each file's own columns/status/counts in Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.ColumnsByFileId. Columns and available-property columns are resolved per file (they depend on that\n           file's own BOM view and the custom properties present on its components), so they can't be a single shared\n           header the way a normal collection endpoint's would be."
      },
      "GetBomBatchResult.ColumnEntry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Column identifier — matches the keys used in each row's value maps",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "Display label",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "description": "Column kind — `RowNumber`, `Level`, `FileName`, `Quantity`, `Property`, or `Blank`",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A column of a bill of materials"
      },
      "GetBomBatchResult.FileEntry": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "One of `Ok`, `NotFound`, `NoAccess`, `NoReleasedVersion`",
            "nullable": true
          },
          "requestedVersionId": {
            "type": "integer",
            "description": "Version Unique Identifier as passed in the request, or null if the caller asked for the current version",
            "format": "int64",
            "nullable": true
          },
          "resolvedVersionId": {
            "type": "integer",
            "description": "Version Unique Identifier actually used to build the BOM — non-null only when Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.FileEntry.Status is `Ok`",
            "format": "int64",
            "nullable": true
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetBomBatchResult.ColumnEntry"
            },
            "description": "Columns included in this file's bill of materials — non-null only when Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.FileEntry.Status is `Ok`",
            "nullable": true
          },
          "availablePropertyColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetBomBatchResult.ColumnEntry"
            },
            "description": "Custom property columns that can be added but aren't currently\n            included — non-null only when Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.FileEntry.Status is `Ok`",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "description": "Total number of rows for this file, across all levels and pages — non-null only when Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.FileEntry.Status is `Ok`",
            "format": "int32",
            "nullable": true
          },
          "topLevelRowCount": {
            "type": "integer",
            "description": "Number of top-level rows (depth 0) for this file, across all pages — non-null only when Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.FileEntry.Status is `Ok`",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One requested file's outcome."
      },
      "GetBomBatchResult.ItemEntry": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "integer",
            "description": "File Unique Identifier from the request — the file whose BOM this row belongs to",
            "format": "int64"
          },
          "versionId": {
            "type": "integer",
            "description": "Version Unique Identifier actually used to build this file's BOM (resolved, may differ from what was requested)",
            "format": "int64"
          },
          "row": {
            "$ref": "#/components/schemas/GetBomBatchResult.RowEntry"
          }
        },
        "additionalProperties": false,
        "description": "One row of the flattened batch list, tagged with the file whose BOM it belongs to. Note that\n           Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.RowEntry.FileId (the referenced component on that specific row) is unrelated to this\n           entry's own Sibe.PublicApi.Application.Commands.GetBomBatch.GetBomBatchResult.ItemEntry.FileId (the requested file this row's BOM belongs to) — the two coincide only\n           for a part file's single row, never in general for an assembly."
      },
      "GetBomBatchResult.RowEntry": {
        "type": "object",
        "properties": {
          "rowNumber": {
            "type": "integer",
            "description": "Row number",
            "format": "int32"
          },
          "level": {
            "type": "string",
            "description": "Hierarchical level (e.g. `\"1.2.1\"`)",
            "nullable": true
          },
          "depth": {
            "type": "integer",
            "description": "Nesting depth — `0` for a top-level row",
            "format": "int32"
          },
          "fileName": {
            "type": "string",
            "description": "File name at this row",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder the referenced file belongs to, if known",
            "format": "int64",
            "nullable": true
          },
          "fileId": {
            "type": "integer",
            "description": "The referenced file's Unique Identifier, if known — the component/sub-assembly at this row, not the batch entry's own file id",
            "format": "int64",
            "nullable": true
          },
          "dependencyState": {
            "type": "string",
            "description": "Dependency state — `Missing`, `Existing`, `Ambiguous`, or `Virtual`",
            "nullable": true
          },
          "isAccessible": {
            "type": "boolean",
            "description": "Whether the caller has access to the referenced file"
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity, if applicable",
            "format": "int32",
            "nullable": true
          },
          "propertyValuesByColumnName": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom property values, keyed by column name",
            "nullable": true
          },
          "rowId": {
            "type": "integer",
            "description": "Row Unique Identifier, if this row has editable values",
            "format": "int64",
            "nullable": true
          },
          "cellValuesByColumnName": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Editable cell values, keyed by column name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A row of a bill of materials — same shape as `GetFileVersionBomResult.RowEntry`"
      },
      "GetConfigurationResult": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Configuration name — its identity, stable across the file's versions",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "description": "The part number assigned to this configuration, if any",
            "nullable": true
          },
          "fileId": {
            "type": "integer",
            "description": "The file this configuration belongs to",
            "format": "int64"
          },
          "versionId": {
            "type": "integer",
            "description": "The file version this configuration's live data is currently resolved from",
            "format": "int64"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetConfigurationResult.FieldEntry"
            },
            "description": "Tenant-configured custom property values captured on this configuration",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A configuration's current-version data"
      },
      "GetConfigurationResult.FieldEntry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Property name",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Property value",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A custom property value on a configuration"
      },
      "GetConfigurationWhereUsedResult": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetConfigurationWhereUsedResult.FileEntry"
            },
            "description": "The referencing files",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The files that reference a specific configuration"
      },
      "GetConfigurationWhereUsedResult.FileEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "File name",
            "nullable": true
          },
          "path": {
            "type": "string",
            "description": "Full path, including the owning top-level folder's name as its first segment",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this file belongs to",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier, or null if this file sits directly under its top-level folder",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "`\"active\"` or `\"deleted\"`",
            "nullable": true
          },
          "webUrl": {
            "type": "string",
            "description": "Share link to this file's view, or null if unavailable",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A file"
      },
      "GetDownloadJobResult": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "Download Job Unique Identifier",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "Job status — `Pending`, `Completed`, or `Failed`",
            "nullable": true
          },
          "createdOn": {
            "type": "string",
            "description": "When the job was created, if known",
            "format": "date-time",
            "nullable": true
          },
          "completedOn": {
            "type": "string",
            "description": "When the job finished, if it has",
            "format": "date-time",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "description": "File name, once the job has completed",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "description": "File size in bytes, once the job has completed",
            "format": "int64",
            "nullable": true
          },
          "error": {
            "type": "string",
            "description": "Failure reason, once the job has failed",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Status of a download job"
      },
      "GetFileChangesResult": {
        "type": "object",
        "properties": {
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileChangesResult.ChangeEntry"
            },
            "description": "Changes in this page, oldest first",
            "nullable": true
          },
          "nextCursor": {
            "type": "string",
            "description": "Cursor to request the next page — the last change's position, or the cursor/since\n            this call was made with, echoed back unchanged when this page came back empty; null\n            only on a first call (no cursor) that also came back empty",
            "nullable": true
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether another page is already available versus having caught up to the tip of the\n            feed for now — this is a feed meant to be polled indefinitely, not paged to a definite end, so that's\n            signalled here rather than by NextCursor going null"
          }
        },
        "additionalProperties": false,
        "description": "A page of file changes"
      },
      "GetFileChangesResult.ChangeEntry": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "versionId": {
            "type": "integer",
            "description": "Version Unique Identifier; null for a file-level change (`Created`, `Deleted`,\n            or a `ReleaseStatusChanged` entry that isn't tied to a specific version)",
            "format": "int64",
            "nullable": true
          },
          "changeType": {
            "type": "string",
            "description": "`Created`, `VersionCreated`, `Deleted`, or `ReleaseStatusChanged`",
            "nullable": true
          },
          "releaseStatus": {
            "type": "string",
            "description": "The status the file's release transitioned to: `InProgress`, `Released`, or\n            `PendingApproval`; only set for `ReleaseStatusChanged`",
            "nullable": true
          },
          "changedAt": {
            "type": "string",
            "description": "When the change occurred",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A single file change"
      },
      "GetFileResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "File name",
            "nullable": true
          },
          "path": {
            "type": "string",
            "description": "Full path, including the owning top-level folder's name as its first segment",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this file belongs to",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier, or null if this file sits directly under its top-level folder",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "`\"active\"` or `\"deleted\"`",
            "nullable": true
          },
          "webUrl": {
            "type": "string",
            "description": "Share link to this file's view (the same short link the app's Share dialog hands out), or null if unavailable",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A file"
      },
      "GetFileVersionArtifactsResult": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionArtifactsResult.FileEntry"
            },
            "description": "The derived files in this page",
            "nullable": true
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page; null when there are no more pages",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A page of files derived from a file version (e.g. exported drawings or converted formats)"
      },
      "GetFileVersionArtifactsResult.FileEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "File name",
            "nullable": true
          },
          "path": {
            "type": "string",
            "description": "Full path, including the owning top-level folder's name as its first segment",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this file belongs to",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier, or null if this file sits directly under its top-level folder",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "`\"active\"` or `\"deleted\"`",
            "nullable": true
          },
          "webUrl": {
            "type": "string",
            "description": "Share link to this file's view (the same short link the app's Share dialog hands out), or null if unavailable",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A file"
      },
      "GetFileVersionBomResult": {
        "type": "object",
        "properties": {
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionBomResult.ColumnEntry"
            },
            "description": "Columns included in the bill of materials",
            "nullable": true
          },
          "availablePropertyColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionBomResult.ColumnEntry"
            },
            "description": "Custom property columns that can be added but aren't currently included",
            "nullable": true
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionBomResult.RowEntry"
            },
            "description": "Rows of the bill of materials in this page, in display order",
            "nullable": true
          },
          "totalRowCount": {
            "type": "integer",
            "description": "Total number of rows, across all levels and pages",
            "format": "int32"
          },
          "topLevelRowCount": {
            "type": "integer",
            "description": "Number of top-level rows (depth 0), across all pages",
            "format": "int32"
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page of Sibe.PublicApi.Application.Commands.GetFileVersionBom.GetFileVersionBomResult.Rows; null when there are no more pages",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Bill of materials of a file version; Sibe.PublicApi.Application.Commands.GetFileVersionBom.GetFileVersionBomResult.Rows is offset-paginated, the rest describes the whole BOM"
      },
      "GetFileVersionBomResult.ColumnEntry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Column identifier — matches the keys used in each row's value maps",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "Display label",
            "nullable": true
          },
          "kind": {
            "type": "string",
            "description": "Column kind — `RowNumber`, `Level`, `FileName`, `Quantity`, `Property`, or `Blank`",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A column of the bill of materials"
      },
      "GetFileVersionBomResult.RowEntry": {
        "type": "object",
        "properties": {
          "rowNumber": {
            "type": "integer",
            "description": "Row number",
            "format": "int32"
          },
          "level": {
            "type": "string",
            "description": "Hierarchical level (e.g. `\"1.2.1\"`)",
            "nullable": true
          },
          "depth": {
            "type": "integer",
            "description": "Nesting depth — `0` for a top-level row",
            "format": "int32"
          },
          "fileName": {
            "type": "string",
            "description": "File name at this row",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder the referenced file belongs to, if known",
            "format": "int64",
            "nullable": true
          },
          "fileId": {
            "type": "integer",
            "description": "The referenced file's Unique Identifier, if known",
            "format": "int64",
            "nullable": true
          },
          "versionId": {
            "type": "integer",
            "description": "The referenced file version's Unique Identifier, if known",
            "format": "int64",
            "nullable": true
          },
          "versionNumber": {
            "type": "integer",
            "description": "The referenced file version's number, if known",
            "format": "int32",
            "nullable": true
          },
          "configurationName": {
            "type": "string",
            "description": "The referenced configuration's name, if known",
            "nullable": true
          },
          "dependencyState": {
            "type": "string",
            "description": "Dependency state — `Missing`, `Existing`, `Ambiguous`, or `Virtual`",
            "nullable": true
          },
          "isAccessible": {
            "type": "boolean",
            "description": "Whether the caller has access to the referenced file"
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity, if applicable",
            "format": "int32",
            "nullable": true
          },
          "propertyValuesByColumnName": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom property values, keyed by column name",
            "nullable": true
          },
          "rowId": {
            "type": "integer",
            "description": "Row Unique Identifier, if this row has editable values",
            "format": "int64",
            "nullable": true
          },
          "cellValuesByColumnName": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Editable cell values, keyed by column name",
            "nullable": true
          },
          "parentRowId": {
            "type": "integer",
            "description": "The parent row's Sibe.PublicApi.Application.Commands.GetFileVersionBom.GetFileVersionBomResult.RowEntry.RowNumber, or null for a top-level row",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A row of the bill of materials"
      },
      "GetFileVersionConfigurationsResult": {
        "type": "object",
        "properties": {
          "configurations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionConfigurationsResult.ConfigurationEntry"
            },
            "description": "The version's configurations",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The configurations captured on one specific file version"
      },
      "GetFileVersionConfigurationsResult.ConfigurationEntry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Configuration name — its identity",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "description": "The part number assigned to this configuration, if any",
            "nullable": true
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionConfigurationsResult.ConfigurationEntry.FieldEntry"
            },
            "description": "Tenant-configured custom property values captured on this configuration",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A configuration, in the summary shape used when browsing from the file side"
      },
      "GetFileVersionConfigurationsResult.ConfigurationEntry.FieldEntry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Property name",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Property value",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A custom property value on a configuration"
      },
      "GetFileVersionMetadataResult": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "versionId": {
            "type": "integer",
            "description": "Version Unique Identifier",
            "format": "int64"
          },
          "activeConfiguration": {
            "type": "string",
            "description": "The active CAD configuration this metadata was captured from, if any",
            "nullable": true
          },
          "configurationName": {
            "type": "string",
            "description": "Configuration name this metadata was resolved from, if requested",
            "nullable": true
          },
          "releaseStatus": {
            "type": "string",
            "description": "Release status of this version — `InProgress`, `PendingApproval`, or `Released`",
            "nullable": true
          },
          "revision": {
            "type": "string",
            "description": "Revision identifier (e.g. `\"A\"`), assigned once this version is submitted for release; null if never submitted",
            "nullable": true
          },
          "createdBy": {
            "type": "integer",
            "description": "Unique Identifier of the user who created this version — resolve to a display name via `POST /v1/users:lookup`",
            "format": "int64"
          },
          "createdAt": {
            "type": "string",
            "description": "When this version was created",
            "format": "date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "When this version was last modified, if it has been",
            "format": "date-time",
            "nullable": true
          },
          "approvedBy": {
            "type": "integer",
            "description": "Unique Identifier of the user who approved this version's release, or null if not yet approved",
            "format": "int64",
            "nullable": true
          },
          "approvedAt": {
            "type": "string",
            "description": "When this version's release was approved, or null if not yet approved",
            "format": "date-time",
            "nullable": true
          },
          "drawingNumber": {
            "type": "string",
            "description": "Drawing number for this version, if available",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "description": "The part number assigned to this file version by Sibe's part-numbering feature, if any. Fixed at assignment time — a later rename of the file does not change it",
            "nullable": true
          },
          "viewerUrl": {
            "type": "string",
            "description": "Link to an embedded viewer for this version, if available",
            "nullable": true
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionMetadataResult.FieldEntry"
            },
            "description": "Custom property values configured for the tenant (e.g. material, revision, weight)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Metadata of a file version"
      },
      "GetFileVersionMetadataResult.FieldEntry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Property name",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Property value",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A custom property value on a file version"
      },
      "GetFileVersionsResult": {
        "type": "object",
        "properties": {
          "versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFileVersionsResult.VersionEntry"
            },
            "description": "The file's versions in this page, newest first",
            "nullable": true
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page; null when there are no more pages",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A page of a file's versions"
      },
      "GetFileVersionsResult.VersionEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Version Unique Identifier",
            "format": "int64"
          },
          "number": {
            "type": "integer",
            "description": "Version number",
            "format": "int32"
          },
          "createdOn": {
            "type": "string",
            "description": "When this version was created",
            "format": "date-time"
          },
          "createdBy": {
            "type": "integer",
            "description": "Unique Identifier of the user who created this version",
            "format": "int64"
          },
          "modifiedOn": {
            "type": "string",
            "description": "When this version was last modified, if it has been",
            "format": "date-time",
            "nullable": true
          },
          "modifiedBy": {
            "type": "integer",
            "description": "Unique Identifier of the user who last modified this version, if it has been",
            "format": "int64",
            "nullable": true
          },
          "fileSize": {
            "type": "integer",
            "description": "File size, in bytes",
            "format": "int64"
          },
          "releaseStatus": {
            "type": "string",
            "description": "Release status of this version — `InProgress`, `Released`, or `PendingApproval`",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A version of a file"
      },
      "GetFilesMetadataBatchRequest": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFilesMetadataBatchRequest.FileItem"
            },
            "description": "The `(fileId, versionId?)` entries to fetch metadata for — an omitted/null\n            `versionId` selects the file's current (latest released) version",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request body of `POST /v1/files:metadata`"
      },
      "GetFilesMetadataBatchRequest.FileItem": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "versionId": {
            "type": "integer",
            "description": "Version Unique Identifier, or omitted/null for the current version",
            "format": "int64",
            "nullable": true
          },
          "configurationName": {
            "type": "string",
            "description": "Optional: resolve values from this specific configuration instead of the version's active one",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One entry in the request."
      },
      "GetFilesMetadataBatchResult": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFilesMetadataBatchResult.ItemEntry"
            },
            "description": "Per-entry outcomes",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result of `POST /v1/files:metadata` — one item per request entry, in the same order"
      },
      "GetFilesMetadataBatchResult.FieldEntry": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Property name",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Property value",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A custom property value on a file version"
      },
      "GetFilesMetadataBatchResult.ItemEntry": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "integer",
            "description": "File Unique Identifier from the request",
            "format": "int64"
          },
          "requestedVersionId": {
            "type": "integer",
            "description": "Version Unique Identifier as passed in the request, or null\n            if the caller asked for the current version — echoed back so the caller can match items to their request",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "One of `Ok`, `NotFound`, `NoAccess`, `NoReleasedVersion`",
            "nullable": true
          },
          "metadata": {
            "$ref": "#/components/schemas/GetFilesMetadataBatchResult.MetadataEntry"
          }
        },
        "additionalProperties": false,
        "description": "One entry's outcome."
      },
      "GetFilesMetadataBatchResult.MetadataEntry": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "versionId": {
            "type": "integer",
            "description": "Version Unique Identifier that was resolved (may differ from the request's when the request omitted it)",
            "format": "int64"
          },
          "activeConfiguration": {
            "type": "string",
            "description": "The active CAD configuration this metadata was captured from, if any",
            "nullable": true
          },
          "configurationName": {
            "type": "string",
            "description": "Configuration name this metadata was resolved from, if requested",
            "nullable": true
          },
          "releaseStatus": {
            "type": "string",
            "description": "Release status of this version — `InProgress`, `PendingApproval`, or `Released`",
            "nullable": true
          },
          "revision": {
            "type": "string",
            "description": "Revision identifier (e.g. `\"A\"`), assigned once this version is submitted for release; null if never submitted",
            "nullable": true
          },
          "createdBy": {
            "type": "integer",
            "description": "Unique Identifier of the user who created this version — resolve to a display name via `POST /v1/users:lookup`",
            "format": "int64"
          },
          "createdAt": {
            "type": "string",
            "description": "When this version was created",
            "format": "date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "When this version was last modified, if it has been",
            "format": "date-time",
            "nullable": true
          },
          "approvedBy": {
            "type": "integer",
            "description": "Unique Identifier of the user who approved this version's release, or null if not yet approved",
            "format": "int64",
            "nullable": true
          },
          "approvedAt": {
            "type": "string",
            "description": "When this version's release was approved, or null if not yet approved",
            "format": "date-time",
            "nullable": true
          },
          "drawingNumber": {
            "type": "string",
            "description": "Drawing number for this version, if available",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "description": "The part number assigned to this file version by Sibe's part-numbering feature, if any. Fixed at assignment time — a later rename of the file does not change it",
            "nullable": true
          },
          "viewerUrl": {
            "type": "string",
            "description": "Link to an embedded viewer for this version, if available",
            "nullable": true
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFilesMetadataBatchResult.FieldEntry"
            },
            "description": "Custom property values configured for the tenant (e.g. material, revision, weight)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Metadata payload for a successfully-resolved entry — same field-for-field shape as the\n           single-file `GET /v1/files/{fileId}/versions/{versionId}/metadata` response."
      },
      "GetFilesResult": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetFilesResult.FileEntry"
            },
            "description": "Files in this page",
            "nullable": true
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page; null when there are no more pages",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A page of files"
      },
      "GetFilesResult.FileEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "File name",
            "nullable": true
          },
          "path": {
            "type": "string",
            "description": "Full path, including the owning top-level folder's name as its first segment",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this file belongs to",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier, or null if this file sits directly under its top-level folder",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "`\"active\"` or `\"deleted\"`",
            "nullable": true
          },
          "webUrl": {
            "type": "string",
            "description": "Share link to this file's view (the same short link the app's Share dialog hands out), or null if unavailable",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A file"
      },
      "GetItemChildrenResult": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetItemChildrenResult.ChildEntry"
            },
            "description": "Direct children of the item in this page",
            "nullable": true
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page; null when there are no more pages",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A page of a folder's direct children"
      },
      "GetItemChildrenResult.ChildEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Child Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Child name",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Child type",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this child belongs to",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier — always the item whose children were listed",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A direct child (file or folder) of the item"
      },
      "GetItemResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Item Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Item name",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this item belongs to",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier, or null if this item sits directly under its top-level folder",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An item"
      },
      "GetTopLevelFolderChildrenResult": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetTopLevelFolderChildrenResult.ChildEntry"
            },
            "description": "Direct children of the top-level folder in this page",
            "nullable": true
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page; null when there are no more pages",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A page of a top-level folder's direct children"
      },
      "GetTopLevelFolderChildrenResult.ChildEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Child Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Child name",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Child type",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this child belongs to — always the one whose children were listed",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier — always null, since direct children of a top-level folder have no parent folder",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A direct child (file or folder) of the top-level folder"
      },
      "GetTopLevelFoldersResult": {
        "type": "object",
        "properties": {
          "topLevelFolders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetTopLevelFoldersResult.TopLevelFolderEntry"
            },
            "description": "The tenant's top-level folders in this page",
            "nullable": true
          },
          "nextCursor": {
            "type": "integer",
            "description": "Cursor to request the next page; null when there are no more pages",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A page of the tenant's top-level folders"
      },
      "GetTopLevelFoldersResult.TopLevelFolderEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Top-Level Folder Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Top-Level Folder name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A top-level folder"
      },
      "LookupFilesRequest": {
        "type": "object",
        "properties": {
          "names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Name substrings to match against — a file matches if its name contains any one of these",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request body of `POST /v1/files:lookup`"
      },
      "LookupFilesResult": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupFilesResult.FileEntry"
            },
            "description": "The matching files",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The matching files"
      },
      "LookupFilesResult.FileEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "File Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "File name",
            "nullable": true
          },
          "path": {
            "type": "string",
            "description": "Full path, including the owning top-level folder's name as its first segment",
            "nullable": true
          },
          "topLevelFolderId": {
            "type": "integer",
            "description": "The top-level folder this file belongs to",
            "format": "int64"
          },
          "itemId": {
            "type": "integer",
            "description": "The immediate parent folder's Unique Identifier, or null if this file sits directly under its top-level folder",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "`\"active\"` or `\"deleted\"`",
            "nullable": true
          },
          "webUrl": {
            "type": "string",
            "description": "Share link to this file's view (the same short link the app's Share dialog hands out), or null if unavailable",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A file"
      },
      "LookupUsersRequest": {
        "type": "object",
        "properties": {
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "User Unique Identifiers to resolve — e.g. the `createdBy`/`modifiedBy` ids on a file version",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request body of `POST /v1/users:lookup`"
      },
      "LookupUsersResult": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupUsersResult.UserEntry"
            },
            "description": "The matching users — ids that don't exist or aren't visible are simply absent",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Matching users"
      },
      "LookupUsersResult.UserEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "User Unique Identifier",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Display name",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address, if available",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A user"
      },
      "RequestDownloadRequest": {
        "type": "object",
        "properties": {
          "fileIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "File Unique Identifiers to include — the latest version of each is downloaded",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request body of `POST /v1/files:download`"
      },
      "RequestDownloadResult": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "Download Job Unique Identifier",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "Job status — `Pending`, `Completed`, or `Failed`",
            "nullable": true
          },
          "createdOn": {
            "type": "string",
            "description": "When the job was created, if known",
            "format": "date-time",
            "nullable": true
          },
          "completedOn": {
            "type": "string",
            "description": "When the job finished, if it has",
            "format": "date-time",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "description": "File name, once the job has completed",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "description": "File size in bytes, once the job has completed",
            "format": "int64",
            "nullable": true
          },
          "error": {
            "type": "string",
            "description": "Failure reason, once the job has failed",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Status of a download job"
      }
    },
    "securitySchemes": {
      "X-Api-Key": {
        "type": "apiKey",
        "description": "Personal access token: `X-Api-Key: sibe_pat_...`",
        "name": "X-Api-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "X-Api-Key": [ ]
    }
  ],
  "tags": [
    {
      "name": "Download",
      "description": "Public API — Download"
    },
    {
      "name": "Export",
      "description": "Public API — Export"
    },
    {
      "name": "Files",
      "description": "Public API — Files"
    },
    {
      "name": "Items",
      "description": "Public API — Items. Item ids come from a children listing or from a file's own\n           `itemId` field. Top-level folder ids are a separate id space and are not accepted here."
    },
    {
      "name": "TopLevelFolders",
      "description": "Public API — Top-Level Folders. The entry point into a tenant's root items — ids\n           returned here always identify a top-level folder, never a nested folder or file."
    },
    {
      "name": "Users",
      "description": "Public API — Users"
    }
  ]
}