{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/gpodder/json-schema/gpodder-post-api2-episodes-some-user-json-request-schema.json",
  "title": "PostApi2EpisodesSomeUserJsonRequest",
  "x-generated": "2026-10-28",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_ae-authored/gpodder-openapi-generated.yml#/components/schemas/PostApi2EpisodesSomeUserJsonRequest",
  "type": "object",
  "properties": {
    "podcast": {
      "type": "string",
      "description": "The feed URL to the podcast feed the episode belongs to"
    },
    "episode": {
      "type": "string",
      "description": "The media URL of the episode"
    },
    "device": {
      "type": "string",
      "description": "The device ID on which the action has taken place"
    },
    "action": {
      "type": "string",
      "description": "One of: download, play, delete, new"
    },
    "timestamp": {
      "type": "string",
      "description": "A UTC timestamp when the action took place, in ISO 8601 format"
    },
    "started": {
      "type": "integer",
      "description": "Only valid for “play”. the position (in seconds) at which the client started playback. Requires position and total to be set."
    },
    "position": {
      "type": "integer",
      "description": "Only valid for “play”. the position (in seconds) at which the client stopped playback"
    },
    "total": {
      "type": "integer",
      "description": "Only valid for “play”. the total length of the file in seconds. Requires position and started to be set."
    }
  },
  "required": [
    "podcast",
    "episode",
    "action"
  ]
}