{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/juzpost/json-schema/juzpost-smart-schedule-request-schema.json",
  "title": "SmartScheduleRequest",
  "description": "Inputs for the bulk scheduler. You must supply either `group` or a non-empty\n`socialAccountIds`; if both are given, `socialAccountIds` wins.\n",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/juzpost-openapi.json#/components/schemas/SmartScheduleRequest",
  "type": "object",
  "required": [
    "minPerDay"
  ],
  "properties": {
    "minPerDay": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "How many posts to place per day. Must not exceed the number of available time slots,\nor the call fails with `422`. Add more times or lower this number.\n"
    },
    "group": {
      "type": "string",
      "description": "Name of the channel group whose accounts should receive every post, matched exactly\nas returned by `GET /groups`. Unknown names return `404`.\n"
    },
    "socialAccountIds": {
      "type": "array",
      "description": "Explicit accounts to receive every post, used instead of `group`. Duplicates are\ncollapsed. More than 10 distinct accounts is rejected with `422`.\n",
      "items": {
        "type": "string",
        "format": "uuid",
        "description": "A social account id from `GET /accounts`."
      }
    },
    "postIds": {
      "type": "array",
      "description": "The specific drafts to schedule, in the order you want them placed. Omit this to use\nevery draft you have, oldest first, up to 200. Any id that is not one of your\ndrafts is reported in `skipped` rather than failing the call.\n",
      "items": {
        "type": "string",
        "format": "uuid",
        "description": "A draft post id."
      }
    },
    "startDate": {
      "type": "string",
      "format": "date",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First calendar day to place posts on, as `YYYY-MM-DD` in your timezone.\nDefaults to tomorrow. Slots less than five minutes away are skipped, so a start date\nin the past simply yields fewer usable slots.\n"
    },
    "times": {
      "type": "array",
      "description": "Wall-clock posting times as `HH:MM` in your timezone, overriding the\nyour defaults for this call only. Times are sorted ascending and the earliest\n`minPerDay` of them are used each day.\n",
      "items": {
        "type": "string",
        "pattern": "^\\d{2}:\\d{2}$",
        "description": "A posting time as `HH:MM` in your timezone."
      }
    },
    "dryRun": {
      "type": "boolean",
      "description": "When true, compute and return the plan without creating any timers. Run this first\nto confirm the dates look right, then repeat without it.\n"
    }
  }
}