{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/42min-us/json-schema/42min-us-series-schema.json",
  "title": "Series",
  "description": "A recurring meeting booked as one repeating pattern. The occurrences it\nproduced are ordinary bookings: list them with\n`GET /v1/bookings?series_id={uid}`.\n",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/42min-us-api-openapi.yml#/components/schemas/Series",
  "type": "object",
  "required": [
    "uid",
    "version",
    "event_type",
    "host",
    "attendee",
    "frequency",
    "interval_weeks",
    "weekdays",
    "time",
    "timezone",
    "starts_on",
    "count",
    "status",
    "notify_invitee",
    "source",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "uid": {
      "type": "string",
      "format": "uuid"
    },
    "version": {
      "type": "integer",
      "description": "The series revision. Incremented by every action. Surfaced as the ETag."
    },
    "event_type": {
      "type": "object",
      "required": [
        "id",
        "slug",
        "name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "host": {
      "type": "object",
      "required": [
        "user_id",
        "email"
      ],
      "properties": {
        "user_id": {
          "type": "string",
          "format": "uuid"
        },
        "username": {
          "type": [
            "string",
            "null"
          ]
        },
        "email": {
          "type": "string",
          "description": "The address can change; use the id to identify a user."
        }
      }
    },
    "attendee": {
      "type": "object",
      "required": [
        "name",
        "email"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "phone": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "frequency": {
      "type": "string",
      "enum": [
        "weekly",
        "monthly_same_day"
      ]
    },
    "interval_weeks": {
      "type": "integer",
      "description": "Weeks between repeats. Ignored when `frequency` is `monthly_same_day`."
    },
    "weekdays": {
      "type": "array",
      "description": "Empty for a monthly series.",
      "items": {
        "type": "string",
        "enum": [
          "sun",
          "mon",
          "tue",
          "wed",
          "thu",
          "fri",
          "sat"
        ]
      }
    },
    "time": {
      "type": "string",
      "description": "Wall clock in `timezone`, `HH:MM` on a 24-hour clock."
    },
    "timezone": {
      "type": "string"
    },
    "starts_on": {
      "type": "string",
      "format": "date",
      "description": "The first civil day the pattern is walked from."
    },
    "count": {
      "type": "integer",
      "description": "Occurrences requested. Fewer may exist when dates were skipped."
    },
    "status": {
      "type": "string",
      "enum": [
        "active",
        "paused",
        "ended"
      ]
    },
    "location_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The fixed link every occurrence carries, when the series was created with one."
    },
    "notify_invitee": {
      "type": "boolean"
    },
    "source": {
      "type": "string",
      "description": "Where the series came from.",
      "enum": [
        "public",
        "internal",
        "api",
        "mcp"
      ]
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time"
    },
    "ended_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    }
  }
}