{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/rwth-aachen-university/json-schema/rwth-aachen-university-file-tree-dto-paged-response-schema.json",
  "title": "FileTreeDtoPagedResponse",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/rwth-aachen-university-storage-api-openapi.yml#/components/schemas/FileTreeDtoPagedResponse",
  "type": "object",
  "properties": {
    "data": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/FileTreeDto"
      }
    },
    "isSuccess": {
      "type": "boolean",
      "readOnly": true
    },
    "statusCode": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32"
    },
    "traceId": {
      "type": [
        "string",
        "null"
      ]
    },
    "pagination": {
      "$ref": "#/$defs/Pagination"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "FileActionDto": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Gets or sets the presigned URL associated with the file action.",
          "format": "uri"
        },
        "method": {
          "$ref": "#/$defs/FileActionHttpMethod"
        }
      },
      "additionalProperties": false,
      "description": "Represents a Data Transfer Object (DTO) for file actions, including the URL and HTTP method."
    },
    "FileActionHttpMethod": {
      "enum": [
        "GET",
        "POST",
        "PUT",
        "DELETE"
      ],
      "type": "string",
      "description": "Represents the possible HTTP methods associated with file actions."
    },
    "FileActionsDto": {
      "type": "object",
      "properties": {
        "download": {
          "$ref": "#/$defs/FileActionDto"
        }
      },
      "additionalProperties": false,
      "description": "Represents a Data Transfer Object (DTO) for a collection of file actions, including download action details."
    },
    "FileTreeDto": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "description": "Gets the path of the tree item."
        },
        "type": {
          "$ref": "#/$defs/TreeDataType"
        },
        "directory": {
          "type": "string",
          "description": "Gets or sets the directory of the file."
        },
        "name": {
          "type": "string",
          "description": "Gets or sets the name of the file."
        },
        "extension": {
          "type": "string",
          "description": "Gets or sets the extension of the file."
        },
        "size": {
          "type": "integer",
          "description": "Gets or sets the size of the file in bytes.",
          "format": "int64"
        },
        "creationDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or sets the creation date of the file.",
          "format": "date-time"
        },
        "changeDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or sets the last change date of the file.",
          "format": "date-time"
        },
        "actions": {
          "$ref": "#/$defs/FileActionsDto"
        },
        "hidden": {
          "type": "boolean",
          "description": "Determines if the specific tree entry is hidden."
        }
      },
      "additionalProperties": false,
      "description": "Represents a Data Transfer Object (DTO) for a file within a tree structure, extending the base TreeDto."
    },
    "Pagination": {
      "type": "object",
      "properties": {
        "currentPage": {
          "type": "integer",
          "description": "Gets or sets the current page number.",
          "format": "int32"
        },
        "totalPages": {
          "type": "integer",
          "description": "Gets or sets the total number of pages.",
          "format": "int32"
        },
        "pageSize": {
          "type": "integer",
          "description": "Gets or sets the number of items per page.",
          "format": "int32"
        },
        "totalCount": {
          "type": "integer",
          "description": "Gets or sets the total count of items across all pages.",
          "format": "int64"
        },
        "hasPrevious": {
          "type": "boolean",
          "description": "Gets a value indicating whether there is a previous page.",
          "readOnly": true
        },
        "hasNext": {
          "type": "boolean",
          "description": "Gets a value indicating whether there is a next page.",
          "readOnly": true
        }
      },
      "additionalProperties": false,
      "description": "Represents pagination information for a collection of items."
    },
    "TreeDataType": {
      "enum": [
        "Tree",
        "Leaf"
      ],
      "type": "string",
      "description": "Represents the types of nodes within a hierarchical tree structure."
    }
  }
}