{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/woopsocial-com/json-schema/woopsocial-com-upload-session-schema.json",
  "title": "UploadSession",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/woopsocial-com-openapi-openapi.yml#/components/schemas/UploadSession",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "uploadSessionId",
    "partSizeInBytes",
    "partCount",
    "expiresAt",
    "parts"
  ],
  "properties": {
    "uploadSessionId": {
      "type": "string",
      "description": "Media upload session identifier."
    },
    "partSizeInBytes": {
      "type": "integer",
      "format": "int64",
      "description": "Maximum chunk size to use when slicing the file into parts.\n\nFor uploads with more than one part, every part except the last must\nbe exactly this size. The last part may be smaller. For a single-part\nupload, the only part may be smaller than this size.\n"
    },
    "partCount": {
      "type": "integer",
      "format": "int32",
      "description": "Number of parts that must be uploaded before completion."
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time",
      "description": "Time when the presigned part upload URLs expire."
    },
    "parts": {
      "type": "array",
      "description": "Presigned upload targets, in part-number order.",
      "items": {
        "$ref": "#/$defs/UploadSessionPart",
        "description": "Presigned URL and part number for uploading one chunk of the file."
      }
    }
  },
  "$defs": {
    "UploadSessionPart": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "partNumber",
        "uploadUrl"
      ],
      "properties": {
        "partNumber": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "description": "1-based part number to upload to this URL."
        },
        "uploadUrl": {
          "type": "string",
          "format": "uri",
          "description": "Presigned URL that accepts the bytes for `partNumber`."
        }
      }
    }
  }
}