{
  "components": {
    "schemas": {
      "AccessCheckAttributes": {
        "additionalProperties": false,
        "properties": {
          "has_access": {
            "title": "Has Access",
            "type": "boolean"
          },
          "reason": {
            "title": "Reason",
            "type": "string"
          }
        },
        "required": [
          "has_access",
          "reason"
        ],
        "title": "AccessCheckAttributes",
        "type": "object"
      },
      "AccessCheckResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AccessCheckAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "access_checks",
            "default": "access_checks",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AccessCheckResource",
        "type": "object"
      },
      "AccessCheckResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AccessCheckResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AccessCheckResponse",
        "type": "object"
      },
      "AccessRuleAttributes": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "items": {
              "$ref": "#/components/schemas/ConditionAttributes"
            },
            "title": "Conditions",
            "type": "array"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "logic_operator": {
            "title": "Logic Operator",
            "type": "string"
          },
          "target_id": {
            "title": "Target Id",
            "type": "string"
          },
          "target_type": {
            "title": "Target Type",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "target_type",
          "target_id",
          "logic_operator",
          "team_id",
          "conditions",
          "created_at",
          "updated_at"
        ],
        "title": "AccessRuleAttributes",
        "type": "object"
      },
      "AccessRuleCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "items": {
              "$ref": "#/components/schemas/ConditionInput"
            },
            "title": "Conditions",
            "type": "array"
          },
          "logic_operator": {
            "default": "any",
            "title": "Logic Operator",
            "type": "string"
          },
          "target_id": {
            "title": "Target Id",
            "type": "string"
          },
          "target_type": {
            "title": "Target Type",
            "type": "string"
          }
        },
        "required": [
          "target_type",
          "target_id"
        ],
        "title": "AccessRuleCreateAttributes",
        "type": "object"
      },
      "AccessRuleCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AccessRuleCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AccessRuleCreateEnvelope",
        "type": "object"
      },
      "AccessRuleCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AccessRuleCreateAttributes"
          },
          "type": {
            "const": "access_rules",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AccessRuleCreateResource",
        "type": "object"
      },
      "AccessRuleListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AccessRuleResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "AccessRuleListResponse",
        "type": "object"
      },
      "AccessRuleResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AccessRuleAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "access_rules",
            "default": "access_rules",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AccessRuleResource",
        "type": "object"
      },
      "AccessRuleResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AccessRuleResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AccessRuleResponse",
        "type": "object"
      },
      "AccessRuleUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ConditionInput"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conditions"
          },
          "logic_operator": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logic Operator"
          }
        },
        "title": "AccessRuleUpdateAttributes",
        "type": "object"
      },
      "AccessRuleUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AccessRuleUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AccessRuleUpdateEnvelope",
        "type": "object"
      },
      "AccessRuleUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AccessRuleUpdateAttributes"
          },
          "type": {
            "const": "access_rules",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AccessRuleUpdateResource",
        "type": "object"
      },
      "AchievementAppearance": {
        "additionalProperties": false,
        "description": "Validated `appearance` JSONB payload for an achievement definition.",
        "properties": {
          "color": {
            "default": "#5581f4",
            "title": "Color",
            "type": "string"
          },
          "content_color": {
            "default": "#ffffff",
            "title": "Content Color",
            "type": "string"
          },
          "emoji": {
            "anyOf": [
              {
                "maxLength": 16,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Emoji"
          },
          "fill_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fill Color"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "image_src": {
            "anyOf": [
              {
                "maxLength": 2048,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Src"
          },
          "shape": {
            "default": "hexagon",
            "title": "Shape",
            "type": "string"
          },
          "text": {
            "anyOf": [
              {
                "maxLength": 8,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Text"
          }
        },
        "title": "AchievementAppearance",
        "type": "object"
      },
      "AchievementAttachAttributes": {
        "description": "Attributes accepted when offering an achievement in a hub.",
        "properties": {
          "achievement_id": {
            "title": "Achievement Id",
            "type": "string"
          }
        },
        "required": [
          "achievement_id"
        ],
        "title": "AchievementAttachAttributes",
        "type": "object"
      },
      "AchievementAttachData": {
        "description": "JSON:API data envelope for attaching an achievement to a hub.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementAttachAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AchievementAttachData",
        "type": "object"
      },
      "AchievementAttachEnvelope": {
        "description": "Top-level JSON:API request envelope for attaching an achievement to a hub.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AchievementAttachData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AchievementAttachEnvelope",
        "type": "object"
      },
      "AchievementAttributes": {
        "description": "Wire-shape attributes for an achievements resource (the definition).",
        "properties": {
          "appearance": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AchievementAppearance"
              },
              {
                "type": "null"
              }
            ]
          },
          "award_mode": {
            "title": "Award Mode",
            "type": "string"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "email_notification_enabled": {
            "title": "Email Notification Enabled",
            "type": "boolean"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "is_secret": {
            "title": "Is Secret",
            "type": "boolean"
          },
          "points": {
            "title": "Points",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "title",
          "award_mode",
          "points",
          "is_secret",
          "is_active",
          "email_notification_enabled",
          "created_at",
          "updated_at"
        ],
        "title": "AchievementAttributes",
        "type": "object"
      },
      "AchievementCatalogAttributes": {
        "description": "Definition attributes plus the viewer's own (nullable) earn state.\n\nUsed by member-facing catalog reads: earned_at/points_awarded/revoked_at\nare None when the viewer has not earned this achievement.",
        "properties": {
          "appearance": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AchievementAppearance"
              },
              {
                "type": "null"
              }
            ]
          },
          "award_mode": {
            "title": "Award Mode",
            "type": "string"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "earned_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Earned At"
          },
          "email_notification_enabled": {
            "title": "Email Notification Enabled",
            "type": "boolean"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "is_secret": {
            "title": "Is Secret",
            "type": "boolean"
          },
          "points": {
            "title": "Points",
            "type": "integer"
          },
          "points_awarded": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Points Awarded"
          },
          "revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "title",
          "award_mode",
          "points",
          "is_secret",
          "is_active",
          "email_notification_enabled",
          "created_at",
          "updated_at"
        ],
        "title": "AchievementCatalogAttributes",
        "type": "object"
      },
      "AchievementCreateAttributes": {
        "description": "Attributes accepted in the POST /achievements body.",
        "properties": {
          "appearance": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AchievementAppearance"
              },
              {
                "type": "null"
              }
            ]
          },
          "award_mode": {
            "default": "manual",
            "title": "Award Mode",
            "type": "string"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "email_notification_enabled": {
            "default": true,
            "title": "Email Notification Enabled",
            "type": "boolean"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "is_secret": {
            "default": false,
            "title": "Is Secret",
            "type": "boolean"
          },
          "points": {
            "default": 0,
            "minimum": 0.0,
            "title": "Points",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "title": "AchievementCreateAttributes",
        "type": "object"
      },
      "AchievementCreateData": {
        "description": "JSON:API data envelope for POST /achievements.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementCreateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AchievementCreateData",
        "type": "object"
      },
      "AchievementCreateEnvelope": {
        "description": "Top-level JSON:API request envelope for POST /achievements.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AchievementCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AchievementCreateEnvelope",
        "type": "object"
      },
      "AchievementEarnAttributes": {
        "description": "Wire-shape attributes for an achievement_earns resource.",
        "properties": {
          "achievement_id": {
            "title": "Achievement Id",
            "type": "string"
          },
          "award_reason": {
            "title": "Award Reason",
            "type": "string"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "earned_at": {
            "format": "date-time",
            "title": "Earned At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "points_awarded": {
            "title": "Points Awarded",
            "type": "integer"
          },
          "restored_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Restored At"
          },
          "revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          },
          "source": {
            "title": "Source",
            "type": "string"
          }
        },
        "required": [
          "achievement_id",
          "hub_id",
          "contact_id",
          "source",
          "award_reason",
          "points_awarded",
          "earned_at"
        ],
        "title": "AchievementEarnAttributes",
        "type": "object"
      },
      "AchievementGrantAttributes": {
        "description": "Attributes accepted when manually awarding an achievement.\n\nhub_id/contact_id are NOT here \u2014 they come from the URL path\n(POST .../hubs/{hub_id}/members/{contact_id}/achievements). points_awarded\nis always the achievement definition's own points value at award time\n(service-resolved, not admin-suppliable) \u2014 see grant_manual's docstring.",
        "properties": {
          "achievement_id": {
            "title": "Achievement Id",
            "type": "string"
          },
          "award_reason": {
            "default": "manual",
            "title": "Award Reason",
            "type": "string"
          }
        },
        "required": [
          "achievement_id"
        ],
        "title": "AchievementGrantAttributes",
        "type": "object"
      },
      "AchievementGrantData": {
        "description": "JSON:API data envelope for granting an achievement earn.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementGrantAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AchievementGrantData",
        "type": "object"
      },
      "AchievementGrantEnvelope": {
        "description": "Top-level JSON:API request envelope for granting an achievement earn.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AchievementGrantData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AchievementGrantEnvelope",
        "type": "object"
      },
      "AchievementHubAttributes": {
        "description": "Wire-shape attributes for an achievement_hubs resource (a hub offering).",
        "properties": {
          "achievement_id": {
            "title": "Achievement Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "achievement_id",
          "hub_id",
          "created_at"
        ],
        "title": "AchievementHubAttributes",
        "type": "object"
      },
      "AchievementRestoreAttributes": {
        "description": "Attributes accepted when restoring a previously revoked earn.\n\nachievement_id/hub_id/contact_id are NOT here \u2014 all three are already in\nthe URL path (POST .../achievements/{achievement_id}/restore).",
        "properties": {
          "restore_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Restore Reason"
          }
        },
        "title": "AchievementRestoreAttributes",
        "type": "object"
      },
      "AchievementRestoreData": {
        "description": "JSON:API data envelope for restoring an achievement earn.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementRestoreAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AchievementRestoreData",
        "type": "object"
      },
      "AchievementRestoreEnvelope": {
        "description": "Top-level JSON:API request envelope for restoring an achievement earn.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AchievementRestoreData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AchievementRestoreEnvelope",
        "type": "object"
      },
      "AchievementUpdateAttributes": {
        "description": "Attributes accepted in the PATCH /achievements/{id} body.\n\nAll fields optional \u2014 the router applies them with exclude_unset so a\nPATCH is a partial update, never a full replacement.",
        "properties": {
          "appearance": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AchievementAppearance"
              },
              {
                "type": "null"
              }
            ]
          },
          "award_mode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Award Mode"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "email_notification_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Notification Enabled"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "is_secret": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Secret"
          },
          "points": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Points"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "AchievementUpdateAttributes",
        "type": "object"
      },
      "AchievementUpdateData": {
        "description": "JSON:API data envelope for PATCH /achievements/{id}.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementUpdateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AchievementUpdateData",
        "type": "object"
      },
      "AchievementUpdateEnvelope": {
        "description": "Top-level JSON:API request envelope for PATCH /achievements/{id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AchievementUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AchievementUpdateEnvelope",
        "type": "object"
      },
      "ActivityEventAttributes": {
        "additionalProperties": false,
        "properties": {
          "event_type": {
            "enum": [
              "login",
              "search"
            ],
            "title": "Event Type",
            "type": "string"
          },
          "extras": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Extras"
          }
        },
        "required": [
          "event_type"
        ],
        "title": "ActivityEventAttributes",
        "type": "object"
      },
      "ActivityEventEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ActivityEventResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ActivityEventEnvelope",
        "type": "object"
      },
      "ActivityEventResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ActivityEventAttributes"
          },
          "type": {
            "const": "activity_events",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ActivityEventResource",
        "type": "object"
      },
      "AddTagNode": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/AddTagNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "add_tag",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "config"
        ],
        "title": "AddTagNode",
        "type": "object"
      },
      "AddTagNodeConfig": {
        "additionalProperties": false,
        "description": "Config for an ``add_tag`` node.",
        "properties": {
          "tag_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Tag Id",
            "type": "string"
          }
        },
        "required": [
          "tag_id"
        ],
        "title": "AddTagNodeConfig",
        "type": "object"
      },
      "AdminAlertAttributes": {
        "description": "Attributes block for an admin_alerts resource object.\n\nAll fields are read-only. ``alert_type`` is the alert type slug (e.g.\n``\"stripe_sync_failed\"``) \u2014 named specifically, never a bare ``type``,\nwhich is reserved for the JSON:API resource ``type`` (api-response.md).\n``payload`` is the structured JSON context the writer attached (event IDs,\nerror message, etc.). ``resolved_at`` / ``resolved_by`` are present for\nforward-compat but are always null on this endpoint, which returns\nunresolved alerts only (v1).",
        "properties": {
          "alert_type": {
            "title": "Alert Type",
            "type": "string"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "payload": {
            "additionalProperties": true,
            "title": "Payload",
            "type": "object"
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "resolved_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved By"
          },
          "source_module": {
            "title": "Source Module",
            "type": "string"
          }
        },
        "required": [
          "source_module",
          "alert_type",
          "hub_id",
          "payload",
          "created_at",
          "resolved_at",
          "resolved_by"
        ],
        "title": "AdminAlertAttributes",
        "type": "object"
      },
      "AdminModerationReportAttributes": {
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "reason_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason Id"
          },
          "reportable_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reportable Id"
          },
          "reportable_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reportable Type"
          },
          "reporter_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reporter Contact Id"
          },
          "resolution": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolution"
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "resolved_by_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved By User Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "AdminModerationReportAttributes",
        "type": "object"
      },
      "AdminPageAttributes": {
        "additionalProperties": false,
        "description": "Admin read attributes \u2014 extends PageAttributes with authoring fields.\n\n``draft_version`` is the OCC token required by the If-Match chain:\n  GET page -> read draft_version -> PUT .../tree with If-Match: <draft_version>\n  -> PUT .../publish with If-Match: <new_draft_version>\n\nExposed on admin reads only (team-owner gated routes).  Portal/member\nreads use the base ``PageAttributes`` class which omits this field \u2014 draft\nstate is authoring-side data and has no meaning for consumers.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "draft_version": {
            "title": "Draft Version",
            "type": "integer"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_homepage": {
            "title": "Is Homepage",
            "type": "boolean"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "privacy": {
            "title": "Privacy",
            "type": "string"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "title",
          "slug",
          "type",
          "privacy",
          "is_homepage",
          "position",
          "settings",
          "meta",
          "created_at",
          "updated_at",
          "deleted_at",
          "draft_version"
        ],
        "title": "AdminPageAttributes",
        "type": "object"
      },
      "AdminPageListResponse": {
        "additionalProperties": false,
        "description": "List JSON:API response for admin page reads (includes draft_version per item).",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AdminPageResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "AdminPageListResponse",
        "type": "object"
      },
      "AdminPageResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for admin page reads (includes draft_version).",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AdminPageAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "pages",
            "default": "pages",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AdminPageResource",
        "type": "object"
      },
      "AdminPageResponse": {
        "additionalProperties": false,
        "description": "Single-resource JSON:API response for admin page reads.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AdminPageResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AdminPageResponse",
        "type": "object"
      },
      "AdminQueueReportListResponse": {
        "description": "Response schema for GET /moderation/queue.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AdminQueueReportResource"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ContactIncludedResource"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "AdminQueueReportListResponse",
        "type": "object"
      },
      "AdminQueueReportMeta": {
        "description": "Per-resource meta for GET /moderation/queue rows.",
        "properties": {
          "content_preview": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Preview"
          },
          "first_reported_at": {
            "title": "First Reported At",
            "type": "string"
          },
          "last_reported_at": {
            "title": "Last Reported At",
            "type": "string"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "reason_breakdown": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/ReasonBreakdownItem"
            },
            "title": "Reason Breakdown",
            "type": "array"
          },
          "report_count": {
            "title": "Report Count",
            "type": "integer"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "report_count",
          "first_reported_at",
          "last_reported_at"
        ],
        "title": "AdminQueueReportMeta",
        "type": "object"
      },
      "AdminQueueReportRelationships": {
        "properties": {
          "author": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiToOneRelationship"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "AdminQueueReportRelationships",
        "type": "object"
      },
      "AdminQueueReportResource": {
        "description": "JSON:API resource for a single queue row with typed per-resource meta.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AdminModerationReportAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AdminQueueReportMeta"
              },
              {
                "type": "null"
              }
            ]
          },
          "relationships": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AdminQueueReportRelationships"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "AdminQueueReportResource",
        "type": "object"
      },
      "AdminTeamTranscriptionAttributes": {
        "additionalProperties": false,
        "description": "Sparse update payload \u2014 only the supplied fields are written.",
        "properties": {
          "auto_chapters": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Chapters"
          },
          "transcribe_seconds_quota": {
            "anyOf": [
              {
                "exclusiveMinimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transcribe Seconds Quota"
          },
          "transcription_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transcription Enabled"
          }
        },
        "title": "AdminTeamTranscriptionAttributes",
        "type": "object"
      },
      "AdminTeamTranscriptionPatchBody": {
        "description": "JSON:API data object for PATCH .../transcription-settings.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_AdminTeamTranscriptionData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AdminTeamTranscriptionPatchBody",
        "type": "object"
      },
      "AdminTeamTranscriptionReadAttributes": {
        "properties": {
          "auto_chapters": {
            "title": "Auto Chapters",
            "type": "boolean"
          },
          "consumed_seconds": {
            "title": "Consumed Seconds",
            "type": "integer"
          },
          "transcribe_seconds_quota": {
            "title": "Transcribe Seconds Quota",
            "type": "integer"
          },
          "transcription_enabled": {
            "title": "Transcription Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "transcription_enabled",
          "auto_chapters",
          "transcribe_seconds_quota",
          "consumed_seconds"
        ],
        "title": "AdminTeamTranscriptionReadAttributes",
        "type": "object"
      },
      "AdoptProductRequest": {
        "additionalProperties": false,
        "properties": {
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "stripe_product_id": {
            "title": "Stripe Product Id",
            "type": "string"
          }
        },
        "required": [
          "stripe_product_id",
          "hub_id"
        ],
        "title": "AdoptProductRequest",
        "type": "object"
      },
      "AnonBrandingView": {
        "properties": {
          "background_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Background Color"
          },
          "custom_login_logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Login Logo Url"
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "secondary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secondary Color"
          }
        },
        "required": [
          "logo_url",
          "primary_color",
          "secondary_color",
          "background_color",
          "custom_login_logo_url"
        ],
        "title": "AnonBrandingView",
        "type": "object"
      },
      "AnonCommentAttributes": {
        "additionalProperties": false,
        "description": "Sanitized comment attributes for an anonymous reader.\n\nDeliberately omits: author_contact_id, target_type, target_id,\nreacted_by_me, my_reaction_id, attachments, external_video_embeds,\nanchor, author_role, parent_comment_author_display_name.",
        "properties": {
          "author_display_name": {
            "title": "Author Display Name",
            "type": "string"
          },
          "author_photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Thumbnail Url"
          },
          "author_photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Url"
          },
          "body": {
            "title": "Body",
            "type": "string"
          },
          "body_plain": {
            "title": "Body Plain",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "edited_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Edited At"
          },
          "is_deleted": {
            "title": "Is Deleted",
            "type": "boolean"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "reaction_count": {
            "title": "Reaction Count",
            "type": "integer"
          },
          "reply_count": {
            "title": "Reply Count",
            "type": "integer"
          }
        },
        "required": [
          "body",
          "body_plain",
          "author_display_name",
          "author_photo_url",
          "author_photo_thumbnail_url",
          "reaction_count",
          "reply_count",
          "parent_comment_id",
          "is_deleted",
          "created_at",
          "edited_at"
        ],
        "title": "AnonCommentAttributes",
        "type": "object"
      },
      "AnonDiscussionAttributes": {
        "additionalProperties": false,
        "properties": {
          "author_display_name": {
            "title": "Author Display Name",
            "type": "string"
          },
          "author_photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Thumbnail Url"
          },
          "author_photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Url"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "comment_count": {
            "title": "Comment Count",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "is_locked": {
            "title": "Is Locked",
            "type": "boolean"
          },
          "is_pinned": {
            "title": "Is Pinned",
            "type": "boolean"
          },
          "poll": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AnonPollAttributes"
              },
              {
                "type": "null"
              }
            ]
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "reaction_count": {
            "title": "Reaction Count",
            "type": "integer"
          },
          "reactions": {
            "items": {
              "$ref": "#/components/schemas/AnonReactionCount"
            },
            "title": "Reactions",
            "type": "array"
          },
          "repost": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RepostBlockAttributes"
              },
              {
                "type": "null"
              }
            ]
          },
          "repost_count": {
            "default": 0,
            "title": "Repost Count",
            "type": "integer"
          },
          "space_name": {
            "title": "Space Name",
            "type": "string"
          },
          "space_slug": {
            "title": "Space Slug",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "body",
          "is_pinned",
          "is_locked",
          "published_at",
          "comment_count",
          "reaction_count",
          "reactions",
          "author_display_name",
          "author_photo_url",
          "author_photo_thumbnail_url",
          "created_at",
          "space_slug",
          "space_name"
        ],
        "title": "AnonDiscussionAttributes",
        "type": "object"
      },
      "AnonPollAttributes": {
        "additionalProperties": false,
        "description": "Sanitized poll attributes for an anonymous reader.\n\nDeliberately omits: viewer_voted, viewer_option_id (no anon identity to\ngate against), and options[].vote_count (never revealed to anon\nregardless of poll state \u2014 see ``app.community.poll_read.\nbuild_poll_attrs_anon``, the actual server-side implementation this\nmodel documents).",
        "properties": {
          "closed": {
            "title": "Closed",
            "type": "boolean"
          },
          "deadline_at": {
            "format": "date-time",
            "title": "Deadline At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/AnonPollOptionAttributes"
            },
            "title": "Options",
            "type": "array"
          },
          "total_votes": {
            "title": "Total Votes",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "deadline_at",
          "closed",
          "total_votes",
          "options"
        ],
        "title": "AnonPollAttributes",
        "type": "object"
      },
      "AnonPollOptionAttributes": {
        "additionalProperties": false,
        "description": "A single poll option for an anonymous reader \u2014 no vote_count, ever.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "label",
          "position"
        ],
        "title": "AnonPollOptionAttributes",
        "type": "object"
      },
      "AnonReactionCount": {
        "additionalProperties": false,
        "description": "A single per-emoji reaction aggregate \u2014 no per-actor identity.",
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "emoji": {
            "title": "Emoji",
            "type": "string"
          }
        },
        "required": [
          "emoji",
          "count"
        ],
        "title": "AnonReactionCount",
        "type": "object"
      },
      "AnonSectionView": {
        "properties": {
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeatureSectionSettings"
              },
              {
                "$ref": "#/components/schemas/RowSectionSettings"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "position",
          "settings"
        ],
        "title": "AnonSectionView",
        "type": "object"
      },
      "AnonSpaceAttributes": {
        "additionalProperties": false,
        "description": "Sanitized space attributes for an anonymous reader.\n\nDeliberately omits: access_level, segment_id, posting_permission,\nunread_count, member_count, online_count, moderator_count, is_member,\nis_muted, member_avatar_preview, is_default, updated_at.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug",
          "description",
          "position",
          "icon",
          "color"
        ],
        "title": "AnonSpaceAttributes",
        "type": "object"
      },
      "ApiKeyAttributes": {
        "description": "Public attributes for an API key resource.\n\nReturned on list and retrieve. Never includes secret or key_hash.",
        "properties": {
          "can_moderate": {
            "default": false,
            "title": "Can Moderate",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "key_prefix": {
            "title": "Key Prefix",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "name",
          "key_prefix",
          "scopes",
          "created_by"
        ],
        "title": "ApiKeyAttributes",
        "type": "object"
      },
      "ApiKeyCreateAttributes": {
        "description": "Attributes returned ONLY on the 201 create response.\n\nIncludes `secret` \u2014 the full plaintext key, returned once and never again.",
        "properties": {
          "can_moderate": {
            "default": false,
            "title": "Can Moderate",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "created_by": {
            "title": "Created By",
            "type": "string"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "key_prefix": {
            "title": "Key Prefix",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "secret": {
            "title": "Secret",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "name",
          "key_prefix",
          "scopes",
          "secret",
          "created_by"
        ],
        "title": "ApiKeyCreateAttributes",
        "type": "object"
      },
      "ApiKeyCreateRequest": {
        "properties": {
          "can_moderate": {
            "default": false,
            "title": "Can Moderate",
            "type": "boolean"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "scopes": {
            "default": [
              "*"
            ],
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "ApiKeyCreateRequest",
        "type": "object"
      },
      "ApiKeyUpdateRequest": {
        "properties": {
          "can_moderate": {
            "title": "Can Moderate",
            "type": "boolean"
          }
        },
        "required": [
          "can_moderate"
        ],
        "title": "ApiKeyUpdateRequest",
        "type": "object"
      },
      "AttachmentAttributes": {
        "description": "Serialisable attributes of an Attachment resource (no id/type inside attributes).\n\nEnumerates all response fields explicitly \u2014 mirrors P3 retro lesson #1\n(\"enumerate read-shape too, not just write-shape\").",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "media_id": {
            "title": "Media Id",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "role": {
            "enum": [
              "main",
              "thumbnail",
              "logo",
              "favicon",
              "attachment",
              "social_image",
              "background_image",
              "widget_logo",
              "widget_background"
            ],
            "title": "Role",
            "type": "string"
          },
          "target_id": {
            "title": "Target Id",
            "type": "string"
          },
          "target_type": {
            "enum": [
              "content_node",
              "hub_branding",
              "page_section",
              "email_message",
              "playlist",
              "comment",
              "discussion",
              "message"
            ],
            "title": "Target Type",
            "type": "string"
          }
        },
        "required": [
          "media_id",
          "target_type",
          "target_id",
          "role",
          "position",
          "created_at"
        ],
        "title": "AttachmentAttributes",
        "type": "object"
      },
      "AttachmentCreateAttributes": {
        "properties": {
          "media_id": {
            "description": "ID of the Media asset to attach.",
            "title": "Media Id",
            "type": "string"
          },
          "position": {
            "default": 0,
            "description": "Display order within the target+role group.",
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "role": {
            "description": "Semantic role of the attachment.",
            "enum": [
              "main",
              "thumbnail",
              "logo",
              "favicon",
              "attachment",
              "social_image",
              "background_image",
              "widget_logo",
              "widget_background"
            ],
            "title": "Role",
            "type": "string"
          },
          "target_id": {
            "description": "ID of the target entity (36-char string/UUID).",
            "title": "Target Id",
            "type": "string"
          },
          "target_type": {
            "description": "Type of the target entity.",
            "enum": [
              "content_node",
              "hub_branding",
              "page_section",
              "email_message",
              "playlist",
              "comment",
              "discussion",
              "message"
            ],
            "title": "Target Type",
            "type": "string"
          }
        },
        "required": [
          "media_id",
          "target_type",
          "target_id",
          "role"
        ],
        "title": "AttachmentCreateAttributes",
        "type": "object"
      },
      "AttachmentCreateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AttachmentCreateAttributes"
          },
          "type": {
            "const": "attachments",
            "default": "attachments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "AttachmentCreateData",
        "type": "object"
      },
      "AttachmentCreateRequest": {
        "description": "Request body for POST /api/teams/{team_id}/attachments.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AttachmentCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AttachmentCreateRequest",
        "type": "object"
      },
      "AttachmentFinalizeAttributes": {
        "additionalProperties": false,
        "description": "Response attributes for a finalized attachment upload (B4).\n\nCarries the render metadata the composer needs to display the attachment\ninline. ``url``/``thumbnail_url`` enrichment is deferred to Task B6 (signed\nURL derivation); this response returns the durable media facts only.",
        "properties": {
          "asset_kind": {
            "title": "Asset Kind",
            "type": "string"
          },
          "file_id": {
            "title": "File Id",
            "type": "string"
          },
          "filename": {
            "title": "Filename",
            "type": "string"
          },
          "media_id": {
            "title": "Media Id",
            "type": "string"
          },
          "mime_type": {
            "title": "Mime Type",
            "type": "string"
          },
          "size_bytes": {
            "title": "Size Bytes",
            "type": "integer"
          },
          "status_upload": {
            "title": "Status Upload",
            "type": "string"
          }
        },
        "required": [
          "file_id",
          "media_id",
          "status_upload",
          "mime_type",
          "asset_kind",
          "filename",
          "size_bytes"
        ],
        "title": "AttachmentFinalizeAttributes",
        "type": "object"
      },
      "AttachmentListResponse": {
        "description": "Collection JSON:API response wrapping a list of AttachmentResources.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AttachmentAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "AttachmentListResponse",
        "type": "object"
      },
      "AttachmentUpdateAttributes": {
        "description": "PATCH fields \u2014 both optional; zero fields is a valid NO-OP (returns 200 unchanged).\n\nExplicit null for `position` or `role` is rejected with 422 \u2014 callers must omit\nthe field entirely to preserve the current value. Accepting null silently would\nproduce an invisible NO-OP that masks client bugs.",
        "properties": {
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "New display order.",
            "title": "Position"
          },
          "role": {
            "anyOf": [
              {
                "enum": [
                  "main",
                  "thumbnail",
                  "logo",
                  "favicon",
                  "attachment",
                  "social_image",
                  "background_image",
                  "widget_logo",
                  "widget_background"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New semantic role.",
            "title": "Role"
          }
        },
        "title": "AttachmentUpdateAttributes",
        "type": "object"
      },
      "AttachmentUpdateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AttachmentUpdateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "attachments",
            "default": "attachments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AttachmentUpdateData",
        "type": "object"
      },
      "AttachmentUpdateRequest": {
        "description": "Request body for PATCH /api/teams/{team_id}/attachments/{id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AttachmentUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AttachmentUpdateRequest",
        "type": "object"
      },
      "AttachmentUploadAttributes": {
        "additionalProperties": false,
        "description": "Response attributes for an initiated attachment upload.",
        "properties": {
          "file_id": {
            "title": "File Id",
            "type": "string"
          },
          "media_id": {
            "title": "Media Id",
            "type": "string"
          },
          "required_headers": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Required Headers",
            "type": "object"
          },
          "status_upload": {
            "title": "Status Upload",
            "type": "string"
          }
        },
        "required": [
          "file_id",
          "media_id",
          "status_upload",
          "required_headers"
        ],
        "title": "AttachmentUploadAttributes",
        "type": "object"
      },
      "AttachmentUploadInitiateAttributes": {
        "additionalProperties": false,
        "description": "Attributes for POST /attachment-uploads (initiate).",
        "properties": {
          "attachment_context": {
            "title": "Attachment Context",
            "type": "string"
          },
          "context_target_id": {
            "title": "Context Target Id",
            "type": "string"
          },
          "context_target_type": {
            "title": "Context Target Type",
            "type": "string"
          },
          "filename": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Filename",
            "type": "string"
          },
          "mime_type": {
            "title": "Mime Type",
            "type": "string"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "size_bytes": {
            "exclusiveMinimum": 0.0,
            "maximum": 524288000.0,
            "title": "Size Bytes",
            "type": "integer"
          }
        },
        "required": [
          "attachment_context",
          "mime_type",
          "size_bytes",
          "filename",
          "context_target_type",
          "context_target_id"
        ],
        "title": "AttachmentUploadInitiateAttributes",
        "type": "object"
      },
      "AttachmentUploadInitiateData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AttachmentUploadInitiateAttributes"
          },
          "type": {
            "const": "attachment_upload_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AttachmentUploadInitiateData",
        "type": "object"
      },
      "AttachmentUploadInitiateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AttachmentUploadInitiateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AttachmentUploadInitiateEnvelope",
        "type": "object"
      },
      "AttributeBooleanConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_boolean",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeBooleanValueCompiled"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeBooleanConditionCompiled",
        "type": "object"
      },
      "AttributeBooleanConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_boolean",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeBooleanValueIn"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeBooleanConditionIn",
        "type": "object"
      },
      "AttributeBooleanValueCompiled": {
        "additionalProperties": false,
        "properties": {
          "def_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Def Id",
            "type": "string"
          }
        },
        "required": [
          "def_id"
        ],
        "title": "AttributeBooleanValueCompiled",
        "type": "object"
      },
      "AttributeBooleanValueIn": {
        "additionalProperties": false,
        "properties": {
          "def_slug": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Def Slug",
            "type": "string"
          }
        },
        "required": [
          "def_slug"
        ],
        "title": "AttributeBooleanValueIn",
        "type": "object"
      },
      "AttributeDateConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_date",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeDateValueCompiled"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeDateConditionCompiled",
        "type": "object"
      },
      "AttributeDateConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_date",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeDateValueIn"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeDateConditionIn",
        "type": "object"
      },
      "AttributeDateValueCompiled": {
        "additionalProperties": false,
        "properties": {
          "date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date"
          },
          "date_from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date From"
          },
          "date_to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date To"
          },
          "def_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Def Id",
            "type": "string"
          }
        },
        "required": [
          "def_id"
        ],
        "title": "AttributeDateValueCompiled",
        "type": "object"
      },
      "AttributeDateValueIn": {
        "additionalProperties": false,
        "properties": {
          "date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date"
          },
          "date_from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date From"
          },
          "date_to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date To"
          },
          "def_slug": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Def Slug",
            "type": "string"
          }
        },
        "required": [
          "def_slug"
        ],
        "title": "AttributeDateValueIn",
        "type": "object"
      },
      "AttributeMultipleConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_multiple",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeMultipleValueCompiled"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeMultipleConditionCompiled",
        "type": "object"
      },
      "AttributeMultipleConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_multiple",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeMultipleValueIn"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeMultipleConditionIn",
        "type": "object"
      },
      "AttributeMultipleValueCompiled": {
        "additionalProperties": false,
        "properties": {
          "def_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Def Id",
            "type": "string"
          },
          "option_ids": {
            "items": {
              "type": "string"
            },
            "maxItems": 200,
            "minItems": 1,
            "title": "Option Ids",
            "type": "array"
          }
        },
        "required": [
          "def_id",
          "option_ids"
        ],
        "title": "AttributeMultipleValueCompiled",
        "type": "object"
      },
      "AttributeMultipleValueIn": {
        "additionalProperties": false,
        "properties": {
          "def_slug": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Def Slug",
            "type": "string"
          },
          "option_slugs": {
            "items": {
              "type": "string"
            },
            "maxItems": 200,
            "minItems": 1,
            "title": "Option Slugs",
            "type": "array"
          }
        },
        "required": [
          "def_slug",
          "option_slugs"
        ],
        "title": "AttributeMultipleValueIn",
        "type": "object"
      },
      "AttributeNumberConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_number",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeNumberValueCompiled"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeNumberConditionCompiled",
        "type": "object"
      },
      "AttributeNumberConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_number",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeNumberValueIn"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeNumberConditionIn",
        "type": "object"
      },
      "AttributeNumberValueCompiled": {
        "additionalProperties": false,
        "properties": {
          "def_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Def Id",
            "type": "string"
          },
          "number": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number"
          },
          "number_max": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number Max"
          },
          "number_min": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number Min"
          }
        },
        "required": [
          "def_id"
        ],
        "title": "AttributeNumberValueCompiled",
        "type": "object"
      },
      "AttributeNumberValueIn": {
        "additionalProperties": false,
        "properties": {
          "def_slug": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Def Slug",
            "type": "string"
          },
          "number": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number"
          },
          "number_max": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number Max"
          },
          "number_min": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number Min"
          }
        },
        "required": [
          "def_slug"
        ],
        "title": "AttributeNumberValueIn",
        "type": "object"
      },
      "AttributeSingleConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_single",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeSingleValueCompiled"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeSingleConditionCompiled",
        "type": "object"
      },
      "AttributeSingleConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_single",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeSingleValueIn"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeSingleConditionIn",
        "type": "object"
      },
      "AttributeSingleValueCompiled": {
        "additionalProperties": false,
        "properties": {
          "def_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Def Id",
            "type": "string"
          },
          "option_ids": {
            "items": {
              "type": "string"
            },
            "maxItems": 1,
            "minItems": 1,
            "title": "Option Ids",
            "type": "array"
          }
        },
        "required": [
          "def_id",
          "option_ids"
        ],
        "title": "AttributeSingleValueCompiled",
        "type": "object"
      },
      "AttributeSingleValueIn": {
        "additionalProperties": false,
        "properties": {
          "def_slug": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Def Slug",
            "type": "string"
          },
          "option_slugs": {
            "items": {
              "type": "string"
            },
            "maxItems": 1,
            "minItems": 1,
            "title": "Option Slugs",
            "type": "array"
          }
        },
        "required": [
          "def_slug",
          "option_slugs"
        ],
        "title": "AttributeSingleValueIn",
        "type": "object"
      },
      "AttributeTextConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_text",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeTextValueCompiled"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeTextConditionCompiled",
        "type": "object"
      },
      "AttributeTextConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "attribute_text",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AttributeTextValueIn"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "AttributeTextConditionIn",
        "type": "object"
      },
      "AttributeTextValueCompiled": {
        "additionalProperties": false,
        "properties": {
          "def_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Def Id",
            "type": "string"
          },
          "text": {
            "maxLength": 1024,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "def_id",
          "text"
        ],
        "title": "AttributeTextValueCompiled",
        "type": "object"
      },
      "AttributeTextValueIn": {
        "additionalProperties": false,
        "properties": {
          "def_slug": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Def Slug",
            "type": "string"
          },
          "text": {
            "maxLength": 1024,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "def_slug",
          "text"
        ],
        "title": "AttributeTextValueIn",
        "type": "object"
      },
      "AudienceCreateEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_AudienceCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AudienceCreateEnvelope",
        "type": "object"
      },
      "AuthorDraftTreeAttributes": {
        "additionalProperties": false,
        "properties": {
          "draft_version": {
            "title": "Draft Version",
            "type": "integer"
          },
          "resolved_at": {
            "format": "date-time",
            "title": "Resolved At",
            "type": "string"
          },
          "tree": {
            "additionalProperties": true,
            "title": "Tree",
            "type": "object"
          }
        },
        "required": [
          "tree",
          "draft_version",
          "resolved_at"
        ],
        "title": "AuthorDraftTreeAttributes",
        "type": "object"
      },
      "AuthorDraftTreeResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for the author draft-resolve endpoint.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AuthorDraftTreeAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "page_trees",
            "default": "page_trees",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AuthorDraftTreeResource",
        "type": "object"
      },
      "AuthorDraftTreeResponse": {
        "additionalProperties": false,
        "description": "Top-level JSON:API response for GET .../pages/{id}/tree?audience=author.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AuthorDraftTreeResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AuthorDraftTreeResponse",
        "type": "object"
      },
      "AutomationAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By"
          },
          "current_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Version Id"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "re_entry_interval_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Re Entry Interval Seconds"
          },
          "re_entry_mode": {
            "title": "Re Entry Mode",
            "type": "string"
          },
          "settings": {
            "additionalProperties": true,
            "title": "Settings",
            "type": "object"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "hub_id",
          "name",
          "status",
          "re_entry_mode",
          "re_entry_interval_seconds",
          "current_version_id",
          "settings",
          "created_by",
          "created_at",
          "updated_at"
        ],
        "title": "AutomationAttributes",
        "type": "object"
      },
      "AutomationCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "definition": {
            "$ref": "#/components/schemas/AutomationDefinition"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "re_entry_interval_seconds": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Re Entry Interval Seconds"
          },
          "re_entry_mode": {
            "default": "never",
            "enum": [
              "never",
              "after_exit",
              "interval"
            ],
            "title": "Re Entry Mode",
            "type": "string"
          },
          "settings": {
            "additionalProperties": true,
            "title": "Settings",
            "type": "object"
          }
        },
        "required": [
          "name",
          "definition"
        ],
        "title": "AutomationCreateAttributes",
        "type": "object"
      },
      "AutomationCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AutomationCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AutomationCreateEnvelope",
        "type": "object"
      },
      "AutomationCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AutomationCreateAttributes"
          },
          "type": {
            "const": "automations",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AutomationCreateResource",
        "type": "object"
      },
      "AutomationDefinition": {
        "additionalProperties": false,
        "description": "The full graph definition stored in ``automation_versions.definition``.\n\nValidated at publish time via ``AutomationsService.validate_graph``.",
        "properties": {
          "edges": {
            "items": {
              "$ref": "#/components/schemas/AutomationEdge"
            },
            "maxItems": 5000,
            "title": "Edges",
            "type": "array"
          },
          "nodes": {
            "items": {
              "discriminator": {
                "mapping": {
                  "add_tag": "#/components/schemas/AddTagNode",
                  "branch": "#/components/schemas/BranchNode",
                  "enroll_in_sequence": "#/components/schemas/EnrollInSequenceNode",
                  "exit": "#/components/schemas/ExitNode",
                  "remove_tag": "#/components/schemas/RemoveTagNode",
                  "send_email": "#/components/schemas/SendEmailNode",
                  "wait": "#/components/schemas/WaitNode",
                  "webhook": "#/components/schemas/WebhookNode"
                },
                "propertyName": "type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SendEmailNode"
                },
                {
                  "$ref": "#/components/schemas/WaitNode"
                },
                {
                  "$ref": "#/components/schemas/BranchNode"
                },
                {
                  "$ref": "#/components/schemas/AddTagNode"
                },
                {
                  "$ref": "#/components/schemas/RemoveTagNode"
                },
                {
                  "$ref": "#/components/schemas/EnrollInSequenceNode"
                },
                {
                  "$ref": "#/components/schemas/ExitNode"
                },
                {
                  "$ref": "#/components/schemas/WebhookNode"
                }
              ]
            },
            "maxItems": 500,
            "minItems": 1,
            "title": "Nodes",
            "type": "array"
          },
          "triggers": {
            "items": {
              "$ref": "#/components/schemas/AutomationTriggerIn"
            },
            "maxItems": 50,
            "title": "Triggers",
            "type": "array"
          }
        },
        "required": [
          "nodes"
        ],
        "title": "AutomationDefinition",
        "type": "object"
      },
      "AutomationEdge": {
        "additionalProperties": false,
        "description": "A directed edge in the automation graph.\n\n``branch_label`` is required when the source node is a ``branch``\ntype \u2014 the executor routes via this label (e.g. ``\"yes\"`` / ``\"no\"``).",
        "properties": {
          "branch_label": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branch Label"
          },
          "from": {
            "maxLength": 100,
            "minLength": 1,
            "title": "From",
            "type": "string"
          },
          "to": {
            "maxLength": 100,
            "minLength": 1,
            "title": "To",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "title": "AutomationEdge",
        "type": "object"
      },
      "AutomationEnrollmentAttributes": {
        "additionalProperties": false,
        "description": "Read-only attributes for an ``automation_enrollments`` resource.",
        "properties": {
          "automation_id": {
            "title": "Automation Id",
            "type": "string"
          },
          "automation_version_id": {
            "title": "Automation Version Id",
            "type": "string"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "current_node_id": {
            "title": "Current Node Id",
            "type": "string"
          },
          "entered_at": {
            "format": "date-time",
            "title": "Entered At",
            "type": "string"
          },
          "exit_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Exit Reason"
          },
          "exited_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Exited At"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "next_due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Due At"
          },
          "run_attributes": {
            "additionalProperties": true,
            "title": "Run Attributes",
            "type": "object"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "step_execution_count": {
            "title": "Step Execution Count",
            "type": "integer"
          },
          "team_contact_id": {
            "title": "Team Contact Id",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "trigger_context": {
            "additionalProperties": true,
            "title": "Trigger Context",
            "type": "object"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "automation_id",
          "automation_version_id",
          "team_id",
          "hub_id",
          "team_contact_id",
          "contact_id",
          "current_node_id",
          "status",
          "step_execution_count",
          "entered_at",
          "created_at",
          "updated_at"
        ],
        "title": "AutomationEnrollmentAttributes",
        "type": "object"
      },
      "AutomationEnrollmentListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AutomationEnrollmentResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "AutomationEnrollmentListResponse",
        "type": "object"
      },
      "AutomationEnrollmentResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AutomationEnrollmentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "automation_enrollments",
            "default": "automation_enrollments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AutomationEnrollmentResource",
        "type": "object"
      },
      "AutomationEnrollmentResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AutomationEnrollmentResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AutomationEnrollmentResponse",
        "type": "object"
      },
      "AutomationListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AutomationResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "AutomationListResponse",
        "type": "object"
      },
      "AutomationResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AutomationAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "automations",
            "default": "automations",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AutomationResource",
        "type": "object"
      },
      "AutomationResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AutomationResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AutomationResponse",
        "type": "object"
      },
      "AutomationTriggerIn": {
        "additionalProperties": false,
        "description": "A trigger that fires when ``event_type`` is observed.\n\n``entry_filter`` is an optional condition tree evaluated against the\nenrolling contact; only contacts matching all groups are enrolled.",
        "properties": {
          "entry_filter": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConditionTreeIn"
              },
              {
                "type": "null"
              }
            ]
          },
          "event_type": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Event Type",
            "type": "string"
          }
        },
        "required": [
          "event_type"
        ],
        "title": "AutomationTriggerIn",
        "type": "object"
      },
      "AutomationUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "definition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AutomationDefinition"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "re_entry_interval_seconds": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Re Entry Interval Seconds"
          },
          "re_entry_mode": {
            "anyOf": [
              {
                "enum": [
                  "never",
                  "after_exit",
                  "interval"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Re Entry Mode"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          }
        },
        "title": "AutomationUpdateAttributes",
        "type": "object"
      },
      "AutomationUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AutomationUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AutomationUpdateEnvelope",
        "type": "object"
      },
      "AutomationUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AutomationUpdateAttributes"
          },
          "type": {
            "const": "automations",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AutomationUpdateResource",
        "type": "object"
      },
      "AutomationVersionAttributes": {
        "additionalProperties": false,
        "properties": {
          "automation_id": {
            "title": "Automation Id",
            "type": "string"
          },
          "definition": {
            "additionalProperties": true,
            "title": "Definition",
            "type": "object"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "published_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published By"
          },
          "version_int": {
            "title": "Version Int",
            "type": "integer"
          }
        },
        "required": [
          "automation_id",
          "version_int",
          "definition",
          "published_at",
          "published_by"
        ],
        "title": "AutomationVersionAttributes",
        "type": "object"
      },
      "AutomationVersionListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AutomationVersionResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "AutomationVersionListResponse",
        "type": "object"
      },
      "AutomationVersionResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AutomationVersionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "automation_versions",
            "default": "automation_versions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "AutomationVersionResource",
        "type": "object"
      },
      "AutomationVersionResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AutomationVersionResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "AutomationVersionResponse",
        "type": "object"
      },
      "AvatarInitiateAttributes": {
        "additionalProperties": false,
        "description": "Attributes for POST /me/avatar (initiate upload).",
        "properties": {
          "mime_type": {
            "title": "Mime Type",
            "type": "string"
          },
          "size_bytes": {
            "exclusiveMinimum": 0.0,
            "maximum": 5242880.0,
            "title": "Size Bytes",
            "type": "integer"
          }
        },
        "required": [
          "mime_type",
          "size_bytes"
        ],
        "title": "AvatarInitiateAttributes",
        "type": "object"
      },
      "AvatarInitiateData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AvatarInitiateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "AvatarInitiateData",
        "type": "object"
      },
      "AvatarInitiateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AvatarInitiateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "AvatarInitiateEnvelope",
        "type": "object"
      },
      "BanReasonCode": {
        "description": "Canonical admin ban-reason codes (legacy App\\Enums\\BanReason taxonomy).\n\nStored as the bare code string in hub_memberships.ban_reason. Display labels\nare mapped client-side; the backend does not own localized labels in v1.",
        "enum": [
          "terms_violation",
          "spamming",
          "compromised_account"
        ],
        "title": "BanReasonCode",
        "type": "string"
      },
      "BannedMemberAttributes": {
        "properties": {
          "ban_note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ban Note"
          },
          "ban_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ban Reason"
          },
          "banned_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned At"
          },
          "banned_by_actor": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned By Actor"
          },
          "banned_by_actor_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned By Actor Id"
          },
          "banned_by_actor_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned By Actor Type"
          },
          "banned_by_api_key_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned By Api Key Id"
          },
          "banned_by_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned By Display Name"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          }
        },
        "title": "BannedMemberAttributes",
        "type": "object"
      },
      "BannedMemberListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/BannedMemberResource"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ContactIncludedResource"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "BannedMemberListResponse",
        "type": "object"
      },
      "BannedMemberRelationships": {
        "properties": {
          "banned_member": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiToOneRelationship"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "BannedMemberRelationships",
        "type": "object"
      },
      "BannedMemberResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/BannedMemberAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "relationships": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BannedMemberRelationships"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "BannedMemberResource",
        "type": "object"
      },
      "BannerInitiateAttributes": {
        "additionalProperties": false,
        "description": "Attributes for POST /me/banner (initiate upload).",
        "properties": {
          "mime_type": {
            "title": "Mime Type",
            "type": "string"
          },
          "size_bytes": {
            "exclusiveMinimum": 0.0,
            "maximum": 10485760.0,
            "title": "Size Bytes",
            "type": "integer"
          }
        },
        "required": [
          "mime_type",
          "size_bytes"
        ],
        "title": "BannerInitiateAttributes",
        "type": "object"
      },
      "BannerInitiateData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/BannerInitiateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "BannerInitiateData",
        "type": "object"
      },
      "BannerInitiateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BannerInitiateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "BannerInitiateEnvelope",
        "type": "object"
      },
      "BelongsToHubConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "belongs_to_hub",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/BelongsToHubValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "BelongsToHubConditionCompiled",
        "type": "object"
      },
      "BelongsToHubConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "belongs_to_hub",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/BelongsToHubValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "BelongsToHubConditionIn",
        "type": "object"
      },
      "BelongsToHubValue": {
        "additionalProperties": false,
        "properties": {
          "hub_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id"
        ],
        "title": "BelongsToHubValue",
        "type": "object"
      },
      "BillingStatusConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "billing_status",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/BillingStatusValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "BillingStatusConditionCompiled",
        "type": "object"
      },
      "BillingStatusConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "billing_status",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/BillingStatusValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "BillingStatusConditionIn",
        "type": "object"
      },
      "BillingStatusValue": {
        "additionalProperties": false,
        "description": "``billing_status`` value \u2014 single status or list for ``in`` operator.",
        "properties": {
          "status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "past_due",
                  "canceled",
                  "none"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "statuses": {
            "anyOf": [
              {
                "items": {
                  "enum": [
                    "active",
                    "past_due",
                    "canceled",
                    "none"
                  ],
                  "type": "string"
                },
                "maxItems": 4,
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Statuses"
          }
        },
        "title": "BillingStatusValue",
        "type": "object"
      },
      "BlockAttributes": {
        "description": "Attributes section of a member_blocks resource.",
        "properties": {
          "blocked_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blocked At"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url"
          }
        },
        "required": [
          "contact_id"
        ],
        "title": "BlockAttributes",
        "type": "object"
      },
      "BlockData": {
        "description": "JSON:API data object for a member_blocks resource.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/BlockAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "member_blocks",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "attributes"
        ],
        "title": "BlockData",
        "type": "object"
      },
      "BlockListPageMeta": {
        "description": "Top-level meta for the blocked-members list response.",
        "properties": {
          "page": {
            "$ref": "#/components/schemas/BlockPageMeta"
          }
        },
        "required": [
          "page"
        ],
        "title": "BlockListPageMeta",
        "type": "object"
      },
      "BlockListResponse": {
        "description": "JSON:API collection response for GET /blocked-members.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/BlockData"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/BlockListPageMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "BlockListResponse",
        "type": "object"
      },
      "BlockPageMeta": {
        "description": "Pagination meta for the blocked-members list.",
        "properties": {
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "size": {
            "title": "Size",
            "type": "integer"
          }
        },
        "required": [
          "size",
          "has_more"
        ],
        "title": "BlockPageMeta",
        "type": "object"
      },
      "BlockResponse": {
        "description": "JSON:API single-resource response for PUT /blocked-members/{id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BlockData"
          }
        },
        "required": [
          "data"
        ],
        "title": "BlockResponse",
        "type": "object"
      },
      "BranchNode": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/BranchNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "branch",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "config"
        ],
        "title": "BranchNode",
        "type": "object"
      },
      "BranchNodeConfig": {
        "additionalProperties": false,
        "description": "Config for a ``branch`` node.\n\n``condition_tree`` is compiled via ``SegmentsService.compile_conditions``\nat publish time. Branches route to edges by ``branch_label``\n(typically ``\"yes\"`` / ``\"no\"``).",
        "properties": {
          "condition_tree": {
            "$ref": "#/components/schemas/ConditionTreeIn"
          }
        },
        "required": [
          "condition_tree"
        ],
        "title": "BranchNodeConfig",
        "type": "object"
      },
      "BulkAssignAttributes": {
        "additionalProperties": false,
        "properties": {
          "tag_ids": {
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "title": "Tag Ids",
            "type": "array"
          }
        },
        "required": [
          "tag_ids"
        ],
        "title": "BulkAssignAttributes",
        "type": "object"
      },
      "BulkAssignEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BulkAssignResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "BulkAssignEnvelope",
        "type": "object"
      },
      "BulkAssignResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/BulkAssignAttributes"
          },
          "type": {
            "const": "tag_assignments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "BulkAssignResource",
        "type": "object"
      },
      "BulkProgressAttributes": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/BulkProgressItem"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "BulkProgressAttributes",
        "type": "object"
      },
      "BulkProgressEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BulkProgressResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "BulkProgressEnvelope",
        "type": "object"
      },
      "BulkProgressErrorEntry": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "enum": [
              "content_node_not_found",
              "content_node_access_denied"
            ],
            "title": "Code",
            "type": "string"
          },
          "detail": {
            "title": "Detail",
            "type": "string"
          },
          "source": {
            "$ref": "#/components/schemas/BulkProgressErrorSource"
          },
          "status": {
            "enum": [
              "404",
              "403"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "code",
          "detail",
          "source"
        ],
        "title": "BulkProgressErrorEntry",
        "type": "object"
      },
      "BulkProgressErrorSource": {
        "additionalProperties": false,
        "description": "JSON:API `source` object pinpointing which request item failed.",
        "properties": {
          "pointer": {
            "title": "Pointer",
            "type": "string"
          }
        },
        "required": [
          "pointer"
        ],
        "title": "BulkProgressErrorSource",
        "type": "object"
      },
      "BulkProgressItem": {
        "additionalProperties": false,
        "properties": {
          "is_completed": {
            "default": false,
            "title": "Is Completed",
            "type": "boolean"
          },
          "node_id": {
            "title": "Node Id",
            "type": "string"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time"
          }
        },
        "required": [
          "node_id"
        ],
        "title": "BulkProgressItem",
        "type": "object"
      },
      "BulkProgressMeta": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "errors": {
            "items": {
              "$ref": "#/components/schemas/BulkProgressErrorEntry"
            },
            "title": "Errors",
            "type": "array"
          },
          "failed": {
            "title": "Failed",
            "type": "integer"
          }
        },
        "required": [
          "count",
          "failed"
        ],
        "title": "BulkProgressMeta",
        "type": "object"
      },
      "BulkProgressResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/BulkProgressAttributes"
          },
          "type": {
            "const": "content_progress",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "BulkProgressResource",
        "type": "object"
      },
      "BulkValuePatchEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "discriminator": {
                "mapping": {
                  "clear": "#/components/schemas/ClearOperation",
                  "set": "#/components/schemas/SetOperation"
                },
                "propertyName": "type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SetOperation"
                },
                {
                  "$ref": "#/components/schemas/ClearOperation"
                }
              ]
            },
            "maxItems": 200,
            "minItems": 1,
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "BulkValuePatchEnvelope",
        "type": "object"
      },
      "Caption": {
        "additionalProperties": false,
        "description": "A signed WebVTT sidecar track attached to a video.\n\nReused for captions, chapters, and storyboard thumbnails. ``language`` is\nNone for tracks that carry no language (storyboard thumbnails); caption and\nchapter tracks set a real language code.",
        "properties": {
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "Caption",
        "type": "object"
      },
      "CategoryCount": {
        "description": "A single {total, unread} bucket for a category or kind.",
        "properties": {
          "total": {
            "title": "Total",
            "type": "integer"
          },
          "unread": {
            "title": "Unread",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "unread"
        ],
        "title": "CategoryCount",
        "type": "object"
      },
      "ChangePasswordAttributes": {
        "additionalProperties": false,
        "description": "Attributes for POST /api/contact-auth/me/password/change.\n\nVerifies current_password then replaces it with new_password.\n422 if current_password is wrong, 400 if no password is set.",
        "properties": {
          "current_password": {
            "maxLength": 4096,
            "minLength": 1,
            "title": "Current Password",
            "type": "string"
          },
          "new_password": {
            "maxLength": 4096,
            "minLength": 8,
            "title": "New Password",
            "type": "string"
          }
        },
        "required": [
          "current_password",
          "new_password"
        ],
        "title": "ChangePasswordAttributes",
        "type": "object"
      },
      "ChangePasswordEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ChangePasswordResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ChangePasswordEnvelope",
        "type": "object"
      },
      "ChangePasswordResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ChangePasswordAttributes"
          },
          "type": {
            "const": "password_changes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ChangePasswordResource",
        "type": "object"
      },
      "ChapterRow": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "start_time": {
            "title": "Start Time",
            "type": "number"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "start_time"
        ],
        "title": "ChapterRow",
        "type": "object"
      },
      "ChaptersPayload": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ChapterRow"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "ChaptersPayload",
        "type": "object"
      },
      "CheckoutDisplayAttributes": {
        "additionalProperties": false,
        "properties": {
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id"
        ],
        "title": "CheckoutDisplayAttributes",
        "type": "object"
      },
      "CheckoutDisplayRelationships": {
        "additionalProperties": false,
        "properties": {
          "displays": {
            "additionalProperties": true,
            "title": "Displays",
            "type": "object"
          }
        },
        "required": [
          "displays"
        ],
        "title": "CheckoutDisplayRelationships",
        "type": "object"
      },
      "CheckoutDisplayResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CheckoutDisplayAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "relationships": {
            "$ref": "#/components/schemas/CheckoutDisplayRelationships"
          },
          "type": {
            "const": "checkout_displays",
            "default": "checkout_displays",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes",
          "relationships"
        ],
        "title": "CheckoutDisplayResource",
        "type": "object"
      },
      "CheckoutDisplayResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CheckoutDisplayResource"
          },
          "included": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Included",
            "type": "array"
          }
        },
        "required": [
          "data",
          "included"
        ],
        "title": "CheckoutDisplayResponse",
        "type": "object"
      },
      "CheckoutSessionRequest": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CheckoutSessionRequestResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CheckoutSessionRequest",
        "type": "object"
      },
      "CheckoutSessionRequestAttributes": {
        "additionalProperties": false,
        "properties": {
          "cancel_url": {
            "default": "",
            "description": "URL Stripe redirects the customer to if checkout is cancelled. Must match an origin in the hub's settings.auth.allowed_redirect_origins (or the hub's currently active custom domain). Empty string = not supplied.",
            "title": "Cancel Url",
            "type": "string"
          },
          "coupon_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Coupon Code"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "price_id": {
            "title": "Price Id",
            "type": "string"
          },
          "success_url": {
            "default": "",
            "description": "URL Stripe redirects the customer to after a successful payment. Must match an origin in the hub's settings.auth.allowed_redirect_origins (or the hub's currently active custom domain). Empty string = not supplied.",
            "title": "Success Url",
            "type": "string"
          }
        },
        "required": [
          "price_id"
        ],
        "title": "CheckoutSessionRequestAttributes",
        "type": "object"
      },
      "CheckoutSessionRequestResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CheckoutSessionRequestAttributes"
          },
          "type": {
            "const": "checkout_sessions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "CheckoutSessionRequestResource",
        "type": "object"
      },
      "CheckoutSessionResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CheckoutSessionResponseResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CheckoutSessionResponse",
        "type": "object"
      },
      "CheckoutSessionResponseAttributes": {
        "additionalProperties": false,
        "properties": {
          "order_id": {
            "title": "Order Id",
            "type": "string"
          },
          "session_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Url"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "order_id",
          "status"
        ],
        "title": "CheckoutSessionResponseAttributes",
        "type": "object"
      },
      "CheckoutSessionResponseResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CheckoutSessionResponseAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "checkout_sessions",
            "default": "checkout_sessions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "CheckoutSessionResponseResource",
        "type": "object"
      },
      "CityConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "city",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/CityValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "CityConditionCompiled",
        "type": "object"
      },
      "CityConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "city",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/CityValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "CityConditionIn",
        "type": "object"
      },
      "CityValue": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "title": "CityValue",
        "type": "object"
      },
      "ClearOperation": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ClearOperationAttributes"
          },
          "type": {
            "const": "clear",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ClearOperation",
        "type": "object"
      },
      "ClearOperationAttributes": {
        "additionalProperties": false,
        "description": "A single clear operation.\n\nClears the full value for the identified attribute. For scalar defs the\nscalar row is removed; for multi-select, all selected options for this\n(contact, definition) are removed.",
        "properties": {
          "definition_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Definition Id"
          },
          "definition_slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Definition Slug"
          }
        },
        "title": "ClearOperationAttributes",
        "type": "object"
      },
      "CommentAttributes": {
        "properties": {
          "anchor": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Anchor"
          },
          "attachments": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RenderableAttachment"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attachments"
          },
          "author_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Contact Id"
          },
          "author_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Display Name"
          },
          "author_membership_status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "banned",
                  "soft_banned",
                  "left"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Membership Status"
          },
          "author_photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Thumbnail Url"
          },
          "author_photo_thumbnail_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Thumbnail Url Expires At"
          },
          "author_photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Url"
          },
          "author_photo_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Url Expires At"
          },
          "author_role": {
            "anyOf": [
              {
                "enum": [
                  "owner",
                  "admin",
                  "moderator",
                  "member"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Role"
          },
          "body": {
            "title": "Body",
            "type": "string"
          },
          "body_plain": {
            "title": "Body Plain",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "edited_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Edited At"
          },
          "external_video_embeds": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Video Embeds"
          },
          "is_deleted": {
            "title": "Is Deleted",
            "type": "boolean"
          },
          "parent_comment_author_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Author Display Name"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "reaction_count": {
            "title": "Reaction Count",
            "type": "integer"
          },
          "reactions": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Reactions",
            "type": "array"
          },
          "reply_count": {
            "default": 0,
            "title": "Reply Count",
            "type": "integer"
          },
          "report_count": {
            "default": 0,
            "description": "Number of moderation reports on this resource, across ALL statuses (pending, dismissed, actioned). Present ONLY for an active, non-banned hub owner/admin/moderator \u2014 the key is omitted entirely for any other viewer. Clients MUST treat absence as 'not authorized / not supplied', never as zero.",
            "minimum": 0.0,
            "title": "Report Count",
            "type": "integer"
          },
          "reported_by_me": {
            "default": false,
            "description": "True when the requesting member has already filed a report against this resource. Present for any authenticated member; omitted entirely for an anonymous viewer. Clients MUST treat absence as 'unknown', never as false.",
            "title": "Reported By Me",
            "type": "boolean"
          },
          "target_id": {
            "title": "Target Id",
            "type": "string"
          },
          "target_type": {
            "title": "Target Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "target_type",
          "target_id",
          "author_contact_id",
          "author_display_name",
          "parent_comment_id",
          "body",
          "body_plain",
          "anchor",
          "reaction_count",
          "reactions",
          "is_deleted",
          "edited_at",
          "created_at",
          "updated_at"
        ],
        "title": "CommentAttributes",
        "type": "object"
      },
      "CommentCreateAttributes": {
        "additionalProperties": false,
        "description": "Attributes for POST /api/comments.",
        "properties": {
          "anchor": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Anchor"
          },
          "attachments": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attachments"
          },
          "body": {
            "default": "",
            "description": "Markdown body text. Mention tokens use the format `@[Display Name](contact_id)` where `contact_id` is the mentioned contact's UUID. The display label is render-only; the backend trusts only the UUID. Plain `@Name` text does not trigger notifications. Recipients must be active hub members; unknown or ineligible IDs are silently ignored.",
            "maxLength": 50000,
            "title": "Body",
            "type": "string"
          },
          "external_video_embeds": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Video Embeds"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "target_id": {
            "title": "Target Id",
            "type": "string"
          },
          "target_type": {
            "title": "Target Type",
            "type": "string"
          }
        },
        "required": [
          "target_type",
          "target_id"
        ],
        "title": "CommentCreateAttributes",
        "type": "object"
      },
      "CommentCreateRequest": {
        "additionalProperties": false,
        "description": "Top-level envelope for POST /api/comments.\n\nShape: { \"data\": { \"type\": \"comments\", \"attributes\": { ... } } }",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CommentCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CommentCreateRequest",
        "type": "object"
      },
      "CommentCreateResource": {
        "additionalProperties": false,
        "description": "JSON:API resource wrapper for a create request.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CommentCreateAttributes"
          },
          "type": {
            "const": "comments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "CommentCreateResource",
        "type": "object"
      },
      "CommentListMeta": {
        "description": "Pagination meta for a comment list response.\n\nnext_cursor format: \"<created_at ISO-8601>|<id>\"\nClients pass this value as page[after]=<cursor>.",
        "properties": {
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "next_cursor",
          "has_more"
        ],
        "title": "CommentListMeta",
        "type": "object"
      },
      "CommentListResponse": {
        "description": "JSON:API list envelope for comments.\n\nShape:\n{\n  \"data\": [ <CommentResource>, ... ],\n  \"meta\": { \"next_cursor\": \"...\", \"has_more\": true },\n  \"links\": { \"self\": \"...\" }\n}",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CommentResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "$ref": "#/components/schemas/CommentListMeta"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "CommentListResponse",
        "type": "object"
      },
      "CommentResource": {
        "description": "JSON:API resource object for a comment.\n\nShape:\n{\n  \"type\": \"comments\",\n  \"id\": \"<uuid>\",\n  \"attributes\": { ... },\n  \"links\": { \"self\": \"/api/comments/<uuid>\" }\n}",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CommentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Links",
            "type": "object"
          },
          "type": {
            "const": "comments",
            "default": "comments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes",
          "links"
        ],
        "title": "CommentResource",
        "type": "object"
      },
      "CommentResponse": {
        "description": "Single-item JSON:API envelope for a comment.\n\nShape: { \"data\": <CommentResource> }",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CommentResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CommentResponse",
        "type": "object"
      },
      "CommentUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "attachments": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Full replacement list of attached media ids. Presence, not value, decides behavior: omit this key to leave attachments unchanged; send `[]` to remove every attachment; send `[ids]` to replace the attachment set with exactly those ids (only the delta is attached/detached \u2014 ids already attached that remain in the list are left untouched, and there is no reorder concept for attachments). This field is typed nullable (`list[str] | None`) for internal reasons only \u2014 the runtime REJECTS an explicit `null` with HTTP 422 (`code: \"invalid_attribute\"`, `source.pointer: \"/data/attributes/attachments\"`); `null` is NOT one of the three supported wire states (omitted / `[]` / `[ids]`).",
            "title": "Attachments"
          },
          "body": {
            "default": "",
            "maxLength": 50000,
            "title": "Body",
            "type": "string"
          },
          "external_video_embeds": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Full replacement list of attached external-video-embed ids. Same presence-based semantics as `attachments` (omit = unchanged, `[]` = remove all, `[ids]` = full replacement, only the delta is attached/detached) \u2014 with one difference: order matters. Sending the SAME set of ids already attached in a DIFFERENT order repositions the existing embeds to match the new order (embeds carry a `position`; attachments do not). At most 5 embeds are allowed on one comment; exceeding it is a 422 (`code: \"too_many_embeds\"`). As with `attachments`, this field is typed nullable for internal reasons only \u2014 the runtime REJECTS an explicit `null` with HTTP 422 (`code: \"invalid_attribute\"`, `source.pointer: \"/data/attributes/external_video_embeds\"`).",
            "title": "External Video Embeds"
          }
        },
        "title": "CommentUpdateAttributes",
        "type": "object"
      },
      "CommentUpdateRequest": {
        "additionalProperties": false,
        "description": "Top-level envelope for PATCH /api/comments/<id>.\n\nShape: { \"data\": { \"type\": \"comments\", \"attributes\": { \"body\": \"...\" } } }",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CommentUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CommentUpdateRequest",
        "type": "object"
      },
      "CommentUpdateResource": {
        "additionalProperties": false,
        "description": "JSON:API resource wrapper for an update request.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CommentUpdateAttributes"
          },
          "type": {
            "const": "comments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "CommentUpdateResource",
        "type": "object"
      },
      "CommunityProfileResponseAttributes": {
        "properties": {
          "avatar_file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar File Id"
          },
          "banner_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Color"
          },
          "banner_file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner File Id"
          },
          "banner_scheme": {
            "anyOf": [
              {
                "enum": [
                  "split",
                  "complementary",
                  "analogous",
                  "triadic",
                  "monochrome",
                  "warm"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Scheme"
          },
          "banner_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Url"
          },
          "banner_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Url Expires At"
          },
          "banner_variant": {
            "anyOf": [
              {
                "enum": [
                  "gradient",
                  "image"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Variant"
          },
          "bio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bio"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "hide_activity": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hide Activity"
          },
          "hide_profile": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hide Profile"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url"
          },
          "photo_thumbnail_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url Expires At"
          },
          "photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url"
          },
          "photo_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url Expires At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "CommunityProfileResponseAttributes",
        "type": "object"
      },
      "CommunitySearchMeta": {
        "description": "Top-level meta block for community search list responses.\n\nDocuments cap/pagination so they appear in the generated OpenAPI schema.",
        "properties": {
          "cap": {
            "title": "Cap",
            "type": "integer"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "is_capped": {
            "title": "Is Capped",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "pagination": {
            "const": "top_n",
            "title": "Pagination",
            "type": "string"
          },
          "query": {
            "title": "Query",
            "type": "string"
          }
        },
        "required": [
          "query",
          "has_more",
          "is_capped",
          "cap",
          "pagination",
          "next_cursor"
        ],
        "title": "CommunitySearchMeta",
        "type": "object"
      },
      "CompiledConditionTree": {
        "additionalProperties": false,
        "description": "Persisted shape. Slugs resolved to FK IDs.",
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/GroupCompiled"
            },
            "maxItems": 50,
            "minItems": 1,
            "title": "Groups",
            "type": "array"
          },
          "version": {
            "const": 1,
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "groups"
        ],
        "title": "CompiledConditionTree",
        "type": "object"
      },
      "ConditionAttributes": {
        "additionalProperties": false,
        "properties": {
          "condition_data": {
            "additionalProperties": true,
            "title": "Condition Data",
            "type": "object"
          },
          "condition_type": {
            "title": "Condition Type",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "condition_type",
          "condition_data",
          "position"
        ],
        "title": "ConditionAttributes",
        "type": "object"
      },
      "ConditionInput": {
        "additionalProperties": false,
        "description": "A single condition within a rule create/update request.",
        "properties": {
          "condition_data": {
            "additionalProperties": true,
            "title": "Condition Data",
            "type": "object"
          },
          "condition_type": {
            "enum": [
              "has_entitlement",
              "in_segment",
              "past_drip_date"
            ],
            "title": "Condition Type",
            "type": "string"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "condition_type",
          "condition_data"
        ],
        "title": "ConditionInput",
        "type": "object"
      },
      "ConditionTreeIn": {
        "additionalProperties": false,
        "description": "Admin write shape. Slugs not yet resolved.",
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/GroupIn"
            },
            "maxItems": 50,
            "minItems": 1,
            "title": "Groups",
            "type": "array"
          },
          "version": {
            "const": 1,
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "version",
          "groups"
        ],
        "title": "ConditionTreeIn",
        "type": "object"
      },
      "ContactHubStatsAttributes": {
        "additionalProperties": false,
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "extras": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Extras"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "last_login_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Login At"
          },
          "last_search_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Search At"
          },
          "login_count": {
            "title": "Login Count",
            "type": "integer"
          },
          "search_count": {
            "title": "Search Count",
            "type": "integer"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "contact_id",
          "hub_id",
          "login_count",
          "last_login_at",
          "search_count",
          "last_search_at",
          "extras",
          "created_at",
          "updated_at"
        ],
        "title": "ContactHubStatsAttributes",
        "type": "object"
      },
      "ContactHubStatsListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContactHubStatsResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "ContactHubStatsListResponse",
        "type": "object"
      },
      "ContactHubStatsResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContactHubStatsAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "contact_hub_stats",
            "default": "contact_hub_stats",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ContactHubStatsResource",
        "type": "object"
      },
      "ContactHubStatsResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContactHubStatsResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ContactHubStatsResponse",
        "type": "object"
      },
      "ContactIncludedAttributes": {
        "properties": {
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "membership_status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "banned",
                  "soft_banned",
                  "left"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Status"
          },
          "role": {
            "anyOf": [
              {
                "enum": [
                  "owner",
                  "admin",
                  "moderator",
                  "member"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          }
        },
        "title": "ContactIncludedAttributes",
        "type": "object"
      },
      "ContactIncludedResource": {
        "description": "Top-level `included` contact resource (mirrors _contact_view_to_included).",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContactIncludedAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "default": "contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ContactIncludedResource",
        "type": "object"
      },
      "ContactMeAttributes": {
        "additionalProperties": false,
        "description": "Attributes block for the `contacts` resource returned by GET/PATCH /me\nand POST /me/password and POST /me/password/change.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "email": {
            "title": "Email",
            "type": "string"
          },
          "email_verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Verified At"
          },
          "has_password": {
            "title": "Has Password",
            "type": "boolean"
          },
          "team_memberships": {
            "items": {
              "$ref": "#/components/schemas/ContactMeMembership"
            },
            "title": "Team Memberships",
            "type": "array"
          },
          "tos_accepted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Accepted At"
          },
          "tos_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Version"
          }
        },
        "required": [
          "email",
          "email_verified_at",
          "tos_accepted_at",
          "tos_version",
          "created_at",
          "has_password",
          "team_memberships"
        ],
        "title": "ContactMeAttributes",
        "type": "object"
      },
      "ContactMeMembership": {
        "additionalProperties": false,
        "description": "A single team membership entry nested inside the /me attributes.",
        "properties": {
          "joined_at": {
            "format": "date-time",
            "title": "Joined At",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "joined_at"
        ],
        "title": "ContactMeMembership",
        "type": "object"
      },
      "ContactMeResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for the current contact (GET /me family).",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContactMeAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "contacts",
            "default": "contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ContactMeResource",
        "type": "object"
      },
      "ContactMeResponse": {
        "additionalProperties": false,
        "description": "JSON:API single-resource envelope for /me routes.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContactMeResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ContactMeResponse",
        "type": "object"
      },
      "ContactValueAttributes": {
        "additionalProperties": false,
        "description": "Flat view of a contact's attribute value for a single definition.\n\nScalar defs set exactly one of value_text / value_number / value_boolean /\nvalue_date. Multi-select defs set ``option_ids`` and leave the scalar\nfields None.",
        "properties": {
          "definition_id": {
            "title": "Definition Id",
            "type": "string"
          },
          "definition_slug": {
            "title": "Definition Slug",
            "type": "string"
          },
          "option_ids": {
            "items": {
              "type": "string"
            },
            "title": "Option Ids",
            "type": "array"
          },
          "option_slugs": {
            "items": {
              "type": "string"
            },
            "title": "Option Slugs",
            "type": "array"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "value_boolean": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Boolean"
          },
          "value_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Date"
          },
          "value_number": {
            "anyOf": [
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Number"
          },
          "value_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Text"
          }
        },
        "required": [
          "definition_id",
          "definition_slug",
          "type"
        ],
        "title": "ContactValueAttributes",
        "type": "object"
      },
      "ContactValueListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContactValueResource"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "ContactValueListResponse",
        "type": "object"
      },
      "ContactValueResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContactValueAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "contact_attribute_values",
            "default": "contact_attribute_values",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ContactValueResource",
        "type": "object"
      },
      "ContentNodeAttachment": {
        "additionalProperties": false,
        "properties": {
          "file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Id"
          },
          "filename": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filename"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "media_id": {
            "title": "Media Id",
            "type": "string"
          },
          "mime_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mime Type"
          },
          "role": {
            "title": "Role",
            "type": "string"
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size Bytes"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          }
        },
        "required": [
          "id",
          "media_id",
          "role"
        ],
        "title": "ContentNodeAttachment",
        "type": "object"
      },
      "ContentNodeAttributes": {
        "additionalProperties": false,
        "properties": {
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/ContentNodeAttachment"
            },
            "title": "Attachments",
            "type": "array"
          },
          "available_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Available At"
          },
          "can_access": {
            "default": true,
            "title": "Can Access",
            "type": "boolean"
          },
          "comment_count": {
            "default": 0,
            "title": "Comment Count",
            "type": "integer"
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type"
          },
          "cover_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Signed, expiring lesson-artwork cover URL. Null when no eligible media source exists, imgproxy is unconfigured, or signing fails. Read-only.",
            "readOnly": true,
            "title": "Cover Url"
          },
          "cover_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Expiry timestamp for cover_url. Clients must re-fetch after this to get a fresh signed URL. Read-only.",
            "readOnly": true,
            "title": "Cover Url Expires At"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Media duration in whole seconds for the node's active, same-team media (content_nodes.media_id -> Media.duration_seconds). Null when the node has no media, the media is missing/deleted/cross-team, or the source duration is not yet known. Copied unchanged, never fabricated. Read-only.",
            "readOnly": true,
            "title": "Duration Seconds"
          },
          "file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Id"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_saved": {
            "default": false,
            "title": "Is Saved",
            "type": "boolean"
          },
          "legacy_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Hash"
          },
          "lock_reason": {
            "anyOf": [
              {
                "enum": [
                  "members_required",
                  "scheduled",
                  "private",
                  "draft",
                  "drip_unavailable",
                  "access_restricted"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lock Reason"
          },
          "media_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Id"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "node_type": {
            "title": "Node Type",
            "type": "string"
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "privacy": {
            "title": "Privacy",
            "type": "string"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "scheduled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled At"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "unique_viewer_count": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "readOnly": true,
            "title": "Unique Viewer Count"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "team_id",
          "parent_id",
          "node_type",
          "content_type",
          "title",
          "description",
          "slug",
          "legacy_hash",
          "media_id",
          "privacy",
          "published_at",
          "position",
          "meta",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "ContentNodeAttributes",
        "type": "object"
      },
      "ContentNodeCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "legacy_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Hash"
          },
          "media_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Id"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "node_type": {
            "title": "Node Type",
            "type": "string"
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "privacy": {
            "default": "members",
            "enum": [
              "public",
              "members",
              "paid"
            ],
            "title": "Privacy",
            "type": "string"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "title": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "node_type",
          "title"
        ],
        "title": "ContentNodeCreateAttributes",
        "type": "object"
      },
      "ContentNodeCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentNodeCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ContentNodeCreateEnvelope",
        "type": "object"
      },
      "ContentNodeCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContentNodeCreateAttributes"
          },
          "type": {
            "const": "content_nodes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ContentNodeCreateResource",
        "type": "object"
      },
      "ContentNodeListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContentNodeResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "ContentNodeListResponse",
        "type": "object"
      },
      "ContentNodeReconciliationEntry": {
        "description": "One ``EnsureNodeResult`` (D7), verbatim on the wire \u2014 nothing is\nlog-only. ``outcome`` is the full D7 vocabulary\n(``app/content/node_spec.py::EnsureOutcome``): ``created`` / ``adopted`` /\n``adopted_not_member_visible`` / ``skipped_duplicate_media`` /\n``skipped_ambiguous_media`` / ``skipped_tombstoned`` /\n``skipped_parent_tombstoned`` / ``skipped_parent_unresolved`` /\n``skipped_slug_conflict``.",
        "properties": {
          "legacy_hash": {
            "title": "Legacy Hash",
            "type": "string"
          },
          "member_visible": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Member Visible"
          },
          "node_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Node Id"
          },
          "node_type": {
            "title": "Node Type",
            "type": "string"
          },
          "outcome": {
            "title": "Outcome",
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          }
        },
        "required": [
          "legacy_hash",
          "node_type",
          "outcome"
        ],
        "title": "ContentNodeReconciliationEntry",
        "type": "object"
      },
      "ContentNodeResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContentNodeAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "content_nodes",
            "default": "content_nodes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ContentNodeResource",
        "type": "object"
      },
      "ContentNodeResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentNodeResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ContentNodeResponse",
        "type": "object"
      },
      "ContentNodeUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "media_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Id"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "privacy": {
            "anyOf": [
              {
                "enum": [
                  "public",
                  "members",
                  "paid"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Privacy"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "ContentNodeUpdateAttributes",
        "type": "object"
      },
      "ContentNodeUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentNodeUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ContentNodeUpdateEnvelope",
        "type": "object"
      },
      "ContentNodeUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContentNodeUpdateAttributes"
          },
          "type": {
            "const": "content_nodes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ContentNodeUpdateResource",
        "type": "object"
      },
      "ContentProgressAttributes": {
        "additionalProperties": false,
        "properties": {
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_completed": {
            "title": "Is Completed",
            "type": "boolean"
          },
          "node_id": {
            "title": "Node Id",
            "type": "string"
          },
          "plays": {
            "title": "Plays",
            "type": "integer"
          },
          "start_time": {
            "anyOf": [
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "visits": {
            "title": "Visits",
            "type": "integer"
          }
        },
        "required": [
          "node_id",
          "contact_id",
          "hub_id",
          "start_time",
          "is_completed",
          "completed_at",
          "visits",
          "plays",
          "created_at",
          "updated_at"
        ],
        "title": "ContentProgressAttributes",
        "type": "object"
      },
      "ContentProgressBulkResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContentProgressResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/BulkProgressMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "ContentProgressBulkResponse",
        "type": "object"
      },
      "ContentProgressListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContentProgressResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "ContentProgressListResponse",
        "type": "object"
      },
      "ContentProgressResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ContentProgressAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "content_progress",
            "default": "content_progress",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ContentProgressResource",
        "type": "object"
      },
      "ContentProgressResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentProgressResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ContentProgressResponse",
        "type": "object"
      },
      "ConversationAudienceAttributes": {
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "conversation_id": {
            "title": "Conversation Id",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "is_archived": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Archived"
          },
          "is_muted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Muted"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          }
        },
        "required": [
          "conversation_id",
          "contact_id"
        ],
        "title": "ConversationAudienceAttributes",
        "type": "object"
      },
      "ConversationAudienceUpdateAttributes": {
        "properties": {
          "is_archived": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Archived"
          },
          "is_muted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Muted"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          }
        },
        "title": "ConversationAudienceUpdateAttributes",
        "type": "object"
      },
      "ConversationAudienceUpdateEnvelope": {
        "description": "JSON:API envelope for PATCH /api/conversations/{conversation_id}/audiences/me.\n\ndata.type must be 'conversation_audiences'.\ndata.attributes carries any non-empty subset of is_pinned/is_muted/is_archived \u2014\nat least one must be provided (see ConversationAudienceUpdateAttributes).",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_ConversationAudienceUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ConversationAudienceUpdateEnvelope",
        "type": "object"
      },
      "ConversationCreateEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_ConversationCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ConversationCreateEnvelope",
        "type": "object"
      },
      "ConversationPatchEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_ConversationPatchData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ConversationPatchEnvelope",
        "type": "object"
      },
      "ConversationResponseAttributes": {
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "is_archived": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Archived"
          },
          "is_group": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Group"
          },
          "is_muted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Muted"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "last_entry": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LastEntryPreview"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_message_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Message At"
          },
          "last_message_preview": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Message Preview"
          },
          "participants": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/ParticipantSummary"
            },
            "title": "Participants",
            "type": "array"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "unread_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unread Count"
          }
        },
        "title": "ConversationResponseAttributes",
        "type": "object"
      },
      "CountryConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "country",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/CountryValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "CountryConditionCompiled",
        "type": "object"
      },
      "CountryConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "country",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/CountryValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "CountryConditionIn",
        "type": "object"
      },
      "CountryValue": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Za-z]{2}$",
            "title": "Code",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "title": "CountryValue",
        "type": "object"
      },
      "CouponAttributes": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "title": "Code",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "discount_type": {
            "title": "Discount Type",
            "type": "string"
          },
          "discount_value": {
            "title": "Discount Value",
            "type": "integer"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "first_time_only": {
            "title": "First Time Only",
            "type": "boolean"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "max_redemptions": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Redemptions"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "redemption_count": {
            "title": "Redemption Count",
            "type": "integer"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "code",
          "discount_type",
          "discount_value",
          "currency",
          "max_redemptions",
          "redemption_count",
          "first_time_only",
          "expires_at",
          "is_active",
          "metadata",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "CouponAttributes",
        "type": "object"
      },
      "CouponCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "maxLength": 50,
            "minLength": 1,
            "title": "Code",
            "type": "string"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "discount_type": {
            "title": "Discount Type",
            "type": "string"
          },
          "discount_value": {
            "exclusiveMinimum": 0.0,
            "title": "Discount Value",
            "type": "integer"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "first_time_only": {
            "default": false,
            "title": "First Time Only",
            "type": "boolean"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "max_redemptions": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Redemptions"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          }
        },
        "required": [
          "code",
          "discount_type",
          "discount_value"
        ],
        "title": "CouponCreateAttributes",
        "type": "object"
      },
      "CouponCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CouponCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CouponCreateEnvelope",
        "type": "object"
      },
      "CouponCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CouponCreateAttributes"
          },
          "type": {
            "const": "coupons",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "CouponCreateResource",
        "type": "object"
      },
      "CouponListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CouponResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "CouponListResponse",
        "type": "object"
      },
      "CouponProductAttachAttributes": {
        "additionalProperties": false,
        "properties": {
          "product_id": {
            "title": "Product Id",
            "type": "string"
          }
        },
        "required": [
          "product_id"
        ],
        "title": "CouponProductAttachAttributes",
        "type": "object"
      },
      "CouponProductAttachEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CouponProductAttachResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CouponProductAttachEnvelope",
        "type": "object"
      },
      "CouponProductAttachResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CouponProductAttachAttributes"
          },
          "type": {
            "const": "coupon_products",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "CouponProductAttachResource",
        "type": "object"
      },
      "CouponProductAttributes": {
        "additionalProperties": false,
        "properties": {
          "coupon_id": {
            "title": "Coupon Id",
            "type": "string"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          }
        },
        "required": [
          "coupon_id",
          "product_id"
        ],
        "title": "CouponProductAttributes",
        "type": "object"
      },
      "CouponProductListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CouponProductResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "CouponProductListResponse",
        "type": "object"
      },
      "CouponProductResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CouponProductAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "coupon_products",
            "default": "coupon_products",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "CouponProductResource",
        "type": "object"
      },
      "CouponProductResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CouponProductResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CouponProductResponse",
        "type": "object"
      },
      "CouponResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CouponAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "coupons",
            "default": "coupons",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "CouponResource",
        "type": "object"
      },
      "CouponResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CouponResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CouponResponse",
        "type": "object"
      },
      "CouponUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "first_time_only": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Time Only"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "max_redemptions": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Redemptions"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          }
        },
        "title": "CouponUpdateAttributes",
        "type": "object"
      },
      "CouponUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CouponUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CouponUpdateEnvelope",
        "type": "object"
      },
      "CouponUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CouponUpdateAttributes"
          },
          "type": {
            "const": "coupons",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "CouponUpdateResource",
        "type": "object"
      },
      "CreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "city": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "consent_source": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Source"
          },
          "consent_version": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Version"
          },
          "country": {
            "anyOf": [
              {
                "maxLength": 2,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "first_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "marketing_consent_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Marketing Consent At"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "phone": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "send_invite": {
            "default": false,
            "title": "Send Invite",
            "type": "boolean"
          },
          "state": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "timezone": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "required": [
          "email"
        ],
        "title": "CreateAttributes",
        "type": "object"
      },
      "CreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "CreateEnvelope",
        "type": "object"
      },
      "CreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CreateAttributes"
          },
          "type": {
            "const": "team_contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "CreateResource",
        "type": "object"
      },
      "CustomEventAcceptedMeta": {
        "additionalProperties": false,
        "description": "``meta`` payload for the POST /automations/events response.\n\nReturned on both 202 (new event) and 200 (duplicate/deduped) responses.\n``accepted`` is ``True`` when the event was newly written; ``False`` when\nthe idempotency_key was already present (dedup).",
        "properties": {
          "accepted": {
            "title": "Accepted",
            "type": "boolean"
          },
          "event_type": {
            "title": "Event Type",
            "type": "string"
          },
          "idempotency_key": {
            "title": "Idempotency Key",
            "type": "string"
          }
        },
        "required": [
          "event_type",
          "idempotency_key",
          "accepted"
        ],
        "title": "CustomEventAcceptedMeta",
        "type": "object"
      },
      "CustomEventAcceptedResponse": {
        "additionalProperties": false,
        "description": "Top-level meta-only response for POST /automations/events.\n\nJSON:API allows a top-level ``meta`` without ``data`` for non-resource\nresponses (\u00a7 7.1 \"Top Level\").  This is used for the custom-event fire\nendpoint which writes an outbox row but does not return a resource.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/CustomEventAcceptedMeta"
          }
        },
        "required": [
          "meta"
        ],
        "title": "CustomEventAcceptedResponse",
        "type": "object"
      },
      "CustomEventBody": {
        "additionalProperties": false,
        "properties": {
          "event_type": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Event Type",
            "type": "string"
          },
          "idempotency_key": {
            "maxLength": 128,
            "minLength": 1,
            "title": "Idempotency Key",
            "type": "string"
          },
          "payload": {
            "additionalProperties": true,
            "title": "Payload",
            "type": "object"
          },
          "team_contact_id": {
            "minLength": 1,
            "title": "Team Contact Id",
            "type": "string"
          }
        },
        "required": [
          "event_type",
          "team_contact_id",
          "idempotency_key"
        ],
        "title": "CustomEventBody",
        "type": "object"
      },
      "DateRegisteredConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "date_registered",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/DateRegisteredValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "DateRegisteredConditionCompiled",
        "type": "object"
      },
      "DateRegisteredConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "date_registered",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/DateRegisteredValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "DateRegisteredConditionIn",
        "type": "object"
      },
      "DateRegisteredValue": {
        "additionalProperties": false,
        "description": "Date-valued registration condition.\n\nPopulate either ``date`` (for before/after) or ``date_from`` +\n``date_to`` (for between) or ``days`` (for within_last_days).\nCross-field validation happens at the resolver layer.",
        "properties": {
          "date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date"
          },
          "date_from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date From"
          },
          "date_to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date To"
          },
          "days": {
            "anyOf": [
              {
                "maximum": 36500.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Days"
          }
        },
        "title": "DateRegisteredValue",
        "type": "object"
      },
      "DefinitionAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_contact_editable": {
            "title": "Is Contact Editable",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "type": {
            "enum": [
              "text",
              "number",
              "boolean",
              "date",
              "multiple",
              "single"
            ],
            "title": "Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "slug",
          "name",
          "type",
          "description",
          "is_contact_editable",
          "position",
          "created_at",
          "updated_at"
        ],
        "title": "DefinitionAttributes",
        "type": "object"
      },
      "DefinitionCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_contact_editable": {
            "default": true,
            "title": "Is Contact Editable",
            "type": "boolean"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "slug": {
            "maxLength": 80,
            "minLength": 1,
            "title": "Slug",
            "type": "string"
          },
          "type": {
            "enum": [
              "text",
              "number",
              "boolean",
              "date",
              "multiple",
              "single"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name",
          "type"
        ],
        "title": "DefinitionCreateAttributes",
        "type": "object"
      },
      "DefinitionCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DefinitionCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DefinitionCreateEnvelope",
        "type": "object"
      },
      "DefinitionCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DefinitionCreateAttributes"
          },
          "type": {
            "const": "contact_attribute_definitions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "DefinitionCreateResource",
        "type": "object"
      },
      "DefinitionListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DefinitionResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "DefinitionListResponse",
        "type": "object"
      },
      "DefinitionResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DefinitionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "contact_attribute_definitions",
            "default": "contact_attribute_definitions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "DefinitionResource",
        "type": "object"
      },
      "DefinitionResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DefinitionResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DefinitionResponse",
        "type": "object"
      },
      "DefinitionUpdateAttributes": {
        "additionalProperties": false,
        "description": "PATCH \u2014 every field optional. ``type`` is immutable (not present).",
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_contact_editable": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Contact Editable"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 80,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          }
        },
        "title": "DefinitionUpdateAttributes",
        "type": "object"
      },
      "DefinitionUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DefinitionUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DefinitionUpdateEnvelope",
        "type": "object"
      },
      "DefinitionUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DefinitionUpdateAttributes"
          },
          "type": {
            "const": "contact_attribute_definitions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "DefinitionUpdateResource",
        "type": "object"
      },
      "DeliverableAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deliverable_type": {
            "title": "Deliverable Type",
            "type": "string"
          },
          "duration_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Days"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          },
          "resource_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Id"
          },
          "resource_meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Meta"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "deliverable_type",
          "resource_id",
          "resource_meta",
          "duration_days",
          "position",
          "created_at",
          "updated_at"
        ],
        "title": "DeliverableAttributes",
        "type": "object"
      },
      "DeliverableCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "deliverable_type": {
            "title": "Deliverable Type",
            "type": "string"
          },
          "duration_days": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Days"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "resource_id": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Id"
          },
          "resource_meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Meta"
          }
        },
        "required": [
          "deliverable_type"
        ],
        "title": "DeliverableCreateAttributes",
        "type": "object"
      },
      "DeliverableCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DeliverableCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DeliverableCreateEnvelope",
        "type": "object"
      },
      "DeliverableCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DeliverableCreateAttributes"
          },
          "type": {
            "const": "product_deliverables",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "DeliverableCreateResource",
        "type": "object"
      },
      "DeliverableListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DeliverableResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "DeliverableListResponse",
        "type": "object"
      },
      "DeliverableResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DeliverableAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "product_deliverables",
            "default": "product_deliverables",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "DeliverableResource",
        "type": "object"
      },
      "DeliverableResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DeliverableResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DeliverableResponse",
        "type": "object"
      },
      "DirectMessageCandidateAttributes": {
        "properties": {
          "can_direct_message": {
            "title": "Can Direct Message",
            "type": "boolean"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url"
          }
        },
        "required": [
          "display_name",
          "can_direct_message"
        ],
        "title": "DirectMessageCandidateAttributes",
        "type": "object"
      },
      "DirectMessageCandidateListMeta": {
        "properties": {
          "has_more": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has More"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "title": "DirectMessageCandidateListMeta",
        "type": "object"
      },
      "DirectMessageCandidateListResponse": {
        "description": "DM candidate list response with typed meta (overrides the generic dict meta).",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_DirectMessageCandidateAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DirectMessageCandidateListMeta"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "title": "DirectMessageCandidateListResponse",
        "type": "object"
      },
      "DirectMessageCapabilityAttributes": {
        "properties": {
          "can_direct_message": {
            "title": "Can Direct Message",
            "type": "boolean"
          }
        },
        "required": [
          "can_direct_message"
        ],
        "title": "DirectMessageCapabilityAttributes",
        "type": "object"
      },
      "DirectoryFiltersResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubConfigResource"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/DefinitionResource"
                },
                {
                  "$ref": "#/components/schemas/OptionResource"
                }
              ]
            },
            "title": "Included",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "included",
          "meta"
        ],
        "title": "DirectoryFiltersResponse",
        "type": "object"
      },
      "DiscussionCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "is_published": {
            "default": true,
            "title": "Is Published",
            "type": "boolean"
          },
          "space_id": {
            "title": "Space Id",
            "type": "string"
          },
          "title": {
            "maxLength": 280,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "space_id",
          "title"
        ],
        "title": "DiscussionCreateAttributes",
        "type": "object"
      },
      "DiscussionCreateEnvelope": {
        "description": "JSON:API create envelope: {data: {type, attributes}}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DiscussionCreateResourceData"
          }
        },
        "required": [
          "data"
        ],
        "title": "DiscussionCreateEnvelope",
        "type": "object"
      },
      "DiscussionCreateResourceData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DiscussionCreateAttributes"
          },
          "type": {
            "const": "discussions",
            "default": "discussions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "DiscussionCreateResourceData",
        "type": "object"
      },
      "DiscussionMoveAttributes": {
        "additionalProperties": false,
        "properties": {
          "space_id": {
            "title": "Space Id",
            "type": "string"
          }
        },
        "required": [
          "space_id"
        ],
        "title": "DiscussionMoveAttributes",
        "type": "object"
      },
      "DiscussionMoveData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DiscussionMoveAttributes"
          },
          "type": {
            "const": "discussions",
            "default": "discussions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "DiscussionMoveData",
        "type": "object"
      },
      "DiscussionMoveRequest": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DiscussionMoveData"
          }
        },
        "required": [
          "data"
        ],
        "title": "DiscussionMoveRequest",
        "type": "object"
      },
      "DiscussionPatchAttributes": {
        "description": "Attributes accepted by the admin PATCH endpoint.",
        "properties": {
          "is_broadcast": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Broadcast"
          },
          "is_locked": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Locked"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          }
        },
        "title": "DiscussionPatchAttributes",
        "type": "object"
      },
      "DiscussionPatchEnvelope": {
        "description": "JSON:API PATCH envelope: {data: {type, attributes}}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DiscussionPatchResourceData"
          }
        },
        "required": [
          "data"
        ],
        "title": "DiscussionPatchEnvelope",
        "type": "object"
      },
      "DiscussionPatchResourceData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DiscussionPatchAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "DiscussionPatchResourceData",
        "type": "object"
      },
      "DiscussionReactionAttributes": {
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "discussion_id": {
            "title": "Discussion Id",
            "type": "string"
          },
          "emoji": {
            "title": "Emoji",
            "type": "string"
          }
        },
        "required": [
          "discussion_id",
          "contact_id",
          "emoji"
        ],
        "title": "DiscussionReactionAttributes",
        "type": "object"
      },
      "DiscussionReactionGroupListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DiscussionReactionGroupResource"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "DiscussionReactionGroupListResponse",
        "type": "object"
      },
      "DiscussionReactionGroupResource": {
        "description": "JSON:API resource object for a single discussion reaction aggregate.\n\nShape:\n{\n  \"type\": \"discussion_reaction_groups\",\n  \"id\": \"<discussion_id>:<emoji>\",\n  \"attributes\": { \"emoji\": \"...\", \"count\": 3,\n                  \"reacted_by_me\": true, \"my_reaction_id\": \"...\" }\n}\n\ntype is fixed to \"discussion_reaction_groups\" (snake_case + plural per\napi-contract-consistency.md).  Symmetric with comment_reaction_groups on\nthe comments side.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/app__community__schemas__ReactionGroupAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "discussion_reaction_groups",
            "default": "discussion_reaction_groups",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "DiscussionReactionGroupResource",
        "type": "object"
      },
      "DiscussionResponseAttributes": {
        "properties": {
          "attachments": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RenderableAttachment"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attachments"
          },
          "author_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Contact Id"
          },
          "author_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Display Name"
          },
          "author_membership_status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "banned",
                  "soft_banned",
                  "left"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Membership Status"
          },
          "author_photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Thumbnail Url"
          },
          "author_photo_thumbnail_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Thumbnail Url Expires At"
          },
          "author_photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Url"
          },
          "author_photo_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Url Expires At"
          },
          "author_role": {
            "anyOf": [
              {
                "enum": [
                  "owner",
                  "admin",
                  "moderator",
                  "member"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Role"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "comment_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment Count"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "deleted_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "external_video_embeds": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Video Embeds"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "is_broadcast": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Broadcast"
          },
          "is_locked": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Locked"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "is_published": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Published"
          },
          "last_activity_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Activity At"
          },
          "poll": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PollAttributes"
              },
              {
                "type": "null"
              }
            ]
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "reaction_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reaction Count"
          },
          "reactions": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reactions"
          },
          "report_count": {
            "default": 0,
            "description": "Number of moderation reports on this resource, across ALL statuses (pending, dismissed, actioned). Present ONLY for an active, non-banned hub owner/admin/moderator \u2014 the key is omitted entirely for any other viewer. Clients MUST treat absence as 'not authorized / not supplied', never as zero.",
            "minimum": 0.0,
            "title": "Report Count",
            "type": "integer"
          },
          "reported_by_me": {
            "default": false,
            "description": "True when the requesting member has already filed a report against this resource. Present for any authenticated member; omitted entirely for an anonymous viewer. Clients MUST treat absence as 'unknown', never as false.",
            "title": "Reported By Me",
            "type": "boolean"
          },
          "repost": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RepostBlockAttributes"
              },
              {
                "type": "null"
              }
            ]
          },
          "repost_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Repost Count"
          },
          "scheduled_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled At"
          },
          "space_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Space Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "DiscussionResponseAttributes",
        "type": "object"
      },
      "DiscussionUnpinAttributes": {
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "discussion_id": {
            "title": "Discussion Id",
            "type": "string"
          }
        },
        "required": [
          "discussion_id",
          "contact_id"
        ],
        "title": "DiscussionUnpinAttributes",
        "type": "object"
      },
      "DomainResolutionAttributes": {
        "additionalProperties": false,
        "description": "The single routing fact a reverse proxy needs: which hub owns this host.",
        "properties": {
          "hub_slug": {
            "title": "Hub Slug",
            "type": "string"
          }
        },
        "required": [
          "hub_slug"
        ],
        "title": "DomainResolutionAttributes",
        "type": "object"
      },
      "DraftTreeReadAttributes": {
        "additionalProperties": false,
        "properties": {
          "draft_version": {
            "title": "Draft Version",
            "type": "integer"
          },
          "tree": {
            "additionalProperties": true,
            "title": "Tree",
            "type": "object"
          }
        },
        "required": [
          "draft_version",
          "tree"
        ],
        "title": "DraftTreeReadAttributes",
        "type": "object"
      },
      "DraftTreeResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a page draft tree (write response).",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DraftTreeReadAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "page_draft_trees",
            "default": "page_draft_trees",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "DraftTreeResource",
        "type": "object"
      },
      "DraftTreeResponse": {
        "additionalProperties": false,
        "description": "Top-level JSON:API response envelope for PUT .../pages/{id}/tree.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DraftTreeResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DraftTreeResponse",
        "type": "object"
      },
      "DraftTreeWriteAttributes": {
        "additionalProperties": false,
        "properties": {
          "tree": {
            "additionalProperties": true,
            "title": "Tree",
            "type": "object"
          }
        },
        "required": [
          "tree"
        ],
        "title": "DraftTreeWriteAttributes",
        "type": "object"
      },
      "DraftTreeWriteEnvelope": {
        "additionalProperties": false,
        "description": "Top-level JSON:API envelope for PUT .../pages/{id}/tree.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DraftTreeWriteResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DraftTreeWriteEnvelope",
        "type": "object"
      },
      "DraftTreeWriteResource": {
        "additionalProperties": false,
        "description": "JSON:API resource wrapper for the draft-tree write request.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DraftTreeWriteAttributes"
          },
          "type": {
            "const": "page_draft_trees",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "DraftTreeWriteResource",
        "type": "object"
      },
      "DripCampaignAttributes": {
        "description": "Drip campaign attributes for create/patch requests.\n\nR3-B: allow_reenrollment bool \u2014 false = no re-enrollment once completed;\n      true = allow re-enrollment when completed_at IS NOT NULL.\nR3-H: BYO-effective hubs \u2192 422 byo_drip_unsupported (enforced by service).",
        "properties": {
          "allow_reenrollment": {
            "default": false,
            "title": "Allow Reenrollment",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By"
          },
          "deleted_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enrollment_mode": {
            "anyOf": [
              {
                "enum": [
                  "event",
                  "segment",
                  "both"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enrollment Mode"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "next_segment_check_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Segment Check At"
          },
          "segment_check_interval_minutes": {
            "default": 60,
            "maximum": 2147483647.0,
            "minimum": 60.0,
            "title": "Segment Check Interval Minutes",
            "type": "integer"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "trigger_event_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trigger Event Type"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "DripCampaignAttributes",
        "type": "object"
      },
      "DripCampaignCreateAttributes": {
        "properties": {
          "allow_reenrollment": {
            "default": false,
            "title": "Allow Reenrollment",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By"
          },
          "deleted_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enrollment_mode": {
            "anyOf": [
              {
                "enum": [
                  "event",
                  "segment",
                  "both"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enrollment Mode"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "next_segment_check_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Segment Check At"
          },
          "segment_check_interval_minutes": {
            "default": 60,
            "maximum": 2147483647.0,
            "minimum": 60.0,
            "title": "Segment Check Interval Minutes",
            "type": "integer"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "trigger_event_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trigger Event Type"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "DripCampaignCreateAttributes",
        "type": "object"
      },
      "DripCampaignCreateRequest": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DripCampaignCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DripCampaignCreateRequest",
        "type": "object"
      },
      "DripCampaignCreateResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DripCampaignCreateAttributes"
          },
          "type": {
            "const": "drip_campaigns",
            "default": "drip_campaigns",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "DripCampaignCreateResource",
        "type": "object"
      },
      "DripCampaignOut": {
        "description": "Attributes block for a ``drip_campaigns`` resource object.\n\nMirrors the flat dict returned by DripService.create_campaign /\nget_campaign / update_campaign / activate_campaign / pause_campaign.",
        "properties": {
          "allow_reenrollment": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allow Reenrollment"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By"
          },
          "deleted_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enrollment_mode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enrollment Mode"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "next_segment_check_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Segment Check At"
          },
          "segment_check_interval_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Check Interval Minutes"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          },
          "trigger_event_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trigger Event Type"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "DripCampaignOut",
        "type": "object"
      },
      "DripCampaignPatchRequest": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DripCampaignResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DripCampaignPatchRequest",
        "type": "object"
      },
      "DripCampaignResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DripCampaignAttributes"
          },
          "type": {
            "const": "drip_campaigns",
            "default": "drip_campaigns",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "DripCampaignResource",
        "type": "object"
      },
      "DripEnrollCreateAttributes": {
        "properties": {
          "contact_id": {
            "description": "Contact to manually enroll in this campaign.",
            "title": "Contact Id",
            "type": "string"
          }
        },
        "required": [
          "contact_id"
        ],
        "title": "DripEnrollCreateAttributes",
        "type": "object"
      },
      "DripEnrollCreateRequest": {
        "description": "JSON:API envelope for POST \u2026/drip-campaigns/{id}/enrollments.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DripEnrollCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DripEnrollCreateRequest",
        "type": "object"
      },
      "DripEnrollCreateResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DripEnrollCreateAttributes"
          },
          "type": {
            "const": "drip_enrollments",
            "default": "drip_enrollments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "DripEnrollCreateResource",
        "type": "object"
      },
      "DripEnrollmentOut": {
        "description": "Attributes block for a ``drip_enrollments`` resource object.\n\nMirrors the flat dict returned by DripService enrollment list methods.",
        "properties": {
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "current_step_position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Step Position"
          },
          "enrolled_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enrolled At"
          },
          "exit_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Exit Reason"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "next_send_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Send At"
          },
          "pause_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pause Reason"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "title": "DripEnrollmentOut",
        "type": "object"
      },
      "DripStepAttributes": {
        "properties": {
          "delay_days": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delay Days"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "send_at_absolute": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Send At Absolute"
          },
          "subject_override": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject Override"
          },
          "template_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Id"
          },
          "template_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Ref"
          }
        },
        "title": "DripStepAttributes",
        "type": "object"
      },
      "DripStepCreateRequest": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DripStepResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DripStepCreateRequest",
        "type": "object"
      },
      "DripStepOut": {
        "description": "Attributes block for a ``drip_steps`` resource object.\n\nMirrors the flat dict returned by DripService.create_step /\nupdate_step.",
        "properties": {
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "delay_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delay Days"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "send_at_absolute": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Send At Absolute"
          },
          "subject_override": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject Override"
          },
          "template_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Id"
          },
          "template_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Ref"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "DripStepOut",
        "type": "object"
      },
      "DripStepPatchRequest": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DripStepResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "DripStepPatchRequest",
        "type": "object"
      },
      "DripStepResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DripStepAttributes"
          },
          "type": {
            "const": "drip_steps",
            "default": "drip_steps",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "DripStepResource",
        "type": "object"
      },
      "DryRunBody": {
        "additionalProperties": false,
        "description": "Body for POST /automations/{id}/test \u2014 dry-run executor.",
        "properties": {
          "team_contact_id": {
            "title": "Team Contact Id",
            "type": "string"
          }
        },
        "required": [
          "team_contact_id"
        ],
        "title": "DryRunBody",
        "type": "object"
      },
      "DryRunResponse": {
        "additionalProperties": false,
        "description": "Response envelope for the dry-run endpoint.",
        "properties": {
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          },
          "trace": {
            "items": {
              "$ref": "#/components/schemas/DryRunStepTrace"
            },
            "title": "Trace",
            "type": "array"
          }
        },
        "required": [
          "meta",
          "trace"
        ],
        "title": "DryRunResponse",
        "type": "object"
      },
      "DryRunStepTrace": {
        "additionalProperties": false,
        "description": "One recorded step from a dry-run execution.",
        "properties": {
          "node_id": {
            "title": "Node Id",
            "type": "string"
          },
          "node_type": {
            "title": "Node Type",
            "type": "string"
          },
          "result": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Result"
          },
          "skip_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Skip Reason"
          },
          "skipped": {
            "default": false,
            "title": "Skipped",
            "type": "boolean"
          },
          "would_add_tag": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Would Add Tag"
          },
          "would_enroll_in_sequence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Would Enroll In Sequence"
          },
          "would_fire_webhook": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Would Fire Webhook"
          },
          "would_remove_tag": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Would Remove Tag"
          },
          "would_send_email": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Would Send Email"
          }
        },
        "required": [
          "node_id",
          "node_type"
        ],
        "title": "DryRunStepTrace",
        "type": "object"
      },
      "EditTranscriptBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_EditData"
          }
        },
        "required": [
          "data"
        ],
        "title": "EditTranscriptBody",
        "type": "object"
      },
      "EditWord": {
        "properties": {
          "confidence": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confidence"
          },
          "end_ms": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "End Ms",
            "type": "integer"
          },
          "speaker_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Speaker Label"
          },
          "start_ms": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Start Ms",
            "type": "integer"
          },
          "word": {
            "title": "Word",
            "type": "string"
          }
        },
        "required": [
          "word",
          "start_ms",
          "end_ms"
        ],
        "title": "EditWord",
        "type": "object"
      },
      "EmailConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "email",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/EmailValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "EmailConditionCompiled",
        "type": "object"
      },
      "EmailConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "email",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/EmailValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "EmailConditionIn",
        "type": "object"
      },
      "EmailDeliverabilityAttributes": {
        "additionalProperties": false,
        "properties": {
          "bounce_rate": {
            "title": "Bounce Rate",
            "type": "number"
          },
          "bounced_hard": {
            "title": "Bounced Hard",
            "type": "integer"
          },
          "bounced_soft": {
            "title": "Bounced Soft",
            "type": "integer"
          },
          "complained": {
            "title": "Complained",
            "type": "integer"
          },
          "complaint_rate": {
            "title": "Complaint Rate",
            "type": "number"
          },
          "delivered": {
            "title": "Delivered",
            "type": "integer"
          },
          "sent": {
            "title": "Sent",
            "type": "integer"
          },
          "unsubscribed": {
            "title": "Unsubscribed",
            "type": "integer"
          }
        },
        "required": [
          "sent",
          "delivered",
          "bounced_hard",
          "bounced_soft",
          "complained",
          "unsubscribed",
          "bounce_rate",
          "complaint_rate"
        ],
        "title": "EmailDeliverabilityAttributes",
        "type": "object"
      },
      "EmailDeliverabilityResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/EmailDeliverabilityAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "analytics_email_deliverability",
            "default": "analytics_email_deliverability",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "EmailDeliverabilityResource",
        "type": "object"
      },
      "EmailDeliverabilityResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmailDeliverabilityResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "EmailDeliverabilityResponse",
        "type": "object"
      },
      "EmailValue": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "title": "EmailValue",
        "type": "object"
      },
      "EngagementAttributes": {
        "properties": {
          "active_members": {
            "title": "Active Members",
            "type": "integer"
          },
          "new_members": {
            "title": "New Members",
            "type": "integer"
          },
          "recent_members": {
            "items": {
              "$ref": "#/components/schemas/RecentMember"
            },
            "title": "Recent Members",
            "type": "array"
          },
          "top_content": {
            "items": {
              "$ref": "#/components/schemas/TopContent"
            },
            "title": "Top Content",
            "type": "array"
          },
          "top_members_by_comments": {
            "items": {
              "$ref": "#/components/schemas/TopMember"
            },
            "title": "Top Members By Comments",
            "type": "array"
          },
          "top_members_by_posts": {
            "items": {
              "$ref": "#/components/schemas/TopMember"
            },
            "title": "Top Members By Posts",
            "type": "array"
          },
          "top_posts": {
            "items": {
              "$ref": "#/components/schemas/TopPost"
            },
            "title": "Top Posts",
            "type": "array"
          },
          "top_spaces": {
            "items": {
              "$ref": "#/components/schemas/TopSpaceItem"
            },
            "title": "Top Spaces",
            "type": "array"
          },
          "total_active_members": {
            "title": "Total Active Members",
            "type": "integer"
          }
        },
        "required": [
          "total_active_members",
          "new_members",
          "active_members"
        ],
        "title": "EngagementAttributes",
        "type": "object"
      },
      "EngagementResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/EngagementAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "analytics_engagement",
            "default": "analytics_engagement",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "EngagementResource",
        "type": "object"
      },
      "EngagementResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EngagementResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "EngagementResponse",
        "type": "object"
      },
      "EnrollInSequenceNode": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/EnrollInSequenceNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "enroll_in_sequence",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "config"
        ],
        "title": "EnrollInSequenceNode",
        "type": "object"
      },
      "EnrollInSequenceNodeConfig": {
        "additionalProperties": false,
        "description": "Config for an ``enroll_in_sequence`` node.\n\nThis node type is **terminal** (design \u00a7locked-decision-3): upon\nexecution the enrollment is marked ``completed`` with\n``exit_reason='handed_off_to_sequence'``.",
        "properties": {
          "drip_campaign_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Drip Campaign Id",
            "type": "string"
          }
        },
        "required": [
          "drip_campaign_id"
        ],
        "title": "EnrollInSequenceNodeConfig",
        "type": "object"
      },
      "EventRsvpAttributes": {
        "additionalProperties": false,
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "event_id": {
            "title": "Event Id",
            "type": "string"
          },
          "status": {
            "enum": [
              "going",
              "not_going"
            ],
            "title": "Status",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "event_id",
          "contact_id",
          "team_id",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "EventRsvpAttributes",
        "type": "object"
      },
      "EventRsvpListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/EventRsvpResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "EventRsvpListResponse",
        "type": "object"
      },
      "EventRsvpResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/EventRsvpAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "event_rsvps",
            "default": "event_rsvps",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "EventRsvpResource",
        "type": "object"
      },
      "EventRsvpResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EventRsvpResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "EventRsvpResponse",
        "type": "object"
      },
      "EventRsvpWriteAttributes": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "enum": [
              "going",
              "not_going"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "title": "EventRsvpWriteAttributes",
        "type": "object"
      },
      "EventRsvpWriteEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EventRsvpWriteResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "EventRsvpWriteEnvelope",
        "type": "object"
      },
      "EventRsvpWriteResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/EventRsvpWriteAttributes"
          },
          "type": {
            "const": "event_rsvps",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "EventRsvpWriteResource",
        "type": "object"
      },
      "ExitNode": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/ExitNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "exit",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id"
        ],
        "title": "ExitNode",
        "type": "object"
      },
      "ExitNodeConfig": {
        "additionalProperties": false,
        "description": "Config for an explicit ``exit`` node.\n\n``reason`` is a short machine label stored in ``exit_reason``.",
        "properties": {
          "reason": {
            "default": "explicit_exit",
            "maxLength": 100,
            "title": "Reason",
            "type": "string"
          }
        },
        "title": "ExitNodeConfig",
        "type": "object"
      },
      "ExternalProviderAttributes": {
        "description": "Read attributes for an ``external_login_providers`` resource.\n\nUsed in all read responses (list, retrieve, create-201, patch-200).\n\nDeliberately EXCLUDES:\n  - ``client_secret``              \u2014 write-only, never returned\n  - ``client_secret_ciphertext``   \u2014 raw DB column, never serialised\n  - ``client_secret_key_id``       \u2014 raw DB column, never serialised\n\nIncludes:\n  - ``client_secret_set: bool``  \u2014 True when a ciphertext is stored\n  - ``callback_url: str``        \u2014 computed from settings at read time",
        "properties": {
          "authorize_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Authorize Url"
          },
          "callback_url": {
            "title": "Callback Url",
            "type": "string"
          },
          "claim_map": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Claim Map"
          },
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret_set": {
            "title": "Client Secret Set",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "discovery_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discovery Url"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "issuer": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Issuer"
          },
          "jwks_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jwks Uri"
          },
          "provider_kind": {
            "title": "Provider Kind",
            "type": "string"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "token_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Token Url"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "userinfo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Userinfo Url"
          }
        },
        "required": [
          "provider_kind",
          "slug",
          "display_name",
          "client_id",
          "enabled",
          "client_secret_set",
          "callback_url",
          "hub_id",
          "team_id"
        ],
        "title": "ExternalProviderAttributes",
        "type": "object"
      },
      "ExternalProviderCreate": {
        "additionalProperties": false,
        "description": "Request body for registering a new external-login provider.\n\nAccepts EITHER a flat body OR a full JSON:API envelope.\n\n``extra=\"forbid\"`` makes the endpoint reject unknown fields (e.g. a\nsmuggled ``client_secret_ciphertext``) with 422 rather than silently\nignoring them.  The before-validator strips the JSON:API envelope so\n``data`` / ``type`` wrapper keys never reach the forbid check.\n\n``client_secret`` is required on create and write-only \u2014 it is never\nreturned in read responses.",
        "properties": {
          "authorize_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Authorize Url"
          },
          "claim_map": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Claim Map"
          },
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string",
            "writeOnly": true
          },
          "discovery_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discovery Url"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "issuer": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Issuer"
          },
          "jwks_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jwks Uri"
          },
          "provider_kind": {
            "title": "Provider Kind",
            "type": "string"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "token_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Token Url"
          },
          "userinfo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Userinfo Url"
          }
        },
        "required": [
          "provider_kind",
          "display_name",
          "client_id",
          "client_secret"
        ],
        "title": "ExternalProviderCreate",
        "type": "object"
      },
      "ExternalProviderUpdate": {
        "additionalProperties": false,
        "description": "Request body for patching an external-login provider.\n\nAll fields are optional.  Use ``model.model_dump(exclude_unset=True)``\nin the service/router to apply only the supplied changes.\n\n``client_secret`` is write-only and optional on update \u2014 omit to leave\nthe stored ciphertext unchanged; supply a new value to rotate the secret.",
        "properties": {
          "authorize_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Authorize Url"
          },
          "claim_map": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Claim Map"
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Secret",
            "writeOnly": true
          },
          "discovery_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discovery Url"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "issuer": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Issuer"
          },
          "jwks_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jwks Uri"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "token_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Token Url"
          },
          "userinfo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Userinfo Url"
          }
        },
        "title": "ExternalProviderUpdate",
        "type": "object"
      },
      "ExternalVideoEmbedAttributes": {
        "additionalProperties": false,
        "properties": {
          "canonical_url": {
            "title": "Canonical Url",
            "type": "string"
          },
          "embed_url": {
            "title": "Embed Url",
            "type": "string"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          },
          "original_url": {
            "title": "Original Url",
            "type": "string"
          },
          "provider": {
            "title": "Provider",
            "type": "string"
          },
          "provider_resource_id": {
            "title": "Provider Resource Id",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          }
        },
        "required": [
          "provider",
          "original_url",
          "canonical_url",
          "provider_resource_id",
          "embed_url",
          "title",
          "thumbnail_url",
          "width",
          "height",
          "status"
        ],
        "title": "ExternalVideoEmbedAttributes",
        "type": "object"
      },
      "ExternalVideoEmbedResolveAttributes": {
        "additionalProperties": false,
        "properties": {
          "attachment_context": {
            "title": "Attachment Context",
            "type": "string"
          },
          "context_target_id": {
            "title": "Context Target Id",
            "type": "string"
          },
          "context_target_type": {
            "title": "Context Target Type",
            "type": "string"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "url": {
            "maxLength": 2048,
            "minLength": 1,
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url",
          "attachment_context",
          "context_target_type",
          "context_target_id"
        ],
        "title": "ExternalVideoEmbedResolveAttributes",
        "type": "object"
      },
      "ExternalVideoEmbedResolveEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_ResolveData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ExternalVideoEmbedResolveEnvelope",
        "type": "object"
      },
      "FeatureSectionSettings": {
        "additionalProperties": false,
        "description": "Settings for a 'feature' section.\n\nbody is plain text (no HTML). icon is omitted if it does not match\n^[a-z0-9\\-]+$ (named icon identifier pattern).",
        "properties": {
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          }
        },
        "title": "FeatureSectionSettings",
        "type": "object"
      },
      "FeedEventAttributes": {
        "properties": {
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "occurred_at": {
            "title": "Occurred At",
            "type": "string"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "source_id": {
            "title": "Source Id",
            "type": "string"
          },
          "source_type": {
            "title": "Source Type",
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/FeedSubject"
          },
          "summary": {
            "title": "Summary",
            "type": "string"
          },
          "verb": {
            "title": "Verb",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "verb",
          "occurred_at",
          "summary",
          "source_type",
          "source_id",
          "parent_comment_id",
          "subject"
        ],
        "title": "FeedEventAttributes",
        "type": "object"
      },
      "FeedSubject": {
        "properties": {
          "discussion_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussion Id"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "mentioned_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mentioned Contact Id"
          },
          "query": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Query"
          },
          "space_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Space Id"
          },
          "space_slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Space Slug"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "type": {
            "default": "discussion",
            "enum": [
              "discussion",
              "comment",
              "reply",
              "content_node",
              "hub_membership",
              "contact"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "FeedSubject",
        "type": "object"
      },
      "FileAttributes": {
        "description": "Serialisable attributes of a File resource (no id/type inside attributes).",
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "durable_variants": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Durable Variants",
            "type": "object"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Media duration in seconds (from Media.duration_seconds). Null for non-temporal assets or when not yet known.",
            "title": "Duration Seconds"
          },
          "folder_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Folder Id"
          },
          "media_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Id"
          },
          "mime_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mime Type"
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size Bytes"
          },
          "status_transcode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Transcode"
          },
          "status_transcribe": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Transcribe"
          },
          "status_upload": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Upload"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "variants": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Signed imgproxy URLs for image variants. Empty for non-image files.",
            "title": "Variants",
            "type": "object"
          },
          "variants_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC datetime when the signed image variant URLs expire. Null when variants is empty.",
            "title": "Variants Expires At"
          },
          "visibility": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Visibility"
          }
        },
        "required": [
          "title"
        ],
        "title": "FileAttributes",
        "type": "object"
      },
      "FileCardAttributes": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "start": {
            "title": "Start",
            "type": "integer"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          }
        },
        "required": [
          "label",
          "start",
          "position",
          "created_at",
          "updated_at"
        ],
        "title": "FileCardAttributes",
        "type": "object"
      },
      "FileCardInput": {
        "additionalProperties": false,
        "description": "One card in a full-list replace request.",
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "label": {
            "maxLength": 160,
            "minLength": 1,
            "title": "Label",
            "type": "string"
          },
          "start": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Start",
            "type": "integer"
          },
          "url": {
            "anyOf": [
              {
                "maxLength": 2048,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          }
        },
        "required": [
          "label",
          "start"
        ],
        "title": "FileCardInput",
        "type": "object"
      },
      "FileCardListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_FileCardAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileCardListResponse",
        "type": "object"
      },
      "FileCardWire": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "start": {
            "title": "Start",
            "type": "integer"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          }
        },
        "required": [
          "id",
          "label",
          "start"
        ],
        "title": "FileCardWire",
        "type": "object"
      },
      "FileCardsWriteAttributes": {
        "additionalProperties": false,
        "properties": {
          "cards": {
            "items": {
              "$ref": "#/components/schemas/FileCardInput"
            },
            "title": "Cards",
            "type": "array"
          }
        },
        "title": "FileCardsWriteAttributes",
        "type": "object"
      },
      "FileCardsWriteData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileCardsWriteAttributes"
          },
          "type": {
            "const": "file_cards",
            "default": "file_cards",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "FileCardsWriteData",
        "type": "object"
      },
      "FileCardsWriteRequest": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileCardsWriteData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileCardsWriteRequest",
        "type": "object"
      },
      "FileChapterAttributes": {
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "end": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "End"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "source": {
            "enum": [
              "authored",
              "auto"
            ],
            "title": "Source",
            "type": "string"
          },
          "start": {
            "title": "Start",
            "type": "integer"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "title",
          "start",
          "position",
          "source"
        ],
        "title": "FileChapterAttributes",
        "type": "object"
      },
      "FileChapterInput": {
        "additionalProperties": false,
        "description": "One chapter in a full-list replace request.",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "start": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Start",
            "type": "integer"
          },
          "title": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "start"
        ],
        "title": "FileChapterInput",
        "type": "object"
      },
      "FileChapterListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_FileChapterAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileChapterListResponse",
        "type": "object"
      },
      "FileChaptersWriteAttributes": {
        "additionalProperties": false,
        "properties": {
          "chapters": {
            "items": {
              "$ref": "#/components/schemas/FileChapterInput"
            },
            "title": "Chapters",
            "type": "array"
          }
        },
        "title": "FileChaptersWriteAttributes",
        "type": "object"
      },
      "FileChaptersWriteData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileChaptersWriteAttributes"
          },
          "type": {
            "const": "file_chapters",
            "default": "file_chapters",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "FileChaptersWriteData",
        "type": "object"
      },
      "FileChaptersWriteRequest": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileChaptersWriteData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileChaptersWriteRequest",
        "type": "object"
      },
      "FileCreateAttributes": {
        "properties": {
          "mime_type": {
            "description": "MIME type of the file.",
            "maxLength": 128,
            "minLength": 1,
            "title": "Mime Type",
            "type": "string"
          },
          "size_bytes": {
            "description": "File size in bytes.",
            "exclusiveMinimum": 0.0,
            "title": "Size Bytes",
            "type": "integer"
          },
          "title": {
            "description": "Human-readable file name.",
            "maxLength": 512,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "mime_type",
          "size_bytes"
        ],
        "title": "FileCreateAttributes",
        "type": "object"
      },
      "FileCreateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileCreateAttributes"
          },
          "type": {
            "const": "files",
            "default": "files",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "FileCreateData",
        "type": "object"
      },
      "FileCreateRequest": {
        "description": "Request body for POST /api/teams/{team_id}/files.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileCreateRequest",
        "type": "object"
      },
      "FileDownloadPayload": {
        "description": "Single-resource JSON:API response for GET .../files/{id}/download/{variant}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileDownloadResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileDownloadPayload",
        "type": "object"
      },
      "FileDownloadPayloadAttributes": {
        "description": "Attributes of a file-download resource.\n\ndownload_url: CloudFront canned-policy signed URL for the requested variant.\n    Clients must use this URL before expires_at and refresh by re-calling the endpoint.\nfilename:    Sanitized filename for use in Content-Disposition / download UX.\nexpires_at:  UTC datetime when download_url expires (echo for clients).",
        "properties": {
          "download_url": {
            "title": "Download Url",
            "type": "string"
          },
          "expires_at": {
            "description": "UTC datetime when download_url expires.",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "filename": {
            "title": "Filename",
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "filename",
          "expires_at"
        ],
        "title": "FileDownloadPayloadAttributes",
        "type": "object"
      },
      "FileDownloadResource": {
        "description": "JSON:API resource object for a file-download response.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileDownloadPayloadAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "FileDownloadResource",
        "type": "object"
      },
      "FileListResponse": {
        "description": "Collection JSON:API response wrapping a list of FileResources.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_FileAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileListResponse",
        "type": "object"
      },
      "FileMediaMeta": {
        "properties": {
          "playback": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlaybackVideo"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "FileMediaMeta",
        "type": "object"
      },
      "FileMediaPayload": {
        "description": "Single-resource JSON:API response for GET /file/{file_id}/media.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileMediaResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileMediaPayload",
        "type": "object"
      },
      "FileMediaPayloadAttributes": {
        "description": "Attributes of a media-playback resource.\n\nplayback_url: CloudFront canned-policy signed URL. Clients must use this\n    before expires_at and refresh by re-calling the endpoint. Null when\n    the underlying file is byte-less (e.g. a synthetic/placeholder\n    document with no S3 object) \u2014 no URL is signed in that case, but the\n    payload is still returned with its other metadata.\nexpires_at:   UTC datetime when playback_url expires (echo for clients).\n              Null whenever playback_url is null.\nvariants:     Signed imgproxy URLs keyed by preset name (e.g. \"thumbnail-160\").\n              Populated only for image files; empty dict for audio, video, PDF, etc.\nvariants_expires_at:\n              UTC datetime when the signed imgproxy variant URLs expire.\n              Null when variants is empty.\n\nNote: media_id is intentionally omitted \u2014 it is an internal UUID that\nclients do not need (the asset is already identified by File.id in\n``data.id``). Exposing it would leak internal row IDs to anonymous callers.",
        "properties": {
          "cards": {
            "items": {
              "$ref": "#/components/schemas/FileCardWire"
            },
            "title": "Cards",
            "type": "array"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC datetime when playback_url expires. Null whenever playback_url is null (byte-less/synthetic document with no S3 object to sign). Always present; may be null.",
            "title": "Expires At"
          },
          "mime_type": {
            "title": "Mime Type",
            "type": "string"
          },
          "playback_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "CloudFront-signed playback URL. Null when the underlying file is byte-less (e.g. a synthetic/placeholder document with no S3 object) \u2014 no URL is signed in that case, but the payload is still returned with its other metadata. Always present; may be null.",
            "title": "Playback Url"
          },
          "variants": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Signed imgproxy URLs for image variants. Empty for non-image files.",
            "title": "Variants",
            "type": "object"
          },
          "variants_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC datetime when the signed image variant URLs expire. Null when variants is empty.",
            "title": "Variants Expires At"
          }
        },
        "required": [
          "mime_type",
          "playback_url",
          "expires_at"
        ],
        "title": "FileMediaPayloadAttributes",
        "type": "object"
      },
      "FileMediaResource": {
        "description": "JSON:API resource object for a media-playback response.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileMediaPayloadAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FileMediaMeta"
              },
              {
                "type": "null"
              }
            ]
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "FileMediaResource",
        "type": "object"
      },
      "FileReplacementAttributes": {
        "properties": {
          "file_id": {
            "title": "File Id",
            "type": "string"
          },
          "mime_type": {
            "title": "Mime Type",
            "type": "string"
          },
          "original_filename": {
            "title": "Original Filename",
            "type": "string"
          },
          "size_bytes": {
            "title": "Size Bytes",
            "type": "integer"
          },
          "status_upload": {
            "title": "Status Upload",
            "type": "string"
          }
        },
        "required": [
          "file_id",
          "status_upload",
          "original_filename",
          "mime_type",
          "size_bytes"
        ],
        "title": "FileReplacementAttributes",
        "type": "object"
      },
      "FileReplacementInitAttributes": {
        "properties": {
          "enable_diarization": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Per-upload speaker diarization override. Null inherits team settings.",
            "title": "Enable Diarization"
          },
          "mime_type": {
            "description": "Replacement MIME type.",
            "maxLength": 128,
            "minLength": 1,
            "title": "Mime Type",
            "type": "string"
          },
          "original_filename": {
            "description": "Replacement file name.",
            "maxLength": 512,
            "minLength": 1,
            "title": "Original Filename",
            "type": "string"
          },
          "size_bytes": {
            "description": "Declared replacement file size in bytes.",
            "exclusiveMinimum": 0.0,
            "title": "Size Bytes",
            "type": "integer"
          },
          "skip_transcription": {
            "default": false,
            "description": "When true, suppresses transcription for this replacement upload.",
            "title": "Skip Transcription",
            "type": "boolean"
          },
          "transcription_language": {
            "anyOf": [
              {
                "maxLength": 10,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional transcription language hint.",
            "title": "Transcription Language"
          }
        },
        "required": [
          "original_filename",
          "mime_type",
          "size_bytes"
        ],
        "title": "FileReplacementInitAttributes",
        "type": "object"
      },
      "FileReplacementInitData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileReplacementInitAttributes"
          },
          "type": {
            "const": "file_replacements",
            "default": "file_replacements",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "FileReplacementInitData",
        "type": "object"
      },
      "FileReplacementInitRequest": {
        "description": "Request body for POST /api/teams/{team_id}/files/{id}/replace.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileReplacementInitData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileReplacementInitRequest",
        "type": "object"
      },
      "FileReplacementResponse": {
        "description": "Single-resource JSON:API response wrapping a file replacement.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_FileReplacementAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileReplacementResponse",
        "type": "object"
      },
      "FileReportAttributes": {
        "properties": {
          "notes": {
            "anyOf": [
              {
                "maxLength": 1000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "reason_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason Id"
          },
          "reason_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason Ids"
          },
          "reportable_id": {
            "title": "Reportable Id",
            "type": "string"
          },
          "reportable_type": {
            "title": "Reportable Type",
            "type": "string"
          }
        },
        "required": [
          "reportable_type",
          "reportable_id"
        ],
        "title": "FileReportAttributes",
        "type": "object"
      },
      "FileReportBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileReportData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileReportBody",
        "type": "object"
      },
      "FileReportData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileReportAttributes"
          },
          "type": {
            "const": "moderation_reports",
            "default": "moderation_reports",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "FileReportData",
        "type": "object"
      },
      "FileResponse": {
        "description": "Single-resource JSON:API response wrapping a FileResource.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_FileAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileResponse",
        "type": "object"
      },
      "FileUpdateAttributes": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional description.",
            "title": "Description"
          },
          "folder_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Folder to place the file in, or null to move to root.",
            "title": "Folder Id"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 512,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Human-readable file name.",
            "title": "Title"
          },
          "visibility": {
            "anyOf": [
              {
                "enum": [
                  "private",
                  "public",
                  "unlisted"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Visibility of the media asset.",
            "title": "Visibility"
          }
        },
        "title": "FileUpdateAttributes",
        "type": "object"
      },
      "FileUpdateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileUpdateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "files",
            "default": "files",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "FileUpdateData",
        "type": "object"
      },
      "FileUpdateRequest": {
        "description": "Request body for PATCH /api/teams/{team_id}/files/{id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FileUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FileUpdateRequest",
        "type": "object"
      },
      "FirstNameConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "first_name",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/FirstNameValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "FirstNameConditionCompiled",
        "type": "object"
      },
      "FirstNameConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "first_name",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/FirstNameValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "FirstNameConditionIn",
        "type": "object"
      },
      "FirstNameValue": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "title": "FirstNameValue",
        "type": "object"
      },
      "FolderAttributes": {
        "description": "Serialisable attributes of a Folder resource (no id/type inside attributes).\n\nread-shape (P2 retro #1): enumerate all response fields explicitly.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "path_array": {
            "items": {
              "type": "string"
            },
            "title": "Path Array",
            "type": "array"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "name",
          "path_array",
          "created_at",
          "updated_at"
        ],
        "title": "FolderAttributes",
        "type": "object"
      },
      "FolderCreateAttributes": {
        "properties": {
          "name": {
            "description": "Folder name.",
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Parent folder ID, or null for root.",
            "title": "Parent Id"
          }
        },
        "required": [
          "name"
        ],
        "title": "FolderCreateAttributes",
        "type": "object"
      },
      "FolderCreateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FolderCreateAttributes"
          },
          "type": {
            "const": "folders",
            "default": "folders",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "FolderCreateData",
        "type": "object"
      },
      "FolderCreateRequest": {
        "description": "Request body for POST /api/teams/{team_id}/folders.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FolderCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FolderCreateRequest",
        "type": "object"
      },
      "FolderMoveAttributes": {
        "properties": {
          "new_parent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Target parent folder ID, or null to move to root.",
            "title": "New Parent Id"
          }
        },
        "required": [
          "new_parent_id"
        ],
        "title": "FolderMoveAttributes",
        "type": "object"
      },
      "FolderMoveData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FolderMoveAttributes"
          },
          "type": {
            "const": "folders",
            "default": "folders",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "FolderMoveData",
        "type": "object"
      },
      "FolderMoveRequest": {
        "description": "Request body for POST /api/teams/{team_id}/folders/{id}/move.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FolderMoveData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FolderMoveRequest",
        "type": "object"
      },
      "FolderResponse": {
        "description": "Single-resource JSON:API response wrapping a FolderResource.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_FolderAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "FolderResponse",
        "type": "object"
      },
      "FolderUpdateAttributes": {
        "description": "Rename only \u2014 parent_id cannot be changed via PATCH (use /move instead).",
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New folder name.",
            "title": "Name"
          }
        },
        "title": "FolderUpdateAttributes",
        "type": "object"
      },
      "FolderUpdateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FolderUpdateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "folders",
            "default": "folders",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "FolderUpdateData",
        "type": "object"
      },
      "FolderUpdateRequest": {
        "description": "Request body for PATCH /api/teams/{team_id}/folders/{id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FolderUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "FolderUpdateRequest",
        "type": "object"
      },
      "FollowListMeta": {
        "description": "build_page_meta()'s page block plus viewer-relative follow counts.",
        "properties": {
          "follower_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Follower Count"
          },
          "following_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Following Count"
          },
          "page": {
            "$ref": "#/components/schemas/FollowListPageMeta"
          }
        },
        "required": [
          "page"
        ],
        "title": "FollowListMeta",
        "type": "object"
      },
      "FollowListPageMeta": {
        "description": "Mirrors build_page_meta()'s meta[\"page\"] block exactly.",
        "properties": {
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "size": {
            "title": "Size",
            "type": "integer"
          }
        },
        "required": [
          "size",
          "has_more"
        ],
        "title": "FollowListPageMeta",
        "type": "object"
      },
      "FollowMemberListResponse": {
        "description": "Followers/following list response \u2014 member cards + follow-count meta.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_MemberDirectoryAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FollowListMeta"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "title": "FollowMemberListResponse",
        "type": "object"
      },
      "ForgotPasswordAttributes": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "redirect_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Redirect Url"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "team_id": {
            "anyOf": [
              {
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "required": [
          "email"
        ],
        "title": "ForgotPasswordAttributes",
        "type": "object"
      },
      "ForgotPasswordEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ForgotPasswordResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ForgotPasswordEnvelope",
        "type": "object"
      },
      "ForgotPasswordResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ForgotPasswordAttributes"
          },
          "type": {
            "const": "magic_link_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ForgotPasswordResource",
        "type": "object"
      },
      "GlobalSearchListResponse": {
        "description": "JSON:API list response for global search with typed meta.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_GlobalSearchResultAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "$ref": "#/components/schemas/GlobalSearchMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "GlobalSearchListResponse",
        "type": "object"
      },
      "GlobalSearchMeta": {
        "properties": {
          "cap": {
            "title": "Cap",
            "type": "integer"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "included_sources": {
            "items": {
              "type": "string"
            },
            "title": "Included Sources",
            "type": "array"
          },
          "is_capped": {
            "title": "Is Capped",
            "type": "boolean"
          },
          "pagination": {
            "const": "top_n",
            "title": "Pagination",
            "type": "string"
          },
          "query": {
            "title": "Query",
            "type": "string"
          }
        },
        "required": [
          "query",
          "has_more",
          "is_capped",
          "cap",
          "pagination",
          "included_sources"
        ],
        "title": "GlobalSearchMeta",
        "type": "object"
      },
      "GlobalSearchResultAttributes": {
        "description": "JSON:API attributes for a `global_search_results` resource.",
        "properties": {
          "body_excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body Excerpt"
          },
          "end_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Seconds"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "native_id": {
            "title": "Native Id",
            "type": "string"
          },
          "rank_source": {
            "anyOf": [
              {
                "enum": [
                  "media",
                  "community",
                  "members"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rank Source"
          },
          "result_kind": {
            "enum": [
              "media",
              "discussion",
              "comment",
              "member"
            ],
            "title": "Result Kind",
            "type": "string"
          },
          "rrf_score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rrf Score"
          },
          "snippet": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Snippet"
          },
          "source_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Type"
          },
          "start_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Seconds"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "result_kind",
          "hub_id",
          "native_id"
        ],
        "title": "GlobalSearchResultAttributes",
        "type": "object"
      },
      "GroupCompiled": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "items": {
              "discriminator": {
                "mapping": {
                  "attribute_boolean": "#/components/schemas/AttributeBooleanConditionCompiled",
                  "attribute_date": "#/components/schemas/AttributeDateConditionCompiled",
                  "attribute_multiple": "#/components/schemas/AttributeMultipleConditionCompiled",
                  "attribute_number": "#/components/schemas/AttributeNumberConditionCompiled",
                  "attribute_single": "#/components/schemas/AttributeSingleConditionCompiled",
                  "attribute_text": "#/components/schemas/AttributeTextConditionCompiled",
                  "belongs_to_hub": "#/components/schemas/BelongsToHubConditionCompiled",
                  "billing_status": "#/components/schemas/BillingStatusConditionCompiled",
                  "city": "#/components/schemas/CityConditionCompiled",
                  "country": "#/components/schemas/CountryConditionCompiled",
                  "date_registered": "#/components/schemas/DateRegisteredConditionCompiled",
                  "email": "#/components/schemas/EmailConditionCompiled",
                  "first_name": "#/components/schemas/FirstNameConditionCompiled",
                  "has_plan": "#/components/schemas/HasPlanConditionCompiled",
                  "has_product": "#/components/schemas/HasProductConditionCompiled",
                  "has_tag": "#/components/schemas/HasTagConditionCompiled",
                  "hub_audience_registration": "#/components/schemas/HubAudienceRegistrationConditionCompiled",
                  "hub_file_activity": "#/components/schemas/HubFileActivityConditionCompiled",
                  "hub_number_of_searches": "#/components/schemas/HubNumberOfSearchesConditionCompiled",
                  "hub_playlist_activity": "#/components/schemas/HubPlaylistActivityConditionCompiled",
                  "hub_time_since_joining": "#/components/schemas/HubTimeSinceJoiningConditionCompiled",
                  "hub_unique_logins": "#/components/schemas/HubUniqueLoginsConditionCompiled",
                  "last_name": "#/components/schemas/LastNameConditionCompiled",
                  "state": "#/components/schemas/StateConditionCompiled"
                },
                "propertyName": "type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/EmailConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/FirstNameConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/LastNameConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/CityConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/StateConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/CountryConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/DateRegisteredConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/BillingStatusConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HasProductConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HasPlanConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/BelongsToHubConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HasTagConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HubFileActivityConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HubPlaylistActivityConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HubUniqueLoginsConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HubNumberOfSearchesConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HubTimeSinceJoiningConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/HubAudienceRegistrationConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/AttributeTextConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/AttributeNumberConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/AttributeBooleanConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/AttributeDateConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/AttributeMultipleConditionCompiled"
                },
                {
                  "$ref": "#/components/schemas/AttributeSingleConditionCompiled"
                }
              ]
            },
            "maxItems": 50,
            "minItems": 1,
            "title": "Conditions",
            "type": "array"
          },
          "logic": {
            "const": "AND",
            "title": "Logic",
            "type": "string"
          }
        },
        "required": [
          "logic",
          "conditions"
        ],
        "title": "GroupCompiled",
        "type": "object"
      },
      "GroupIn": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "items": {
              "discriminator": {
                "mapping": {
                  "attribute_boolean": "#/components/schemas/AttributeBooleanConditionIn",
                  "attribute_date": "#/components/schemas/AttributeDateConditionIn",
                  "attribute_multiple": "#/components/schemas/AttributeMultipleConditionIn",
                  "attribute_number": "#/components/schemas/AttributeNumberConditionIn",
                  "attribute_single": "#/components/schemas/AttributeSingleConditionIn",
                  "attribute_text": "#/components/schemas/AttributeTextConditionIn",
                  "belongs_to_hub": "#/components/schemas/BelongsToHubConditionIn",
                  "billing_status": "#/components/schemas/BillingStatusConditionIn",
                  "city": "#/components/schemas/CityConditionIn",
                  "country": "#/components/schemas/CountryConditionIn",
                  "date_registered": "#/components/schemas/DateRegisteredConditionIn",
                  "email": "#/components/schemas/EmailConditionIn",
                  "first_name": "#/components/schemas/FirstNameConditionIn",
                  "has_plan": "#/components/schemas/HasPlanConditionIn",
                  "has_product": "#/components/schemas/HasProductConditionIn",
                  "has_tag": "#/components/schemas/HasTagConditionIn",
                  "hub_audience_registration": "#/components/schemas/HubAudienceRegistrationConditionIn",
                  "hub_file_activity": "#/components/schemas/HubFileActivityConditionIn",
                  "hub_number_of_searches": "#/components/schemas/HubNumberOfSearchesConditionIn",
                  "hub_playlist_activity": "#/components/schemas/HubPlaylistActivityConditionIn",
                  "hub_time_since_joining": "#/components/schemas/HubTimeSinceJoiningConditionIn",
                  "hub_unique_logins": "#/components/schemas/HubUniqueLoginsConditionIn",
                  "last_name": "#/components/schemas/LastNameConditionIn",
                  "state": "#/components/schemas/StateConditionIn"
                },
                "propertyName": "type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/EmailConditionIn"
                },
                {
                  "$ref": "#/components/schemas/FirstNameConditionIn"
                },
                {
                  "$ref": "#/components/schemas/LastNameConditionIn"
                },
                {
                  "$ref": "#/components/schemas/CityConditionIn"
                },
                {
                  "$ref": "#/components/schemas/StateConditionIn"
                },
                {
                  "$ref": "#/components/schemas/CountryConditionIn"
                },
                {
                  "$ref": "#/components/schemas/DateRegisteredConditionIn"
                },
                {
                  "$ref": "#/components/schemas/BillingStatusConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HasProductConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HasPlanConditionIn"
                },
                {
                  "$ref": "#/components/schemas/BelongsToHubConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HasTagConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HubFileActivityConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HubPlaylistActivityConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HubUniqueLoginsConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HubNumberOfSearchesConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HubTimeSinceJoiningConditionIn"
                },
                {
                  "$ref": "#/components/schemas/HubAudienceRegistrationConditionIn"
                },
                {
                  "$ref": "#/components/schemas/AttributeTextConditionIn"
                },
                {
                  "$ref": "#/components/schemas/AttributeNumberConditionIn"
                },
                {
                  "$ref": "#/components/schemas/AttributeBooleanConditionIn"
                },
                {
                  "$ref": "#/components/schemas/AttributeDateConditionIn"
                },
                {
                  "$ref": "#/components/schemas/AttributeMultipleConditionIn"
                },
                {
                  "$ref": "#/components/schemas/AttributeSingleConditionIn"
                }
              ]
            },
            "maxItems": 50,
            "minItems": 1,
            "title": "Conditions",
            "type": "array"
          },
          "logic": {
            "const": "AND",
            "title": "Logic",
            "type": "string"
          }
        },
        "required": [
          "logic",
          "conditions"
        ],
        "title": "GroupIn",
        "type": "object"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "HasPlanConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "has_plan",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HasPlanValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HasPlanConditionCompiled",
        "type": "object"
      },
      "HasPlanConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "has_plan",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HasPlanValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HasPlanConditionIn",
        "type": "object"
      },
      "HasPlanValue": {
        "additionalProperties": false,
        "description": "``has_plan`` value \u2014 UUID-pinned on both write and compiled sides.\n\nMIO equates \"plan\" with Stripe-style price, so the admin sends a\n``price_id`` UUID. Like ``HasProductValue`` this collapses the In and\nCompiled shapes into a single model (plan \u00a717.1 Option 2). Team\nownership is enforced transitively via the parent product.",
        "properties": {
          "price_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Price Id",
            "type": "string"
          }
        },
        "required": [
          "price_id"
        ],
        "title": "HasPlanValue",
        "type": "object"
      },
      "HasProductConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "has_product",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HasProductValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HasProductConditionCompiled",
        "type": "object"
      },
      "HasProductConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "has_product",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HasProductValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HasProductConditionIn",
        "type": "object"
      },
      "HasProductValue": {
        "additionalProperties": false,
        "properties": {
          "product_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Product Id",
            "type": "string"
          }
        },
        "required": [
          "product_id"
        ],
        "title": "HasProductValue",
        "type": "object"
      },
      "HasTagConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "has_tag",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HasTagValueCompiled"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HasTagConditionCompiled",
        "type": "object"
      },
      "HasTagConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "has_tag",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HasTagValueIn"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HasTagConditionIn",
        "type": "object"
      },
      "HasTagValueCompiled": {
        "additionalProperties": false,
        "description": "``has_tag`` compiled shape \u2014 single ID or list of IDs.",
        "properties": {
          "tag_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Id"
          },
          "tag_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 100,
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Ids"
          }
        },
        "title": "HasTagValueCompiled",
        "type": "object"
      },
      "HasTagValueIn": {
        "additionalProperties": false,
        "description": "``has_tag`` write shape \u2014 single slug or list (any-of).",
        "properties": {
          "tag_slug": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Slug"
          },
          "tag_slugs": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 100,
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Slugs"
          }
        },
        "title": "HasTagValueIn",
        "type": "object"
      },
      "HomepageCustom": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "const": "custom",
            "default": "custom",
            "title": "Kind",
            "type": "string"
          },
          "page_id": {
            "title": "Page Id",
            "type": "string"
          }
        },
        "required": [
          "page_id"
        ],
        "title": "HomepageCustom",
        "type": "object"
      },
      "HomepageDiscussionsIndex": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "const": "discussions_index",
            "default": "discussions_index",
            "title": "Kind",
            "type": "string"
          }
        },
        "title": "HomepageDiscussionsIndex",
        "type": "object"
      },
      "HubAttributes": {
        "additionalProperties": false,
        "properties": {
          "branding": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branding"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "discussions_default_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Description"
          },
          "discussions_default_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Title"
          },
          "homepage": {
            "anyOf": [
              {
                "discriminator": {
                  "mapping": {
                    "custom": "#/components/schemas/HomepageCustom",
                    "discussions_index": "#/components/schemas/HomepageDiscussionsIndex"
                  },
                  "propertyName": "kind"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/HomepageCustom"
                  },
                  {
                    "$ref": "#/components/schemas/HomepageDiscussionsIndex"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Homepage"
          },
          "is_free": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Free"
          },
          "is_private": {
            "title": "Is Private",
            "type": "boolean"
          },
          "legacy_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Hash"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "navigation": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Navigation"
          },
          "policies_enabled": {
            "default": false,
            "title": "Policies Enabled",
            "type": "boolean"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "title",
          "slug",
          "legacy_hash",
          "description",
          "discussions_default_title",
          "discussions_default_description",
          "is_private",
          "branding",
          "navigation",
          "settings",
          "meta",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "HubAttributes",
        "type": "object"
      },
      "HubAudienceRegistrationConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_audience_registration",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubAudienceRegistrationValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubAudienceRegistrationConditionCompiled",
        "type": "object"
      },
      "HubAudienceRegistrationConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_audience_registration",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubAudienceRegistrationValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubAudienceRegistrationConditionIn",
        "type": "object"
      },
      "HubAudienceRegistrationValue": {
        "additionalProperties": false,
        "properties": {
          "date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date"
          },
          "date_from": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date From"
          },
          "date_to": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date To"
          },
          "hub_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id"
        ],
        "title": "HubAudienceRegistrationValue",
        "type": "object"
      },
      "HubConfigAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "definition_id": {
            "title": "Definition Id",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_in_onboarding": {
            "title": "Is In Onboarding",
            "type": "boolean"
          },
          "is_in_profile": {
            "title": "Is In Profile",
            "type": "boolean"
          },
          "is_read_only": {
            "title": "Is Read Only",
            "type": "boolean"
          },
          "is_required": {
            "title": "Is Required",
            "type": "boolean"
          },
          "is_searchable": {
            "title": "Is Searchable",
            "type": "boolean"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "definition_id",
          "is_in_profile",
          "is_in_onboarding",
          "is_required",
          "is_read_only",
          "is_searchable",
          "position",
          "created_at",
          "updated_at"
        ],
        "title": "HubConfigAttributes",
        "type": "object"
      },
      "HubConfigListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubConfigResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "HubConfigListResponse",
        "type": "object"
      },
      "HubConfigPatchAttributes": {
        "additionalProperties": false,
        "properties": {
          "is_in_onboarding": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is In Onboarding"
          },
          "is_in_profile": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is In Profile"
          },
          "is_read_only": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Read Only"
          },
          "is_required": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Required"
          },
          "is_searchable": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Searchable"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          }
        },
        "title": "HubConfigPatchAttributes",
        "type": "object"
      },
      "HubConfigPatchEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubConfigPatchResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubConfigPatchEnvelope",
        "type": "object"
      },
      "HubConfigPatchResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubConfigPatchAttributes"
          },
          "type": {
            "const": "contact_attribute_hub_configs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubConfigPatchResource",
        "type": "object"
      },
      "HubConfigResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubConfigAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "contact_attribute_hub_configs",
            "default": "contact_attribute_hub_configs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubConfigResource",
        "type": "object"
      },
      "HubConfigResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubConfigResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubConfigResponse",
        "type": "object"
      },
      "HubConfigUpsertAttributes": {
        "additionalProperties": false,
        "properties": {
          "definition_id": {
            "title": "Definition Id",
            "type": "string"
          },
          "is_in_onboarding": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is In Onboarding"
          },
          "is_in_profile": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is In Profile"
          },
          "is_read_only": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Read Only"
          },
          "is_required": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Required"
          },
          "is_searchable": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Searchable"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          }
        },
        "required": [
          "definition_id"
        ],
        "title": "HubConfigUpsertAttributes",
        "type": "object"
      },
      "HubConfigUpsertEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubConfigUpsertResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubConfigUpsertEnvelope",
        "type": "object"
      },
      "HubConfigUpsertResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubConfigUpsertAttributes"
          },
          "type": {
            "const": "contact_attribute_hub_configs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubConfigUpsertResource",
        "type": "object"
      },
      "HubContentReconcileEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubContentReconcileResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubContentReconcileEnvelope",
        "type": "object"
      },
      "HubContentReconcileRequestAttributes": {
        "additionalProperties": false,
        "description": "The one caller-supplied override: an explicit playlist set (D4).\n\n``playlist_ids`` OMITTED (or the whole request body omitted \u2014 see the\nrouter, which accepts a bodyless POST) means \"derive it from this hub's\n``HubTemplateApplication`` provenance\" \u2014 the common case, and the whole\nreason this endpoint exists as a bodyless heal action. Supplying it\nexplicitly is for the ONE case provenance cannot cover: a hub with no\n``HubTemplateApplication`` row at all (a pages-only scaffold, or an\nexternal ``mio-cli`` run that skipped this backend op \u2014 see the plan's\n\u00a76 open question). An explicitly EMPTY list (``[]``) is rejected by\n``min_length=1`` rather than silently treated as \"no override\" \u2014 a caller\nthat bothered to send the key meant something by it.",
        "properties": {
          "playlist_ids": {
            "anyOf": [
              {
                "items": {
                  "maxLength": 36,
                  "minLength": 1,
                  "type": "string"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Playlist Ids"
          }
        },
        "title": "HubContentReconcileRequestAttributes",
        "type": "object"
      },
      "HubContentReconcileResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubContentReconcileRequestAttributes"
          },
          "type": {
            "const": "content_node_reconciliations",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "HubContentReconcileResource",
        "type": "object"
      },
      "HubContentReconcileResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubContentReconcileResultResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubContentReconcileResponse",
        "type": "object"
      },
      "HubContentReconcileResultAttributes": {
        "properties": {
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "results": {
            "items": {
              "$ref": "#/components/schemas/ContentNodeReconciliationEntry"
            },
            "title": "Results",
            "type": "array"
          }
        },
        "required": [
          "hub_id",
          "results"
        ],
        "title": "HubContentReconcileResultAttributes",
        "type": "object"
      },
      "HubContentReconcileResultResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubContentReconcileResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "content_node_reconciliations",
            "default": "content_node_reconciliations",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubContentReconcileResultResource",
        "type": "object"
      },
      "HubCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "branding": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branding"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "discussions_default_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Description"
          },
          "discussions_default_title": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Title"
          },
          "is_private": {
            "default": true,
            "title": "Is Private",
            "type": "boolean"
          },
          "legacy_hash": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Hash"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "navigation": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Navigation"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
            "title": "Slug",
            "type": "string"
          },
          "title": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "slug"
        ],
        "title": "HubCreateAttributes",
        "type": "object"
      },
      "HubCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubCreateEnvelope",
        "type": "object"
      },
      "HubCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubCreateAttributes"
          },
          "type": {
            "const": "hubs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubCreateResource",
        "type": "object"
      },
      "HubCreateSuppressionAttributes": {
        "properties": {
          "email_address": {
            "format": "email",
            "title": "Email Address",
            "type": "string"
          },
          "reason": {
            "default": "admin_block",
            "description": "Suppression reason. For hub-admin creates, must be 'admin_block'.",
            "title": "Reason",
            "type": "string"
          }
        },
        "required": [
          "email_address"
        ],
        "title": "HubCreateSuppressionAttributes",
        "type": "object"
      },
      "HubCreateSuppressionData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubCreateSuppressionAttributes"
          },
          "type": {
            "default": "email_suppressions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "HubCreateSuppressionData",
        "type": "object"
      },
      "HubCreateSuppressionEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubCreateSuppressionData"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubCreateSuppressionEnvelope",
        "type": "object"
      },
      "HubCustomDomainAttributes": {
        "description": "Read attributes for a ``hub_custom_domains`` resource.\n\nUsed in every read response (list, retrieve, register-201, verify-200/202,\ndelete-202). ``verification_token`` and ``cloudflare_hostname_id`` are\ndeliberately absent \u2014 see the module comment above.",
        "properties": {
          "cloudflare_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cloudflare Status"
          },
          "cname_target": {
            "title": "Cname Target",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hostname": {
            "title": "Hostname",
            "type": "string"
          },
          "last_checked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Checked At"
          },
          "last_error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Error Code"
          },
          "last_error_detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Error Detail"
          },
          "last_verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Verified At"
          },
          "ssl_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssl Status"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "txt_record_name": {
            "title": "Txt Record Name",
            "type": "string"
          },
          "txt_record_value": {
            "title": "Txt Record Value",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "hostname",
          "status",
          "cname_target",
          "txt_record_name",
          "txt_record_value",
          "created_at",
          "updated_at"
        ],
        "title": "HubCustomDomainAttributes",
        "type": "object"
      },
      "HubCustomDomainCreate": {
        "additionalProperties": false,
        "properties": {
          "hostname": {
            "maxLength": 253,
            "minLength": 1,
            "title": "Hostname",
            "type": "string"
          }
        },
        "required": [
          "hostname"
        ],
        "title": "HubCustomDomainCreate",
        "type": "object"
      },
      "HubDiscussionsListMeta": {
        "properties": {
          "default_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Description"
          },
          "default_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Title"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "has_more"
        ],
        "title": "HubDiscussionsListMeta",
        "type": "object"
      },
      "HubDiscussionsListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_DiscussionResponseAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HubDiscussionsListMeta"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "title": "HubDiscussionsListResponse",
        "type": "object"
      },
      "HubEmailSenderAttributes": {
        "additionalProperties": false,
        "properties": {
          "from_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Name"
          },
          "reply_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reply To"
          }
        },
        "title": "HubEmailSenderAttributes",
        "type": "object"
      },
      "HubEmailSenderResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubEmailSenderAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_email_senders",
            "default": "hub_email_senders",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubEmailSenderResource",
        "type": "object"
      },
      "HubEmailSenderResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubEmailSenderResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubEmailSenderResponse",
        "type": "object"
      },
      "HubEmailSenderUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "from_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Name"
          },
          "reply_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reply To"
          }
        },
        "title": "HubEmailSenderUpdateAttributes",
        "type": "object"
      },
      "HubEmailSenderUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubEmailSenderUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubEmailSenderUpdateEnvelope",
        "type": "object"
      },
      "HubEmailSenderUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubEmailSenderUpdateAttributes"
          },
          "type": {
            "const": "hub_email_senders",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubEmailSenderUpdateResource",
        "type": "object"
      },
      "HubEmailStatsOut": {
        "description": "Attributes block for a ``hub_email_stats`` resource object.\n\nMirrors the attributes dict built in get_hub_email_stats (\u00a76.8).",
        "properties": {
          "bounce_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bounce Rate"
          },
          "bounced_hard_24h": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bounced Hard 24H"
          },
          "bounced_soft_24h": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bounced Soft 24H"
          },
          "complained_24h": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Complained 24H"
          },
          "complaint_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Complaint Rate"
          },
          "delivered_24h": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delivered 24H"
          },
          "email_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Status"
          },
          "email_status_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Status At"
          },
          "sent_24h": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sent 24H"
          },
          "unsubscribed_24h": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unsubscribed 24H"
          }
        },
        "title": "HubEmailStatsOut",
        "type": "object"
      },
      "HubEventAttributes": {
        "additionalProperties": false,
        "properties": {
          "attendee_list_visible": {
            "title": "Attendee List Visible",
            "type": "boolean"
          },
          "capacity": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Capacity"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "ends_at": {
            "format": "date-time",
            "title": "Ends At",
            "type": "string"
          },
          "going_count": {
            "title": "Going Count",
            "type": "integer"
          },
          "google_calendar_url": {
            "title": "Google Calendar Url",
            "type": "string"
          },
          "host_contact_id": {
            "title": "Host Contact Id",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_full": {
            "title": "Is Full",
            "type": "boolean"
          },
          "location_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Address"
          },
          "location_type": {
            "enum": [
              "url",
              "address"
            ],
            "title": "Location Type",
            "type": "string"
          },
          "location_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Url"
          },
          "my_rsvp_status": {
            "anyOf": [
              {
                "enum": [
                  "going",
                  "not_going"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "My Rsvp Status"
          },
          "rsvp_tag_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rsvp Tag Id"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "starts_at": {
            "format": "date-time",
            "title": "Starts At",
            "type": "string"
          },
          "status": {
            "enum": [
              "scheduled",
              "cancelled"
            ],
            "title": "Status",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "visibility": {
            "enum": [
              "all_members",
              "segment"
            ],
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "team_id",
          "title",
          "description",
          "cover_image_url",
          "starts_at",
          "ends_at",
          "timezone",
          "location_type",
          "location_url",
          "location_address",
          "capacity",
          "host_contact_id",
          "visibility",
          "segment_id",
          "rsvp_tag_id",
          "attendee_list_visible",
          "status",
          "going_count",
          "is_full",
          "google_calendar_url",
          "my_rsvp_status",
          "created_at",
          "updated_at"
        ],
        "title": "HubEventAttributes",
        "type": "object"
      },
      "HubEventCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "attendee_list_visible": {
            "default": true,
            "title": "Attendee List Visible",
            "type": "boolean"
          },
          "capacity": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Capacity"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 20000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "ends_at": {
            "format": "date-time",
            "title": "Ends At",
            "type": "string"
          },
          "location_address": {
            "anyOf": [
              {
                "maxLength": 10000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Address"
          },
          "location_type": {
            "enum": [
              "url",
              "address"
            ],
            "title": "Location Type",
            "type": "string"
          },
          "location_url": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Url"
          },
          "rsvp_tag_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rsvp Tag Id"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "starts_at": {
            "format": "date-time",
            "title": "Starts At",
            "type": "string"
          },
          "timezone": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Timezone",
            "type": "string"
          },
          "title": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          },
          "visibility": {
            "default": "all_members",
            "enum": [
              "all_members",
              "segment"
            ],
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "title",
          "starts_at",
          "ends_at",
          "timezone",
          "location_type"
        ],
        "title": "HubEventCreateAttributes",
        "type": "object"
      },
      "HubEventCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubEventCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubEventCreateEnvelope",
        "type": "object"
      },
      "HubEventCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubEventCreateAttributes"
          },
          "type": {
            "const": "hub_events",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubEventCreateResource",
        "type": "object"
      },
      "HubEventListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubEventResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "HubEventListResponse",
        "type": "object"
      },
      "HubEventResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubEventAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_events",
            "default": "hub_events",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubEventResource",
        "type": "object"
      },
      "HubEventResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubEventResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubEventResponse",
        "type": "object"
      },
      "HubEventUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "attendee_list_visible": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attendee List Visible"
          },
          "capacity": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Capacity"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 20000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ends At"
          },
          "location_address": {
            "anyOf": [
              {
                "maxLength": 10000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Address"
          },
          "location_type": {
            "anyOf": [
              {
                "enum": [
                  "url",
                  "address"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Type"
          },
          "location_url": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Url"
          },
          "rsvp_tag_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rsvp Tag Id"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "starts_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Starts At"
          },
          "timezone": {
            "anyOf": [
              {
                "maxLength": 64,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "visibility": {
            "anyOf": [
              {
                "enum": [
                  "all_members",
                  "segment"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Visibility"
          }
        },
        "title": "HubEventUpdateAttributes",
        "type": "object"
      },
      "HubEventUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubEventUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubEventUpdateEnvelope",
        "type": "object"
      },
      "HubEventUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubEventUpdateAttributes"
          },
          "type": {
            "const": "hub_events",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubEventUpdateResource",
        "type": "object"
      },
      "HubFileActivityConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_file_activity",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubFileActivityValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubFileActivityConditionCompiled",
        "type": "object"
      },
      "HubFileActivityConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_file_activity",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubFileActivityValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubFileActivityConditionIn",
        "type": "object"
      },
      "HubFileActivityValue": {
        "additionalProperties": false,
        "properties": {
          "hub_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Hub Id",
            "type": "string"
          },
          "node_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Node Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "node_id"
        ],
        "title": "HubFileActivityValue",
        "type": "object"
      },
      "HubListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "HubListResponse",
        "type": "object"
      },
      "HubMeAttributes": {
        "additionalProperties": false,
        "description": "Attributes block for the `hubs` resource inside GET /me/hubs.",
        "properties": {
          "branding": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branding"
          },
          "is_private": {
            "title": "Is Private",
            "type": "boolean"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "title",
          "slug",
          "is_private",
          "branding"
        ],
        "title": "HubMeAttributes",
        "type": "object"
      },
      "HubMeListResponse": {
        "additionalProperties": false,
        "description": "JSON:API collection envelope for GET /me/hubs.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubMeResource"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubMeListResponse",
        "type": "object"
      },
      "HubMeResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a hub in GET /me/hubs.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubMeAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hubs",
            "default": "hubs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubMeResource",
        "type": "object"
      },
      "HubMediaAttributes": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Id"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "playlist_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Playlist Id"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "visibility": {
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "hub_id",
          "visibility",
          "position",
          "created_at",
          "updated_at"
        ],
        "title": "HubMediaAttributes",
        "type": "object"
      },
      "HubMediaListResponse": {
        "description": "Collection response wrapping a list of HubMediaResource.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_HubMediaAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubMediaListResponse",
        "type": "object"
      },
      "HubMediaPublishAttributes": {
        "properties": {
          "file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Target file id (supplied on the media route only).",
            "title": "File Id"
          },
          "playlist_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Target playlist id (supplied on the playlists route only).",
            "title": "Playlist Id"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publish timestamp. Null = draft. Future = scheduled. <= now = live.",
            "title": "Published At"
          },
          "visibility": {
            "default": "members",
            "description": "Per-hub visibility override.",
            "enum": [
              "members",
              "private",
              "public"
            ],
            "title": "Visibility",
            "type": "string"
          }
        },
        "title": "HubMediaPublishAttributes",
        "type": "object"
      },
      "HubMediaPublishData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubMediaPublishAttributes"
          },
          "type": {
            "const": "hub_media",
            "default": "hub_media",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "HubMediaPublishData",
        "type": "object"
      },
      "HubMediaPublishRequest": {
        "description": "Body for POST .../media or .../playlists/{id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubMediaPublishData"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubMediaPublishRequest",
        "type": "object"
      },
      "HubMediaResponse": {
        "description": "Single-resource response wrapping a HubMediaResource.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_HubMediaAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubMediaResponse",
        "type": "object"
      },
      "HubMemberCountsAttributes": {
        "properties": {
          "members": {
            "minimum": 0.0,
            "title": "Members",
            "type": "integer"
          },
          "moderators": {
            "minimum": 0.0,
            "title": "Moderators",
            "type": "integer"
          },
          "online": {
            "minimum": 0.0,
            "title": "Online",
            "type": "integer"
          }
        },
        "required": [
          "members",
          "online",
          "moderators"
        ],
        "title": "HubMemberCountsAttributes",
        "type": "object"
      },
      "HubMembershipAttributes": {
        "description": "Attributes for a hub_memberships resource object.\n\nPer JSON:API spec \u00a7\"Resource Objects\": id and type are excluded.\nhub_id and contact_id are lifecycle context, NOT access state.",
        "properties": {
          "ban_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ban Reason"
          },
          "banned_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned At"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "notification_prefs": {
            "additionalProperties": true,
            "title": "Notification Prefs",
            "type": "object"
          },
          "onboarded_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onboarded At"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          },
          "status": {
            "default": "active",
            "title": "Status",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "tos_acceptance_required": {
            "default": false,
            "title": "Tos Acceptance Required",
            "type": "boolean"
          },
          "tos_accepted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Accepted At"
          },
          "tos_accepted_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Accepted Version"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "welcome_email_sent": {
            "default": false,
            "title": "Welcome Email Sent",
            "type": "boolean"
          }
        },
        "required": [
          "hub_id",
          "contact_id",
          "team_id",
          "notification_prefs",
          "created_at",
          "updated_at"
        ],
        "title": "HubMembershipAttributes",
        "type": "object"
      },
      "HubMembershipCreateAttributes": {
        "additionalProperties": false,
        "description": "Request body for POST /members (admin enrolment).\n\ncontact_id is required. role is optional: on a NEW member, an omitted or\nnull role mints a regular member (hub_memberships.role stays NULL). On an\nidempotent re-add or a reactivation of an EXISTING member (including one\nthat previously left), an omitted role leaves that member's existing role\nUNCHANGED \u2014 this endpoint never clears an elevated role as a side effect\nof a re-add; use PATCH .../members/{contact_id}/role to change it. When a\nrole IS supplied (\"admin\" or \"moderator\"), it is assigned via set_role()\nonly after the membership is guaranteed active.",
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "role": {
            "anyOf": [
              {
                "enum": [
                  "admin",
                  "moderator"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          }
        },
        "required": [
          "contact_id"
        ],
        "title": "HubMembershipCreateAttributes",
        "type": "object"
      },
      "HubMembershipCreateData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubMembershipCreateAttributes"
          },
          "type": {
            "const": "hub_memberships",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubMembershipCreateData",
        "type": "object"
      },
      "HubMembershipCreateRequest": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubMembershipCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubMembershipCreateRequest",
        "type": "object"
      },
      "HubMembershipRoleUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "role": {
            "anyOf": [
              {
                "enum": [
                  "admin",
                  "moderator"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          }
        },
        "required": [
          "role"
        ],
        "title": "HubMembershipRoleUpdateAttributes",
        "type": "object"
      },
      "HubMembershipRoleUpdateData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubMembershipRoleUpdateAttributes"
          },
          "type": {
            "const": "hub_memberships",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubMembershipRoleUpdateData",
        "type": "object"
      },
      "HubMembershipRoleUpdateRequest": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubMembershipRoleUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubMembershipRoleUpdateRequest",
        "type": "object"
      },
      "HubNumberOfSearchesConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_number_of_searches",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubNumberOfSearchesValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubNumberOfSearchesConditionCompiled",
        "type": "object"
      },
      "HubNumberOfSearchesConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_number_of_searches",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubNumberOfSearchesValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubNumberOfSearchesConditionIn",
        "type": "object"
      },
      "HubNumberOfSearchesValue": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "hub_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "count"
        ],
        "title": "HubNumberOfSearchesValue",
        "type": "object"
      },
      "HubOwnershipTransferAttributes": {
        "additionalProperties": false,
        "description": "Request body for POST .../ownership-transfer.\n\n``new_owner_contact_id`` must already hold a hub_memberships row (no\nfresh enrolment happens here). ``force`` widens the current-owner\neligibility check (banned/soft_banned/left/soft-deleted-contact) \u2014 it\nnever bypasses the recipient-eligibility check or the \"must actually be\nthe current owner\" re-verification under lock.\n\n``demote_to`` is only honored when ``force=false``; when ``force=true``\nthe old owner is ALWAYS stripped to a regular member (``role=None``),\nregardless of this field's value \u2014 a demoted-but-still-\"admin\" owner\nwould otherwise keep delegated-moderation ban-immunity and pin/lock/move\npower, defeating the point of a forced (compromised-owner) transfer.\n\n``demote_to`` is REQUIRED \u2014 deliberately no default (dual-review F3).\n``\"admin\"`` sits in ``PROTECTED_TARGET_ROLES``, ``MODERATION_CONSOLE_ROLES``,\n``ELEVATED_PIN_ROLES``, ``DISCUSSION_LOCK_ROLES``, ``DISCUSSION_MOVE_ROLES``,\nand ``CONTENT_REMOVE_ROLES`` \u2014 6 of 8 elevated-power sets in this codebase\n\u2014 so a silent \"admin\" default would mean the NEW owner cannot ban the\nperson they just replaced (403 \"cannot ban a protected hub member\")\nwithout the caller ever having chosen that outcome. The caller must\nstate intent explicitly: pass ``\"admin\"``, ``\"moderator\"``, or ``null``.",
        "properties": {
          "demote_to": {
            "anyOf": [
              {
                "enum": [
                  "admin",
                  "moderator"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Demote To"
          },
          "force": {
            "default": false,
            "title": "Force",
            "type": "boolean"
          },
          "new_owner_contact_id": {
            "title": "New Owner Contact Id",
            "type": "string"
          }
        },
        "required": [
          "new_owner_contact_id",
          "demote_to"
        ],
        "title": "HubOwnershipTransferAttributes",
        "type": "object"
      },
      "HubOwnershipTransferData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubOwnershipTransferAttributes"
          },
          "type": {
            "const": "hub_memberships",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubOwnershipTransferData",
        "type": "object"
      },
      "HubOwnershipTransferRequest": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubOwnershipTransferData"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubOwnershipTransferRequest",
        "type": "object"
      },
      "HubPageRenderAttributes": {
        "additionalProperties": false,
        "properties": {
          "branding": {
            "$ref": "#/components/schemas/AnonBrandingView"
          },
          "page_type": {
            "title": "Page Type",
            "type": "string"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/AnonSectionView"
            },
            "title": "Sections",
            "type": "array"
          },
          "settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LoginPageSettings"
              },
              {
                "$ref": "#/components/schemas/RegisterPageSettings"
              },
              {
                "$ref": "#/components/schemas/PaymentsPageSettings"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "page_type",
          "title",
          "branding",
          "settings",
          "sections"
        ],
        "title": "HubPageRenderAttributes",
        "type": "object"
      },
      "HubPageRenderResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a hub-page-renders resource.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubPageRenderAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_page_renders",
            "default": "hub_page_renders",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubPageRenderResource",
        "type": "object"
      },
      "HubPageRenderResponse": {
        "additionalProperties": false,
        "description": "Top-level JSON:API response envelope for GET /api/hubs/{slug}/pages/{type}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubPageRenderResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubPageRenderResponse",
        "type": "object"
      },
      "HubPlaylistActivityConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_playlist_activity",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubPlaylistActivityValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubPlaylistActivityConditionCompiled",
        "type": "object"
      },
      "HubPlaylistActivityConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_playlist_activity",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubPlaylistActivityValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubPlaylistActivityConditionIn",
        "type": "object"
      },
      "HubPlaylistActivityValue": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Count"
          },
          "hub_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Hub Id",
            "type": "string"
          },
          "playlist_node_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Playlist Node Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "playlist_node_id"
        ],
        "title": "HubPlaylistActivityValue",
        "type": "object"
      },
      "HubPlaylistCardAttributes": {
        "properties": {
          "available_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Available At"
          },
          "can_access": {
            "title": "Can Access",
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "drip_available_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Drip Available At"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Total time of the playlist in seconds: the summed playback duration of its time-based media PLUS the estimated read time of its text lessons (asset_kind 'document'). Display-only -- nothing computes against it, and viewer progress is completion-count based. In practice a playlist with no timing data at all reports 0, not null -- the playback SUM coalesces to 0 -- so treat 0 as 'nothing to show' rather than 'instant'.",
            "title": "Duration Seconds"
          },
          "file_count": {
            "description": "Number of items in the playlist, regardless of kind or access.",
            "title": "File Count",
            "type": "integer"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "lock_reason": {
            "anyOf": [
              {
                "enum": [
                  "members_required",
                  "scheduled",
                  "private",
                  "draft",
                  "drip_unavailable",
                  "access_restricted"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lock Reason"
          },
          "playlist_id": {
            "title": "Playlist Id",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "scheduled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled At"
          },
          "target": {
            "$ref": "#/components/schemas/HubPlaylistCardTarget"
          },
          "thumbnail": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HubPlaylistCardThumbnail"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "viewer_progress": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HubPlaylistCardViewerProgress"
              },
              {
                "type": "null"
              }
            ]
          },
          "visibility": {
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "playlist_id",
          "title",
          "file_count",
          "visibility",
          "can_access",
          "position",
          "created_at",
          "updated_at",
          "target"
        ],
        "title": "HubPlaylistCardAttributes",
        "type": "object"
      },
      "HubPlaylistCardListResponse": {
        "description": "Collection response wrapping a list of HubPlaylistCardResource.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_HubPlaylistCardAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubPlaylistCardListResponse",
        "type": "object"
      },
      "HubPlaylistCardTarget": {
        "properties": {
          "href": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Href"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "playlist",
            "default": "playlist",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "HubPlaylistCardTarget",
        "type": "object"
      },
      "HubPlaylistCardThumbnail": {
        "properties": {
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "HubPlaylistCardThumbnail",
        "type": "object"
      },
      "HubPlaylistCardViewerProgress": {
        "properties": {
          "aggregate_percent": {
            "title": "Aggregate Percent",
            "type": "integer"
          },
          "completed_count": {
            "title": "Completed Count",
            "type": "integer"
          },
          "file_count": {
            "title": "File Count",
            "type": "integer"
          }
        },
        "required": [
          "completed_count",
          "file_count",
          "aggregate_percent"
        ],
        "title": "HubPlaylistCardViewerProgress",
        "type": "object"
      },
      "HubPlaylistItemCardAttributes": {
        "properties": {
          "asset_kind": {
            "enum": [
              "video",
              "audio",
              "pdf",
              "image",
              "document"
            ],
            "title": "Asset Kind",
            "type": "string"
          },
          "available_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Available At"
          },
          "can_access": {
            "title": "Can Access",
            "type": "boolean"
          },
          "content_node_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hub-scoped content_nodes.id whose media matches this item's file. An identifier, not content -- emitted unconditionally, including on locked/scheduled rows. Viewer-scoped: null for a viewer who cannot see the underlying node (unpublished, or non-public for an anonymous viewer) or when the file's media maps to more than one node in this hub (ambiguous).",
            "title": "Content Node Id"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Playback duration in seconds for time-based media. None for kinds that have no playback (documents, images, PDFs) or when the media's duration is not yet known.",
            "title": "Duration Seconds"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "lock_reason": {
            "anyOf": [
              {
                "enum": [
                  "members_required",
                  "scheduled",
                  "private",
                  "draft",
                  "drip_unavailable",
                  "access_restricted"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lock Reason"
          },
          "playlist_id": {
            "title": "Playlist Id",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "published_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "reading_time_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Estimated read time of a text lesson, in seconds (200 words/minute, rounded half-up, 1-minute floor). Populated for asset_kind 'document' only; None for every other kind and for a document with an empty body. Emitted on locked rows too -- it is a size signal, not content.",
            "title": "Reading Time Seconds"
          },
          "scheduled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled At"
          },
          "target": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HubPlaylistItemCardTarget"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnail": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HubPlaylistItemCardThumbnail"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "hub_id",
          "playlist_id",
          "position",
          "asset_kind",
          "can_access"
        ],
        "title": "HubPlaylistItemCardAttributes",
        "type": "object"
      },
      "HubPlaylistItemCardListResponse": {
        "description": "Collection response wrapping a list of HubPlaylistItemCardResource.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_HubPlaylistItemCardAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubPlaylistItemCardListResponse",
        "type": "object"
      },
      "HubPlaylistItemCardTarget": {
        "properties": {
          "href": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Href"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "file",
            "default": "file",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "HubPlaylistItemCardTarget",
        "type": "object"
      },
      "HubPlaylistItemCardThumbnail": {
        "properties": {
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "HubPlaylistItemCardThumbnail",
        "type": "object"
      },
      "HubPolicyGateAttributes": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "title": "HubPolicyGateAttributes",
        "type": "object"
      },
      "HubPolicyGateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubPolicyGateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubPolicyGateEnvelope",
        "type": "object"
      },
      "HubPolicyGateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubPolicyGateAttributes"
          },
          "type": {
            "const": "hub_policy_gate",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubPolicyGateResource",
        "type": "object"
      },
      "HubPolicyGateResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubPolicyGateResponseResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubPolicyGateResponse",
        "type": "object"
      },
      "HubPolicyGateResponseResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubPolicyGateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_policy_gate",
            "default": "hub_policy_gate",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubPolicyGateResponseResource",
        "type": "object"
      },
      "HubPriceDisplayAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "price_id": {
            "title": "Price Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "visible": {
            "title": "Visible",
            "type": "boolean"
          }
        },
        "required": [
          "hub_id",
          "price_id",
          "visible",
          "position",
          "created_at",
          "updated_at"
        ],
        "title": "HubPriceDisplayAttributes",
        "type": "object"
      },
      "HubPriceDisplayListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubPriceDisplayResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "HubPriceDisplayListResponse",
        "type": "object"
      },
      "HubPriceDisplayResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubPriceDisplayAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_price_displays",
            "default": "hub_price_displays",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubPriceDisplayResource",
        "type": "object"
      },
      "HubPriceDisplayResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubPriceDisplayResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubPriceDisplayResponse",
        "type": "object"
      },
      "HubPriceDisplayUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "visible": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Visible"
          }
        },
        "title": "HubPriceDisplayUpdateAttributes",
        "type": "object"
      },
      "HubPriceDisplayUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubPriceDisplayUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubPriceDisplayUpdateEnvelope",
        "type": "object"
      },
      "HubPriceDisplayUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubPriceDisplayUpdateAttributes"
          },
          "type": {
            "const": "hub_price_displays",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubPriceDisplayUpdateResource",
        "type": "object"
      },
      "HubProductDisplayAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_free_tier": {
            "title": "Is Free Tier",
            "type": "boolean"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "visible": {
            "title": "Visible",
            "type": "boolean"
          }
        },
        "required": [
          "hub_id",
          "product_id",
          "position",
          "visible",
          "is_free_tier",
          "created_at",
          "updated_at"
        ],
        "title": "HubProductDisplayAttributes",
        "type": "object"
      },
      "HubProductDisplayCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "is_free_tier": {
            "default": false,
            "title": "Is Free Tier",
            "type": "boolean"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          },
          "visible": {
            "default": true,
            "title": "Visible",
            "type": "boolean"
          }
        },
        "required": [
          "product_id"
        ],
        "title": "HubProductDisplayCreateAttributes",
        "type": "object"
      },
      "HubProductDisplayCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubProductDisplayCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubProductDisplayCreateEnvelope",
        "type": "object"
      },
      "HubProductDisplayCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubProductDisplayCreateAttributes"
          },
          "type": {
            "const": "hub_product_displays",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubProductDisplayCreateResource",
        "type": "object"
      },
      "HubProductDisplayListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubProductDisplayResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "HubProductDisplayListResponse",
        "type": "object"
      },
      "HubProductDisplayResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubProductDisplayAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_product_displays",
            "default": "hub_product_displays",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubProductDisplayResource",
        "type": "object"
      },
      "HubProductDisplayResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubProductDisplayResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubProductDisplayResponse",
        "type": "object"
      },
      "HubProductDisplayUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "is_free_tier": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Free Tier"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "visible": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Visible"
          }
        },
        "title": "HubProductDisplayUpdateAttributes",
        "type": "object"
      },
      "HubProductDisplayUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubProductDisplayUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubProductDisplayUpdateEnvelope",
        "type": "object"
      },
      "HubProductDisplayUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubProductDisplayUpdateAttributes"
          },
          "type": {
            "const": "hub_product_displays",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubProductDisplayUpdateResource",
        "type": "object"
      },
      "HubResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hubs",
            "default": "hubs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubResource",
        "type": "object"
      },
      "HubResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubResponse",
        "type": "object"
      },
      "HubScaffoldAttributes": {
        "additionalProperties": false,
        "properties": {
          "catalog_digest": {
            "maxLength": 128,
            "title": "Catalog Digest",
            "type": "string"
          },
          "hub_template_id": {
            "maxLength": 100,
            "pattern": "^[a-z0-9][a-z0-9-]*$",
            "title": "Hub Template Id",
            "type": "string"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "overrides": {
            "$ref": "#/components/schemas/HubScaffoldOverridesPayload"
          },
          "slug": {
            "maxLength": 100,
            "pattern": "^[a-z0-9-]+$",
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "hub_template_id",
          "name",
          "slug",
          "catalog_digest"
        ],
        "title": "HubScaffoldAttributes",
        "type": "object"
      },
      "HubScaffoldEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubScaffoldResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubScaffoldEnvelope",
        "type": "object"
      },
      "HubScaffoldOverridesPayload": {
        "additionalProperties": false,
        "description": "The operator's presentation overrides \u2014 the CLI's flags, as JSON.\n\nEvery field is OPTIONAL and every omitted field means \"the template\ndecides\". ``publish`` is the exception in kind: it is a tri-state on the\nwire (absent / false / true) that collapses to a plain bool in the service,\nbecause absent and false mean the same thing \u2014 the hub stays private.\n``HubScaffoldOverrides.to_fingerprint_payload()`` folds all four keys\nunconditionally, so \"omitted\" and \"sent at its default\" produce the SAME\nidempotency fingerprint: a client that starts sending an explicit\n``publish: false`` mid-retry is making the same request, not a new one.",
        "properties": {
          "favicon_url": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Absolute URL or relative asset path for the hub favicon. Same contract as logo_url: omit or null to defer to the template, \"\" is a caller bug and 422s rather than being silently ignored.",
            "title": "Favicon Url"
          },
          "logo_url": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Absolute URL or relative asset path for the hub logo. Omit the field (or send null) to let the template decide. An empty string \"\" is REJECTED rather than treated as clear-the-logo: the service applies this override only when it is truthy, so an empty string would do nothing while still changing the idempotency fingerprint \u2014 the same key would then 409 against the omitted form for a request that meant the same thing. Clearing branding is the PATCH /api/teams/{team_id}/hubs/{id} endpoint's job.",
            "title": "Logo Url"
          },
          "publish": {
            "default": false,
            "title": "Publish",
            "type": "boolean"
          },
          "registration_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Enabled"
          }
        },
        "title": "HubScaffoldOverridesPayload",
        "type": "object"
      },
      "HubScaffoldResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubScaffoldAttributes"
          },
          "type": {
            "const": "hub_scaffolds",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubScaffoldResource",
        "type": "object"
      },
      "HubScaffoldResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubScaffoldResultResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubScaffoldResponse",
        "type": "object"
      },
      "HubScaffoldResultAttributes": {
        "properties": {
          "created_resource_ids": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "title": "Created Resource Ids",
            "type": "object"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "replayed": {
            "title": "Replayed",
            "type": "boolean"
          },
          "summary": {
            "items": {
              "$ref": "#/components/schemas/HubScaffoldSummaryEntry"
            },
            "title": "Summary",
            "type": "array"
          }
        },
        "required": [
          "hub_id",
          "summary",
          "created_resource_ids",
          "replayed"
        ],
        "title": "HubScaffoldResultAttributes",
        "type": "object"
      },
      "HubScaffoldResultResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubScaffoldResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_scaffolds",
            "default": "hub_scaffolds",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "HubScaffoldResultResource",
        "type": "object"
      },
      "HubScaffoldSummaryEntry": {
        "description": "One row of the per-resource summary (spec \u00a75).\n\n``resource`` is the step name, qualified by the template key where a step\nis per-item (``space:general``, ``onboarding:company``, ``page:homepage``,\n``policy:terms``, ``playlist:getting-started``, and\n``document:getting-started:0`` for each ``playlists[].documents[]`` entry \u2014\nwhich needs its ORDINAL because two placeholder lessons may share a title)\nand bare where it is not (``hub``, ``branding``, ``navigation``,\n``settings``, ``policy_gate``, ``playlists``, ``publish``,\n``welcome_post``). ``reason`` is present on skips ONLY \u2014 spec \u00a75 asks for\n\"created / skipped / reason\", and a created row has no reason to give.",
        "properties": {
          "action": {
            "enum": [
              "created",
              "skipped"
            ],
            "title": "Action",
            "type": "string"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "resource": {
            "title": "Resource",
            "type": "string"
          }
        },
        "required": [
          "resource",
          "action"
        ],
        "title": "HubScaffoldSummaryEntry",
        "type": "object"
      },
      "HubTimeSinceJoiningConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_time_since_joining",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubTimeSinceJoiningValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubTimeSinceJoiningConditionCompiled",
        "type": "object"
      },
      "HubTimeSinceJoiningConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_time_since_joining",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubTimeSinceJoiningValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubTimeSinceJoiningConditionIn",
        "type": "object"
      },
      "HubTimeSinceJoiningValue": {
        "additionalProperties": false,
        "properties": {
          "days": {
            "maximum": 36500.0,
            "minimum": 0.0,
            "title": "Days",
            "type": "integer"
          },
          "hub_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "days"
        ],
        "title": "HubTimeSinceJoiningValue",
        "type": "object"
      },
      "HubUniqueLoginsConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_unique_logins",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubUniqueLoginsValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubUniqueLoginsConditionCompiled",
        "type": "object"
      },
      "HubUniqueLoginsConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "hub_unique_logins",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/HubUniqueLoginsValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "HubUniqueLoginsConditionIn",
        "type": "object"
      },
      "HubUniqueLoginsValue": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "hub_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "count"
        ],
        "title": "HubUniqueLoginsValue",
        "type": "object"
      },
      "HubUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "branding": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branding"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "discussions_default_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Description"
          },
          "discussions_default_title": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Title"
          },
          "homepage": {
            "anyOf": [
              {
                "discriminator": {
                  "mapping": {
                    "custom": "#/components/schemas/HomepageCustom",
                    "discussions_index": "#/components/schemas/HomepageDiscussionsIndex"
                  },
                  "propertyName": "kind"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/HomepageCustom"
                  },
                  {
                    "$ref": "#/components/schemas/HomepageDiscussionsIndex"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Homepage"
          },
          "is_private": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Private"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "navigation": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Navigation"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "HubUpdateAttributes",
        "type": "object"
      },
      "HubUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HubUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "HubUpdateEnvelope",
        "type": "object"
      },
      "HubUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubUpdateAttributes"
          },
          "type": {
            "const": "hubs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "HubUpdateResource",
        "type": "object"
      },
      "JsonApiError": {
        "properties": {
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code"
          },
          "detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Detail"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "source": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "status",
          "title"
        ],
        "title": "JsonApiError",
        "type": "object"
      },
      "JsonApiErrorResponse": {
        "description": "Error JSON:API response.",
        "properties": {
          "errors": {
            "items": {
              "$ref": "#/components/schemas/JsonApiError"
            },
            "title": "Errors",
            "type": "array"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "errors"
        ],
        "title": "JsonApiErrorResponse",
        "type": "object"
      },
      "JsonApiLinks": {
        "properties": {
          "self": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Self"
          }
        },
        "title": "JsonApiLinks",
        "type": "object"
      },
      "JsonApiListResponse_AchievementAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AchievementAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AchievementAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_AchievementCatalogAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AchievementCatalogAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AchievementCatalogAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_AchievementEarnAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AchievementEarnAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AchievementEarnAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_AchievementHubAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AchievementHubAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AchievementHubAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_AdminAlertAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AdminAlertAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AdminAlertAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_AnonCommentAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AnonCommentAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AnonCommentAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_AnonDiscussionAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AnonDiscussionAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AnonDiscussionAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_AnonReactionCount_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AnonReactionCount_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AnonReactionCount]",
        "type": "object"
      },
      "JsonApiListResponse_AnonSpaceAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_AnonSpaceAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[AnonSpaceAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_ApiKeyAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_ApiKeyAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[ApiKeyAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_ConversationAudienceAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_ConversationAudienceAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[ConversationAudienceAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_ConversationResponseAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_ConversationResponseAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[ConversationResponseAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_DiscussionResponseAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_DiscussionResponseAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[DiscussionResponseAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_DripCampaignOut_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_DripCampaignOut_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[DripCampaignOut]",
        "type": "object"
      },
      "JsonApiListResponse_DripEnrollmentOut_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_DripEnrollmentOut_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[DripEnrollmentOut]",
        "type": "object"
      },
      "JsonApiListResponse_DripStepOut_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_DripStepOut_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[DripStepOut]",
        "type": "object"
      },
      "JsonApiListResponse_ExternalProviderAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_ExternalProviderAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[ExternalProviderAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_FeedEventAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_FeedEventAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[FeedEventAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_HubCustomDomainAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_HubCustomDomainAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[HubCustomDomainAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_HubMembershipAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_HubMembershipAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[HubMembershipAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_MentionCandidateAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_MentionCandidateAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[MentionCandidateAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_MessageResponseAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_MessageResponseAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[MessageResponseAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_ModerationActionAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_ModerationActionAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[ModerationActionAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_OAuthClientAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_OAuthClientAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[OAuthClientAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_PermissionAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_PermissionAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[PermissionAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_PlatformAlertAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_PlatformAlertAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[PlatformAlertAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_RoleAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_RoleAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[RoleAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_SavedItemAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_SavedItemAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[SavedItemAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_SpaceResponseAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_SpaceResponseAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[SpaceResponseAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_TeamAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_TeamAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[TeamAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_TeamMemberAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_TeamMemberAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[TeamMemberAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_UserAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_UserAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[UserAttributes]",
        "type": "object"
      },
      "JsonApiListResponse_VerifiedDomainAttributes_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_VerifiedDomainAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiListResponse[VerifiedDomainAttributes]",
        "type": "object"
      },
      "JsonApiPaginationLinks": {
        "properties": {
          "next": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next"
          },
          "self": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Self"
          }
        },
        "title": "JsonApiPaginationLinks",
        "type": "object"
      },
      "JsonApiResourceLinkage": {
        "description": "A JSON:API resource identifier object: {type, id}.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id"
        ],
        "title": "JsonApiResourceLinkage",
        "type": "object"
      },
      "JsonApiResource_AchievementAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AchievementAttributes]",
        "type": "object"
      },
      "JsonApiResource_AchievementCatalogAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementCatalogAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AchievementCatalogAttributes]",
        "type": "object"
      },
      "JsonApiResource_AchievementEarnAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementEarnAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AchievementEarnAttributes]",
        "type": "object"
      },
      "JsonApiResource_AchievementHubAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AchievementHubAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AchievementHubAttributes]",
        "type": "object"
      },
      "JsonApiResource_AdminAlertAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AdminAlertAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AdminAlertAttributes]",
        "type": "object"
      },
      "JsonApiResource_AdminModerationReportAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AdminModerationReportAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AdminModerationReportAttributes]",
        "type": "object"
      },
      "JsonApiResource_AdminTeamTranscriptionReadAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AdminTeamTranscriptionReadAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AdminTeamTranscriptionReadAttributes]",
        "type": "object"
      },
      "JsonApiResource_AnonCommentAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AnonCommentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AnonCommentAttributes]",
        "type": "object"
      },
      "JsonApiResource_AnonDiscussionAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AnonDiscussionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AnonDiscussionAttributes]",
        "type": "object"
      },
      "JsonApiResource_AnonReactionCount_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AnonReactionCount"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AnonReactionCount]",
        "type": "object"
      },
      "JsonApiResource_AnonSpaceAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AnonSpaceAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AnonSpaceAttributes]",
        "type": "object"
      },
      "JsonApiResource_ApiKeyAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ApiKeyAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ApiKeyAttributes]",
        "type": "object"
      },
      "JsonApiResource_ApiKeyCreateAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ApiKeyCreateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ApiKeyCreateAttributes]",
        "type": "object"
      },
      "JsonApiResource_AttachmentAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AttachmentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AttachmentAttributes]",
        "type": "object"
      },
      "JsonApiResource_AttachmentFinalizeAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AttachmentFinalizeAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AttachmentFinalizeAttributes]",
        "type": "object"
      },
      "JsonApiResource_AttachmentUploadAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AttachmentUploadAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[AttachmentUploadAttributes]",
        "type": "object"
      },
      "JsonApiResource_CommunityProfileResponseAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/CommunityProfileResponseAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[CommunityProfileResponseAttributes]",
        "type": "object"
      },
      "JsonApiResource_ConversationAudienceAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ConversationAudienceAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ConversationAudienceAttributes]",
        "type": "object"
      },
      "JsonApiResource_ConversationResponseAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ConversationResponseAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ConversationResponseAttributes]",
        "type": "object"
      },
      "JsonApiResource_DirectMessageCandidateAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DirectMessageCandidateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DirectMessageCandidateAttributes]",
        "type": "object"
      },
      "JsonApiResource_DirectMessageCapabilityAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DirectMessageCapabilityAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DirectMessageCapabilityAttributes]",
        "type": "object"
      },
      "JsonApiResource_DiscussionReactionAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DiscussionReactionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DiscussionReactionAttributes]",
        "type": "object"
      },
      "JsonApiResource_DiscussionResponseAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DiscussionResponseAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DiscussionResponseAttributes]",
        "type": "object"
      },
      "JsonApiResource_DiscussionUnpinAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DiscussionUnpinAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DiscussionUnpinAttributes]",
        "type": "object"
      },
      "JsonApiResource_DomainResolutionAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DomainResolutionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DomainResolutionAttributes]",
        "type": "object"
      },
      "JsonApiResource_DripCampaignOut_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DripCampaignOut"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DripCampaignOut]",
        "type": "object"
      },
      "JsonApiResource_DripEnrollmentOut_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DripEnrollmentOut"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DripEnrollmentOut]",
        "type": "object"
      },
      "JsonApiResource_DripStepOut_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/DripStepOut"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[DripStepOut]",
        "type": "object"
      },
      "JsonApiResource_ExternalProviderAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ExternalProviderAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ExternalProviderAttributes]",
        "type": "object"
      },
      "JsonApiResource_ExternalVideoEmbedAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ExternalVideoEmbedAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ExternalVideoEmbedAttributes]",
        "type": "object"
      },
      "JsonApiResource_FeedEventAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FeedEventAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[FeedEventAttributes]",
        "type": "object"
      },
      "JsonApiResource_FileAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[FileAttributes]",
        "type": "object"
      },
      "JsonApiResource_FileCardAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileCardAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[FileCardAttributes]",
        "type": "object"
      },
      "JsonApiResource_FileChapterAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileChapterAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[FileChapterAttributes]",
        "type": "object"
      },
      "JsonApiResource_FileReplacementAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FileReplacementAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[FileReplacementAttributes]",
        "type": "object"
      },
      "JsonApiResource_FolderAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/FolderAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[FolderAttributes]",
        "type": "object"
      },
      "JsonApiResource_GlobalSearchResultAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/GlobalSearchResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[GlobalSearchResultAttributes]",
        "type": "object"
      },
      "JsonApiResource_HubCustomDomainAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubCustomDomainAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[HubCustomDomainAttributes]",
        "type": "object"
      },
      "JsonApiResource_HubEmailStatsOut_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubEmailStatsOut"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[HubEmailStatsOut]",
        "type": "object"
      },
      "JsonApiResource_HubMediaAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubMediaAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[HubMediaAttributes]",
        "type": "object"
      },
      "JsonApiResource_HubMemberCountsAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubMemberCountsAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[HubMemberCountsAttributes]",
        "type": "object"
      },
      "JsonApiResource_HubMembershipAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubMembershipAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[HubMembershipAttributes]",
        "type": "object"
      },
      "JsonApiResource_HubPlaylistCardAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubPlaylistCardAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[HubPlaylistCardAttributes]",
        "type": "object"
      },
      "JsonApiResource_HubPlaylistItemCardAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/HubPlaylistItemCardAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[HubPlaylistItemCardAttributes]",
        "type": "object"
      },
      "JsonApiResource_LastOpenedAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/LastOpenedAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[LastOpenedAttributes]",
        "type": "object"
      },
      "JsonApiResource_MediaSearchResultAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MediaSearchResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[MediaSearchResultAttributes]",
        "type": "object"
      },
      "JsonApiResource_MemberDetailAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MemberDetailAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[MemberDetailAttributes]",
        "type": "object"
      },
      "JsonApiResource_MemberDirectoryAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MemberDirectoryAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[MemberDirectoryAttributes]",
        "type": "object"
      },
      "JsonApiResource_MemberFollowAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MemberFollowAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[MemberFollowAttributes]",
        "type": "object"
      },
      "JsonApiResource_MentionCandidateAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MentionCandidateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[MentionCandidateAttributes]",
        "type": "object"
      },
      "JsonApiResource_MessageResponseAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MessageResponseAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[MessageResponseAttributes]",
        "type": "object"
      },
      "JsonApiResource_ModerationActionAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ModerationActionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ModerationActionAttributes]",
        "type": "object"
      },
      "JsonApiResource_ModerationCountsAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ModerationCountsAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ModerationCountsAttributes]",
        "type": "object"
      },
      "JsonApiResource_NotificationAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/NotificationAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[NotificationAttributes]",
        "type": "object"
      },
      "JsonApiResource_NotificationCountsAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/NotificationCountsAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[NotificationCountsAttributes]",
        "type": "object"
      },
      "JsonApiResource_OAuthClientAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OAuthClientAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[OAuthClientAttributes]",
        "type": "object"
      },
      "JsonApiResource_OAuthClientCreateAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OAuthClientCreateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[OAuthClientCreateAttributes]",
        "type": "object"
      },
      "JsonApiResource_OAuthRedirectUriAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OAuthRedirectUriAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[OAuthRedirectUriAttributes]",
        "type": "object"
      },
      "JsonApiResource_PeerSpaceAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PeerSpaceAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[PeerSpaceAttributes]",
        "type": "object"
      },
      "JsonApiResource_PermissionAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PermissionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[PermissionAttributes]",
        "type": "object"
      },
      "JsonApiResource_PlatformAlertAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlatformAlertAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[PlatformAlertAttributes]",
        "type": "object"
      },
      "JsonApiResource_PlaylistAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlaylistAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[PlaylistAttributes]",
        "type": "object"
      },
      "JsonApiResource_PlaylistItemAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlaylistItemAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[PlaylistItemAttributes]",
        "type": "object"
      },
      "JsonApiResource_PlaylistItemPlaybackAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlaylistItemPlaybackAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[PlaylistItemPlaybackAttributes]",
        "type": "object"
      },
      "JsonApiResource_PortalBootstrapAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PortalBootstrapAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[PortalBootstrapAttributes]",
        "type": "object"
      },
      "JsonApiResource_RoleAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/RoleAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[RoleAttributes]",
        "type": "object"
      },
      "JsonApiResource_SavedItemAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SavedItemAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[SavedItemAttributes]",
        "type": "object"
      },
      "JsonApiResource_SearchResultAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SearchResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[SearchResultAttributes]",
        "type": "object"
      },
      "JsonApiResource_SelfHubMembershipAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SelfHubMembershipAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[SelfHubMembershipAttributes]",
        "type": "object"
      },
      "JsonApiResource_SpaceMemberStateAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SpaceMemberStateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[SpaceMemberStateAttributes]",
        "type": "object"
      },
      "JsonApiResource_SpaceResponseAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SpaceResponseAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[SpaceResponseAttributes]",
        "type": "object"
      },
      "JsonApiResource_TeamAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TeamAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[TeamAttributes]",
        "type": "object"
      },
      "JsonApiResource_TeamMemberAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TeamMemberAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[TeamMemberAttributes]",
        "type": "object"
      },
      "JsonApiResource_UnreadCountAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/UnreadCountAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[UnreadCountAttributes]",
        "type": "object"
      },
      "JsonApiResource_UnreadTotalAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/UnreadTotalAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[UnreadTotalAttributes]",
        "type": "object"
      },
      "JsonApiResource_UserAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/UserAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[UserAttributes]",
        "type": "object"
      },
      "JsonApiResource_VapidKeyAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/VapidKeyAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[VapidKeyAttributes]",
        "type": "object"
      },
      "JsonApiResource_VerifiedDomainAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/VerifiedDomainAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[VerifiedDomainAttributes]",
        "type": "object"
      },
      "JsonApiResource_WebPushSubscriptionAttributes_": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/WebPushSubscriptionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[WebPushSubscriptionAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AchievementAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AchievementAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AchievementAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AchievementEarnAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AchievementEarnAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AchievementEarnAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AchievementHubAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AchievementHubAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AchievementHubAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AdminModerationReportAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AdminModerationReportAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AdminModerationReportAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AdminTeamTranscriptionReadAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AdminTeamTranscriptionReadAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AdminTeamTranscriptionReadAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AnonDiscussionAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AnonDiscussionAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AnonDiscussionAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ApiKeyAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ApiKeyAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ApiKeyAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ApiKeyCreateAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ApiKeyCreateAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ApiKeyCreateAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AttachmentFinalizeAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AttachmentFinalizeAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AttachmentFinalizeAttributes]",
        "type": "object"
      },
      "JsonApiResponse_AttachmentUploadAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_AttachmentUploadAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[AttachmentUploadAttributes]",
        "type": "object"
      },
      "JsonApiResponse_CommunityProfileResponseAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_CommunityProfileResponseAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[CommunityProfileResponseAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ConversationAudienceAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ConversationAudienceAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ConversationAudienceAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ConversationResponseAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ConversationResponseAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ConversationResponseAttributes]",
        "type": "object"
      },
      "JsonApiResponse_DirectMessageCapabilityAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DirectMessageCapabilityAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DirectMessageCapabilityAttributes]",
        "type": "object"
      },
      "JsonApiResponse_DiscussionReactionAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DiscussionReactionAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DiscussionReactionAttributes]",
        "type": "object"
      },
      "JsonApiResponse_DiscussionResponseAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DiscussionResponseAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DiscussionResponseAttributes]",
        "type": "object"
      },
      "JsonApiResponse_DiscussionUnpinAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DiscussionUnpinAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DiscussionUnpinAttributes]",
        "type": "object"
      },
      "JsonApiResponse_DomainResolutionAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DomainResolutionAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DomainResolutionAttributes]",
        "type": "object"
      },
      "JsonApiResponse_DripCampaignOut_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DripCampaignOut_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DripCampaignOut]",
        "type": "object"
      },
      "JsonApiResponse_DripEnrollmentOut_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DripEnrollmentOut_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DripEnrollmentOut]",
        "type": "object"
      },
      "JsonApiResponse_DripStepOut_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_DripStepOut_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[DripStepOut]",
        "type": "object"
      },
      "JsonApiResponse_ExternalProviderAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ExternalProviderAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ExternalProviderAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ExternalVideoEmbedAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ExternalVideoEmbedAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ExternalVideoEmbedAttributes]",
        "type": "object"
      },
      "JsonApiResponse_HubCustomDomainAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_HubCustomDomainAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[HubCustomDomainAttributes]",
        "type": "object"
      },
      "JsonApiResponse_HubEmailStatsOut_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_HubEmailStatsOut_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[HubEmailStatsOut]",
        "type": "object"
      },
      "JsonApiResponse_HubMemberCountsAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_HubMemberCountsAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[HubMemberCountsAttributes]",
        "type": "object"
      },
      "JsonApiResponse_HubMembershipAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_HubMembershipAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[HubMembershipAttributes]",
        "type": "object"
      },
      "JsonApiResponse_MemberDetailAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_MemberDetailAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[MemberDetailAttributes]",
        "type": "object"
      },
      "JsonApiResponse_MemberFollowAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_MemberFollowAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[MemberFollowAttributes]",
        "type": "object"
      },
      "JsonApiResponse_MessageResponseAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_MessageResponseAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[MessageResponseAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ModerationActionAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ModerationActionAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ModerationActionAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ModerationCountsAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_ModerationCountsAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ModerationCountsAttributes]",
        "type": "object"
      },
      "JsonApiResponse_NotificationAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_NotificationAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[NotificationAttributes]",
        "type": "object"
      },
      "JsonApiResponse_OAuthClientAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_OAuthClientAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[OAuthClientAttributes]",
        "type": "object"
      },
      "JsonApiResponse_OAuthClientCreateAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_OAuthClientCreateAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[OAuthClientCreateAttributes]",
        "type": "object"
      },
      "JsonApiResponse_OAuthRedirectUriAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_OAuthRedirectUriAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[OAuthRedirectUriAttributes]",
        "type": "object"
      },
      "JsonApiResponse_PortalBootstrapAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_PortalBootstrapAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[PortalBootstrapAttributes]",
        "type": "object"
      },
      "JsonApiResponse_ReadReceiptAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/app__infrastructure__base_schema__JsonApiResource_ReadReceiptAttributes___1"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[ReadReceiptAttributes]",
        "type": "object"
      },
      "JsonApiResponse_RoleAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_RoleAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[RoleAttributes]",
        "type": "object"
      },
      "JsonApiResponse_SavedItemAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_SavedItemAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[SavedItemAttributes]",
        "type": "object"
      },
      "JsonApiResponse_SelfHubMembershipAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_SelfHubMembershipAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[SelfHubMembershipAttributes]",
        "type": "object"
      },
      "JsonApiResponse_SpaceMemberStateAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_SpaceMemberStateAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[SpaceMemberStateAttributes]",
        "type": "object"
      },
      "JsonApiResponse_SpaceResponseAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_SpaceResponseAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[SpaceResponseAttributes]",
        "type": "object"
      },
      "JsonApiResponse_TeamAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_TeamAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[TeamAttributes]",
        "type": "object"
      },
      "JsonApiResponse_TeamMemberAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_TeamMemberAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[TeamMemberAttributes]",
        "type": "object"
      },
      "JsonApiResponse_UnreadTotalAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_UnreadTotalAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[UnreadTotalAttributes]",
        "type": "object"
      },
      "JsonApiResponse_UserAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_UserAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[UserAttributes]",
        "type": "object"
      },
      "JsonApiResponse_VapidKeyAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_VapidKeyAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[VapidKeyAttributes]",
        "type": "object"
      },
      "JsonApiResponse_VerifiedDomainAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_VerifiedDomainAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[VerifiedDomainAttributes]",
        "type": "object"
      },
      "JsonApiResponse_WebPushSubscriptionAttributes_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_WebPushSubscriptionAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "JsonApiResponse[WebPushSubscriptionAttributes]",
        "type": "object"
      },
      "JsonApiToOneRelationship": {
        "description": "A JSON:API to-one relationship: {data: {type, id} | null}.",
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiResourceLinkage"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "JsonApiToOneRelationship",
        "type": "object"
      },
      "LastEntryPreview": {
        "properties": {
          "author_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Contact Id"
          },
          "author_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Display Name"
          },
          "body_preview": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body Preview"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "entry_kind": {
            "$ref": "#/components/schemas/MessageEntryKind"
          },
          "event": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MessageEventData"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "entry_kind"
        ],
        "title": "LastEntryPreview",
        "type": "object"
      },
      "LastNameConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "last_name",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/LastNameValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "LastNameConditionCompiled",
        "type": "object"
      },
      "LastNameConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "last_name",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/LastNameValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "LastNameConditionIn",
        "type": "object"
      },
      "LastNameValue": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "title": "LastNameValue",
        "type": "object"
      },
      "LastOpenedAttributes": {
        "description": "Attributes for the notification_last_opens resource.",
        "properties": {
          "last_opened_at": {
            "format": "date-time",
            "title": "Last Opened At",
            "type": "string"
          }
        },
        "required": [
          "last_opened_at"
        ],
        "title": "LastOpenedAttributes",
        "type": "object"
      },
      "LastOpenedResponse": {
        "description": "Response for PUT /notifications/last-opened-at.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_LastOpenedAttributes_"
          }
        },
        "required": [
          "data"
        ],
        "title": "LastOpenedResponse",
        "type": "object"
      },
      "LoginPageSettings": {
        "additionalProperties": false,
        "description": "Whitelisted page.settings keys for a login page.",
        "properties": {
          "show_registration_link": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Show Registration Link"
          },
          "show_social_login": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Show Social Login"
          }
        },
        "title": "LoginPageSettings",
        "type": "object"
      },
      "LoginRequest": {
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "password": {
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "email",
          "password"
        ],
        "title": "LoginRequest",
        "type": "object"
      },
      "LoginRequestAttributes": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "password": {
            "maxLength": 4096,
            "minLength": 1,
            "title": "Password",
            "type": "string"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "team_id": {
            "anyOf": [
              {
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "required": [
          "email",
          "password"
        ],
        "title": "LoginRequestAttributes",
        "type": "object"
      },
      "LoginRequestEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LoginRequestResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "LoginRequestEnvelope",
        "type": "object"
      },
      "LoginRequestResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/LoginRequestAttributes"
          },
          "type": {
            "const": "login_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "LoginRequestResource",
        "type": "object"
      },
      "LogoutRequestAttributes": {
        "additionalProperties": false,
        "properties": {
          "refresh_token": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Token"
          }
        },
        "title": "LogoutRequestAttributes",
        "type": "object"
      },
      "LogoutRequestEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LogoutRequestResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "LogoutRequestEnvelope",
        "type": "object"
      },
      "LogoutRequestResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/LogoutRequestAttributes"
          },
          "type": {
            "const": "logout_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "LogoutRequestResource",
        "type": "object"
      },
      "MagicLinkConsumeAttributes": {
        "additionalProperties": false,
        "properties": {
          "token": {
            "maxLength": 512,
            "minLength": 1,
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "title": "MagicLinkConsumeAttributes",
        "type": "object"
      },
      "MagicLinkConsumeEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MagicLinkConsumeResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "MagicLinkConsumeEnvelope",
        "type": "object"
      },
      "MagicLinkConsumeResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MagicLinkConsumeAttributes"
          },
          "type": {
            "const": "magic_link_consumes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "MagicLinkConsumeResource",
        "type": "object"
      },
      "MagicLinkRequestAttributes": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "redirect_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Redirect Url"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "team_id": {
            "anyOf": [
              {
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "required": [
          "email"
        ],
        "title": "MagicLinkRequestAttributes",
        "type": "object"
      },
      "MagicLinkRequestEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MagicLinkRequestResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "MagicLinkRequestEnvelope",
        "type": "object"
      },
      "MagicLinkRequestResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MagicLinkRequestAttributes"
          },
          "type": {
            "const": "magic_link_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "MagicLinkRequestResource",
        "type": "object"
      },
      "ManualEnrollAttributes": {
        "additionalProperties": false,
        "properties": {
          "team_contact_id": {
            "title": "Team Contact Id",
            "type": "string"
          }
        },
        "required": [
          "team_contact_id"
        ],
        "title": "ManualEnrollAttributes",
        "type": "object"
      },
      "ManualEnrollBody": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ManualEnrollResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ManualEnrollBody",
        "type": "object"
      },
      "ManualEnrollResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ManualEnrollAttributes"
          },
          "type": {
            "const": "automation_enrollments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ManualEnrollResource",
        "type": "object"
      },
      "MarkAllReadEnvelope": {
        "description": "JSON:API envelope for POST .../mark-all-read.\n\ndata.type must be 'conversation_read_receipts'.\ndata.attributes.up_to is an optional TZ-aware ISO-8601 datetime.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_MarkAllReadData"
          }
        },
        "required": [
          "data"
        ],
        "title": "MarkAllReadEnvelope",
        "type": "object"
      },
      "MediaSearchListResponse": {
        "description": "Collection JSON:API response wrapping a list of MediaSearchResultResources.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_MediaSearchResultAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "$ref": "#/components/schemas/MediaSearchMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "MediaSearchListResponse",
        "type": "object"
      },
      "MediaSearchMeta": {
        "description": "Top-level meta block for media search list responses.\n\nDocuments cap/pagination so they appear in the generated OpenAPI schema.",
        "properties": {
          "cap": {
            "title": "Cap",
            "type": "integer"
          },
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "is_capped": {
            "title": "Is Capped",
            "type": "boolean"
          },
          "pagination": {
            "const": "top_n",
            "title": "Pagination",
            "type": "string"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "has_more",
          "is_capped",
          "cap",
          "pagination"
        ],
        "title": "MediaSearchMeta",
        "type": "object"
      },
      "MediaSearchResultAttributes": {
        "description": "Serialisable attributes of a media search result resource.",
        "properties": {
          "asset_kind": {
            "anyOf": [
              {
                "enum": [
                  "video",
                  "audio",
                  "pdf",
                  "image",
                  "document"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Asset Kind"
          },
          "content_node_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Node Id"
          },
          "cover_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Url"
          },
          "cover_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Expiry timestamp for cover_url. Clients must re-fetch after this to get a fresh signed URL. Read-only.",
            "readOnly": true,
            "title": "Cover Url Expires At"
          },
          "end_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Seconds"
          },
          "highlights": {
            "items": {
              "additionalProperties": {
                "type": "integer"
              },
              "type": "object"
            },
            "title": "Highlights",
            "type": "array"
          },
          "lexical_rank": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lexical Rank"
          },
          "media_id": {
            "title": "Media Id",
            "type": "string"
          },
          "rrf_score": {
            "title": "Rrf Score",
            "type": "number"
          },
          "semantic_rank": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Semantic Rank"
          },
          "share_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Share Url"
          },
          "snippet": {
            "title": "Snippet",
            "type": "string"
          },
          "source_type": {
            "title": "Source Type",
            "type": "string"
          },
          "start_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Seconds"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "media_id",
          "title",
          "content_node_id",
          "source_type",
          "snippet",
          "highlights",
          "start_seconds",
          "end_seconds",
          "share_url",
          "rrf_score",
          "lexical_rank",
          "semantic_rank"
        ],
        "title": "MediaSearchResultAttributes",
        "type": "object"
      },
      "MemberAvatarPreviewItem": {
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url"
          },
          "photo_thumbnail_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url Expires At"
          }
        },
        "required": [
          "contact_id"
        ],
        "title": "MemberAvatarPreviewItem",
        "type": "object"
      },
      "MemberCountAttributes": {
        "additionalProperties": false,
        "properties": {
          "computed_at": {
            "format": "date-time",
            "title": "Computed At",
            "type": "string"
          },
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          }
        },
        "required": [
          "count",
          "computed_at"
        ],
        "title": "MemberCountAttributes",
        "type": "object"
      },
      "MemberCountResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MemberCountAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "segment_member_count",
            "default": "segment_member_count",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "MemberCountResource",
        "type": "object"
      },
      "MemberCountResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MemberCountResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "MemberCountResponse",
        "type": "object"
      },
      "MemberDetailAttributes": {
        "properties": {
          "banner_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Color"
          },
          "banner_scheme": {
            "anyOf": [
              {
                "enum": [
                  "split",
                  "complementary",
                  "analogous",
                  "triadic",
                  "monochrome",
                  "warm"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Scheme"
          },
          "banner_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Url"
          },
          "banner_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Url Expires At"
          },
          "banner_variant": {
            "anyOf": [
              {
                "enum": [
                  "gradient",
                  "image"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Variant"
          },
          "bio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bio"
          },
          "can_direct_message": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Can Direct Message"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "hide_activity": {
            "title": "Hide Activity",
            "type": "boolean"
          },
          "hide_profile": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hide Profile"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "membership_status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "banned",
                  "soft_banned",
                  "left"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Status"
          },
          "photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url"
          },
          "photo_thumbnail_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url Expires At"
          },
          "photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url"
          },
          "photo_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url Expires At"
          },
          "role": {
            "anyOf": [
              {
                "enum": [
                  "owner",
                  "admin",
                  "moderator",
                  "member"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          }
        },
        "required": [
          "hide_activity"
        ],
        "title": "MemberDetailAttributes",
        "type": "object"
      },
      "MemberDirectoryAttributes": {
        "properties": {
          "bio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bio"
          },
          "can_direct_message": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Can Direct Message"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "hide_profile": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hide Profile"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "membership_status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "banned",
                  "soft_banned",
                  "left"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Membership Status"
          },
          "photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url"
          },
          "photo_thumbnail_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url Expires At"
          },
          "photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url"
          },
          "photo_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url Expires At"
          },
          "role": {
            "anyOf": [
              {
                "enum": [
                  "owner",
                  "admin",
                  "moderator",
                  "member"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          }
        },
        "title": "MemberDirectoryAttributes",
        "type": "object"
      },
      "MemberDirectoryListMeta": {
        "properties": {
          "has_more": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has More"
          },
          "member_avatar_preview": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/MemberAvatarPreviewItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Member Avatar Preview"
          },
          "moderator_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Moderator Count"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "online_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Online Count"
          },
          "total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total"
          }
        },
        "title": "MemberDirectoryListMeta",
        "type": "object"
      },
      "MemberDirectoryListResponse": {
        "description": "members list response with typed meta (overrides the generic dict meta).",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_MemberDirectoryAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MemberDirectoryListMeta"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "title": "MemberDirectoryListResponse",
        "type": "object"
      },
      "MemberFollowAttributes": {
        "description": "Wire-shape attributes for a member_follows resource.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "followed_contact_id": {
            "title": "Followed Contact Id",
            "type": "string"
          },
          "follower_contact_id": {
            "title": "Follower Contact Id",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "follower_contact_id",
          "followed_contact_id",
          "created_at"
        ],
        "title": "MemberFollowAttributes",
        "type": "object"
      },
      "MemberProfileAttributesResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HubConfigResource"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/DefinitionResource"
                },
                {
                  "$ref": "#/components/schemas/OptionResource"
                },
                {
                  "$ref": "#/components/schemas/ContactValueResource"
                }
              ]
            },
            "title": "Included",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "included",
          "meta"
        ],
        "title": "MemberProfileAttributesResponse",
        "type": "object"
      },
      "MentionCandidateAttributes": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Thumbnail Url"
          }
        },
        "required": [
          "display_name"
        ],
        "title": "MentionCandidateAttributes",
        "type": "object"
      },
      "MessageEditEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_MessageEditData"
          }
        },
        "required": [
          "data"
        ],
        "title": "MessageEditEnvelope",
        "type": "object"
      },
      "MessageEntryKind": {
        "enum": [
          "text",
          "conversation_title_changed"
        ],
        "title": "MessageEntryKind",
        "type": "string"
      },
      "MessageEventData": {
        "properties": {
          "previous_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Title"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "previous_title",
          "title"
        ],
        "title": "MessageEventData",
        "type": "object"
      },
      "MessageReadEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_MessageReadData"
          }
        },
        "required": [
          "data"
        ],
        "title": "MessageReadEnvelope",
        "type": "object"
      },
      "MessageReplyBlockAttributes": {
        "additionalProperties": false,
        "properties": {
          "author_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Contact Id"
          },
          "author_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Display Name"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "state": {
            "enum": [
              "visible",
              "deleted",
              "unavailable"
            ],
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "state"
        ],
        "title": "MessageReplyBlockAttributes",
        "type": "object"
      },
      "MessageResponseAttributes": {
        "properties": {
          "attachments": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RenderableAttachment"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attachments"
          },
          "author_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Contact Id"
          },
          "author_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Display Name"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "conversation_id": {
            "title": "Conversation Id",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "edited_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Edited At"
          },
          "entry_kind": {
            "$ref": "#/components/schemas/MessageEntryKind"
          },
          "event": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MessageEventData"
              },
              {
                "type": "null"
              }
            ]
          },
          "external_video_embeds": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Video Embeds"
          },
          "is_deleted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Deleted"
          },
          "reaction_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reaction Count"
          },
          "reactions": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/app__community__schemas__ReactionGroupAttributes"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reactions"
          },
          "reply_to": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MessageReplyBlockAttributes"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "conversation_id",
          "entry_kind"
        ],
        "title": "MessageResponseAttributes",
        "type": "object"
      },
      "MessageSendEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_MessageSendData"
          }
        },
        "required": [
          "data"
        ],
        "title": "MessageSendEnvelope",
        "type": "object"
      },
      "ModerationActionAttributes": {
        "properties": {
          "action_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action Type"
          },
          "actor": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actor"
          },
          "actor_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actor Display Name"
          },
          "actor_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actor Id"
          },
          "actor_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actor Type"
          },
          "admin_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Admin User Id"
          },
          "api_key_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Key Id"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "report_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Report Id"
          },
          "target_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Id"
          },
          "target_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Type"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "title": "ModerationActionAttributes",
        "type": "object"
      },
      "ModerationContentAttributes": {
        "properties": {
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "content_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Id"
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "discussion_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussion Id"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "is_removed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Removed"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "removed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Removed At"
          },
          "removed_by": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Removed By"
          },
          "space_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Space Id"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "ModerationContentAttributes",
        "type": "object"
      },
      "ModerationContentRelationships": {
        "properties": {
          "author": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiToOneRelationship"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "ModerationContentRelationships",
        "type": "object"
      },
      "ModerationContentResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ModerationContentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "relationships": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ModerationContentRelationships"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "ModerationContentResource",
        "type": "object"
      },
      "ModerationContentResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ModerationContentResource"
          },
          "included": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ContactIncludedResource"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          }
        },
        "required": [
          "data"
        ],
        "title": "ModerationContentResponse",
        "type": "object"
      },
      "ModerationCountsAttributes": {
        "properties": {
          "banned": {
            "title": "Banned",
            "type": "integer"
          },
          "queue": {
            "title": "Queue",
            "type": "integer"
          },
          "removed": {
            "title": "Removed",
            "type": "integer"
          }
        },
        "required": [
          "queue",
          "removed",
          "banned"
        ],
        "title": "ModerationCountsAttributes",
        "type": "object"
      },
      "ModerationReportAttributes": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "reason_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason Id"
          },
          "reason_ids": {
            "items": {
              "type": "string"
            },
            "title": "Reason Ids",
            "type": "array"
          },
          "reportable_id": {
            "title": "Reportable Id",
            "type": "string"
          },
          "reportable_type": {
            "title": "Reportable Type",
            "type": "string"
          },
          "resolution": {
            "title": "Resolution",
            "type": "string"
          },
          "resolved_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "reportable_type",
          "reportable_id",
          "reason_id",
          "reason_ids",
          "notes",
          "status",
          "resolution",
          "resolved_at",
          "created_at"
        ],
        "title": "ModerationReportAttributes",
        "type": "object"
      },
      "ModerationReportResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ModerationReportAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "moderation_reports",
            "default": "moderation_reports",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ModerationReportResource",
        "type": "object"
      },
      "ModerationReportResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ModerationReportResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ModerationReportResponse",
        "type": "object"
      },
      "ModerationReportSummaryAttributes": {
        "description": "Aggregate-only report summary for ONE moderation target.\n\nDeliberately contains no reporter identity, reporter note, raw report row,\nor moderation action \u2014 only counts and reason buckets. report_count spans\nALL report statuses (pending, dismissed, actioned), matching the moderation\nconsole's removed-content count.",
        "properties": {
          "reason_breakdown": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/ReasonBreakdownItem"
            },
            "title": "Reason Breakdown",
            "type": "array"
          },
          "report_count": {
            "title": "Report Count",
            "type": "integer"
          },
          "reportable_id": {
            "title": "Reportable Id",
            "type": "string"
          },
          "reportable_type": {
            "title": "Reportable Type",
            "type": "string"
          }
        },
        "required": [
          "reportable_type",
          "reportable_id",
          "report_count"
        ],
        "title": "ModerationReportSummaryAttributes",
        "type": "object"
      },
      "ModerationReportSummaryResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ModerationReportSummaryAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "ModerationReportSummaryResource",
        "type": "object"
      },
      "ModerationReportSummaryResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ModerationReportSummaryResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ModerationReportSummaryResponse",
        "type": "object"
      },
      "MultipartCompleteRequest": {
        "description": "Request body for POST /files/{id}/multipart/{upload_id}/complete.",
        "properties": {
          "parts": {
            "items": {
              "$ref": "#/components/schemas/MultipartPart"
            },
            "title": "Parts",
            "type": "array"
          }
        },
        "required": [
          "parts"
        ],
        "title": "MultipartCompleteRequest",
        "type": "object"
      },
      "MultipartPart": {
        "properties": {
          "etag": {
            "description": "ETag returned by S3 for this part.",
            "title": "Etag",
            "type": "string"
          },
          "part_number": {
            "description": "Part number (1-based).",
            "maximum": 2147483647.0,
            "minimum": 1.0,
            "title": "Part Number",
            "type": "integer"
          }
        },
        "required": [
          "part_number",
          "etag"
        ],
        "title": "MultipartPart",
        "type": "object"
      },
      "MuteAttributes": {
        "description": "Attributes for a mute/unmute request.",
        "properties": {
          "is_muted": {
            "title": "Is Muted",
            "type": "boolean"
          }
        },
        "required": [
          "is_muted"
        ],
        "title": "MuteAttributes",
        "type": "object"
      },
      "MuteEnvelope": {
        "description": "JSON:API PATCH body: {data: {type: 'space_member_states', attributes: {is_muted}}}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MuteResourceData"
          }
        },
        "required": [
          "data"
        ],
        "title": "MuteEnvelope",
        "type": "object"
      },
      "MuteResourceData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/MuteAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "MuteResourceData",
        "type": "object"
      },
      "NotificationActor": {
        "description": "Embedded actor object in notification attributes.",
        "properties": {
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "contact_id",
          "name"
        ],
        "title": "NotificationActor",
        "type": "object"
      },
      "NotificationAttributes": {
        "properties": {
          "actor": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NotificationActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "actors": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/NotificationActor"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actors"
          },
          "category": {
            "title": "Category",
            "type": "string"
          },
          "count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Count"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deep_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deep Link"
          },
          "highlight": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlight"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "preview": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preview"
          },
          "priority": {
            "title": "Priority",
            "type": "string"
          },
          "read": {
            "title": "Read",
            "type": "boolean"
          },
          "subject": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NotificationSubject"
              },
              {
                "type": "null"
              }
            ]
          },
          "target": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NotificationTarget"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "category",
          "kind",
          "priority",
          "read",
          "created_at"
        ],
        "title": "NotificationAttributes",
        "type": "object"
      },
      "NotificationCategoryParam": {
        "enum": [
          "transactional",
          "content",
          "community",
          "moderation"
        ],
        "title": "NotificationCategoryParam",
        "type": "string"
      },
      "NotificationCountsAttributes": {
        "properties": {
          "categories": {
            "additionalProperties": {
              "$ref": "#/components/schemas/CategoryCount"
            },
            "title": "Categories",
            "type": "object"
          },
          "kinds": {
            "additionalProperties": {
              "$ref": "#/components/schemas/CategoryCount"
            },
            "title": "Kinds",
            "type": "object"
          },
          "unread": {
            "title": "Unread",
            "type": "integer"
          }
        },
        "required": [
          "unread",
          "categories",
          "kinds"
        ],
        "title": "NotificationCountsAttributes",
        "type": "object"
      },
      "NotificationCountsResponse": {
        "description": "Response for GET /notifications/counts.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_NotificationCountsAttributes_"
          }
        },
        "required": [
          "data"
        ],
        "title": "NotificationCountsResponse",
        "type": "object"
      },
      "NotificationListMeta": {
        "properties": {
          "page": {
            "$ref": "#/components/schemas/NotificationPageMeta"
          },
          "unread_count": {
            "title": "Unread Count",
            "type": "integer"
          }
        },
        "required": [
          "unread_count",
          "page"
        ],
        "title": "NotificationListMeta",
        "type": "object"
      },
      "NotificationListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_NotificationAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/NotificationListMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "NotificationListResponse",
        "type": "object"
      },
      "NotificationPageMeta": {
        "description": "Nested page info inside list meta.",
        "properties": {
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "has_more"
        ],
        "title": "NotificationPageMeta",
        "type": "object"
      },
      "NotificationPrefsUpdateRequest": {
        "additionalProperties": false,
        "description": "Request body for PATCH /notification-prefs.\n\nThe service validates that all keys are in the allowed set\n{email, daily_digest, mobile, push}. Unknown keys raise\nHubMembershipsValidationError \u2192 422.",
        "properties": {
          "prefs": {
            "additionalProperties": {
              "type": "boolean"
            },
            "title": "Prefs",
            "type": "object"
          }
        },
        "required": [
          "prefs"
        ],
        "title": "NotificationPrefsUpdateRequest",
        "type": "object"
      },
      "NotificationSubject": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id"
        ],
        "title": "NotificationSubject",
        "type": "object"
      },
      "NotificationTarget": {
        "description": "Embedded target object in notification attributes.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "label"
        ],
        "title": "NotificationTarget",
        "type": "object"
      },
      "OAuthClientAttributes": {
        "description": "Public attributes returned on list and retrieve endpoints.\n\nNever includes client_secret_hash or any other secret material.",
        "properties": {
          "allowed_scopes": {
            "items": {
              "type": "string"
            },
            "title": "Allowed Scopes",
            "type": "array"
          },
          "brand_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Brand Label"
          },
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "first_party": {
            "title": "First Party",
            "type": "boolean"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_public": {
            "title": "Is Public",
            "type": "boolean"
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "client_id",
          "name",
          "is_public",
          "first_party",
          "allowed_scopes",
          "hub_id",
          "team_id"
        ],
        "title": "OAuthClientAttributes",
        "type": "object"
      },
      "OAuthClientCreateAttributes": {
        "description": "Attributes returned ONLY on the 201 create response.\n\nIncludes `client_secret` \u2014 the full plaintext secret, returned once and\nnever again. None for public (PKCE-only) clients.",
        "properties": {
          "allowed_scopes": {
            "items": {
              "type": "string"
            },
            "title": "Allowed Scopes",
            "type": "array"
          },
          "brand_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Brand Label"
          },
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Secret"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "first_party": {
            "title": "First Party",
            "type": "boolean"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_public": {
            "title": "Is Public",
            "type": "boolean"
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "client_id",
          "name",
          "is_public",
          "first_party",
          "allowed_scopes",
          "hub_id",
          "team_id"
        ],
        "title": "OAuthClientCreateAttributes",
        "type": "object"
      },
      "OAuthClientCreateRequest": {
        "additionalProperties": false,
        "description": "Request body for registering a new OAuth client.\n\nAccepts EITHER a flat body OR a full JSON:API envelope.\n\nNOTE: first_party and allowed_scopes are deliberately absent \u2014 only\nplatform-admins can set those via PlatformOAuthClientUpdateRequest.\n`extra=\"forbid\"` makes the team-owner endpoint REJECT unknown fields\n(e.g. a smuggled `first_party`/`allowed_scopes`) with 422 rather than\nsilently ignoring them. The before-validator strips the JSON:API envelope\nso `data`/`type` wrapper keys never reach this forbid check.",
        "properties": {
          "brand_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Brand Label"
          },
          "is_public": {
            "default": false,
            "title": "Is Public",
            "type": "boolean"
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "redirect_uris": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Redirect Uris",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "OAuthClientCreateRequest",
        "type": "object"
      },
      "OAuthRedirectUriAttributes": {
        "description": "Attributes for an oauth_client_redirect_uris resource.",
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "redirect_uri",
          "client_id"
        ],
        "title": "OAuthRedirectUriAttributes",
        "type": "object"
      },
      "OAuthRedirectUriCreateRequest": {
        "additionalProperties": false,
        "description": "Request body for adding a redirect URI.\n\nAccepts flat {redirect_uri: ...} or JSON:API envelope. `extra=\"forbid\"`\nrejects unknown fields with 422; the before-validator strips the envelope\nwrapper so `data`/`type` keys never reach the forbid check.",
        "properties": {
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          }
        },
        "required": [
          "redirect_uri"
        ],
        "title": "OAuthRedirectUriCreateRequest",
        "type": "object"
      },
      "OAuthTokenResponse": {
        "description": "Token endpoint success response (RFC 6749 \u00a74.1.4 + OIDC \u00a73.1.3.3).\n\n``scope`` is the space-delimited set of granted scopes (RFC 6749 \u00a75.1). On a\nrefresh the originally granted scope is carried forward verbatim \u2014 never\nwidened.",
        "properties": {
          "access_token": {
            "title": "Access Token",
            "type": "string"
          },
          "expires_in": {
            "title": "Expires In",
            "type": "integer"
          },
          "id_token": {
            "title": "Id Token",
            "type": "string"
          },
          "refresh_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Token"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          },
          "token_type": {
            "default": "Bearer",
            "title": "Token Type",
            "type": "string"
          }
        },
        "required": [
          "access_token",
          "id_token",
          "expires_in",
          "scope"
        ],
        "title": "OAuthTokenResponse",
        "type": "object"
      },
      "OnboardingLinkAttributes": {
        "additionalProperties": false,
        "properties": {
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "refresh_url": {
            "title": "Refresh Url",
            "type": "string"
          },
          "return_url": {
            "title": "Return Url",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "return_url",
          "refresh_url"
        ],
        "title": "OnboardingLinkAttributes",
        "type": "object"
      },
      "OnboardingLinkData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OnboardingLinkAttributes"
          },
          "type": {
            "const": "onboarding_links",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "OnboardingLinkData",
        "type": "object"
      },
      "OnboardingLinkRequest": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OnboardingLinkData"
          }
        },
        "required": [
          "data"
        ],
        "title": "OnboardingLinkRequest",
        "type": "object"
      },
      "OpenIdConfiguration": {
        "description": "OIDC Provider Metadata (RFC 8414 + OIDC Discovery 1.0 \u00a73).\n\nAll fields are snake_case (the OIDC spec uses snake_case natively).\nThis model exists solely to give the discovery route a response_model so\nthat OpenAPI/codegen sees the shape \u2014 it is NOT a JSON:API resource.",
        "properties": {
          "authorization_endpoint": {
            "title": "Authorization Endpoint",
            "type": "string"
          },
          "authorization_response_iss_parameter_supported": {
            "title": "Authorization Response Iss Parameter Supported",
            "type": "boolean"
          },
          "claims_supported": {
            "items": {
              "type": "string"
            },
            "title": "Claims Supported",
            "type": "array"
          },
          "code_challenge_methods_supported": {
            "items": {
              "type": "string"
            },
            "title": "Code Challenge Methods Supported",
            "type": "array"
          },
          "grant_types_supported": {
            "items": {
              "type": "string"
            },
            "title": "Grant Types Supported",
            "type": "array"
          },
          "id_token_signing_alg_values_supported": {
            "items": {
              "type": "string"
            },
            "title": "Id Token Signing Alg Values Supported",
            "type": "array"
          },
          "issuer": {
            "title": "Issuer",
            "type": "string"
          },
          "jwks_uri": {
            "title": "Jwks Uri",
            "type": "string"
          },
          "prompt_values_supported": {
            "items": {
              "type": "string"
            },
            "title": "Prompt Values Supported",
            "type": "array"
          },
          "response_modes_supported": {
            "items": {
              "type": "string"
            },
            "title": "Response Modes Supported",
            "type": "array"
          },
          "response_types_supported": {
            "items": {
              "type": "string"
            },
            "title": "Response Types Supported",
            "type": "array"
          },
          "revocation_endpoint": {
            "title": "Revocation Endpoint",
            "type": "string"
          },
          "scopes_supported": {
            "items": {
              "type": "string"
            },
            "title": "Scopes Supported",
            "type": "array"
          },
          "subject_types_supported": {
            "items": {
              "type": "string"
            },
            "title": "Subject Types Supported",
            "type": "array"
          },
          "token_endpoint": {
            "title": "Token Endpoint",
            "type": "string"
          },
          "token_endpoint_auth_methods_supported": {
            "items": {
              "type": "string"
            },
            "title": "Token Endpoint Auth Methods Supported",
            "type": "array"
          },
          "userinfo_endpoint": {
            "title": "Userinfo Endpoint",
            "type": "string"
          }
        },
        "required": [
          "issuer",
          "authorization_endpoint",
          "token_endpoint",
          "userinfo_endpoint",
          "revocation_endpoint",
          "jwks_uri",
          "response_types_supported",
          "response_modes_supported",
          "grant_types_supported",
          "scopes_supported",
          "claims_supported",
          "subject_types_supported",
          "id_token_signing_alg_values_supported",
          "token_endpoint_auth_methods_supported",
          "code_challenge_methods_supported",
          "authorization_response_iss_parameter_supported",
          "prompt_values_supported"
        ],
        "title": "OpenIdConfiguration",
        "type": "object"
      },
      "OptionAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "definition_id": {
            "title": "Definition Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "definition_id",
          "slug",
          "label",
          "position",
          "created_at",
          "updated_at"
        ],
        "title": "OptionAttributes",
        "type": "object"
      },
      "OptionCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Label",
            "type": "string"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "slug": {
            "maxLength": 80,
            "minLength": 1,
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "label"
        ],
        "title": "OptionCreateAttributes",
        "type": "object"
      },
      "OptionCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OptionCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OptionCreateEnvelope",
        "type": "object"
      },
      "OptionCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OptionCreateAttributes"
          },
          "type": {
            "const": "contact_attribute_options",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "OptionCreateResource",
        "type": "object"
      },
      "OptionListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/OptionResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "OptionListResponse",
        "type": "object"
      },
      "OptionResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OptionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "contact_attribute_options",
            "default": "contact_attribute_options",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "OptionResource",
        "type": "object"
      },
      "OptionResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OptionResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OptionResponse",
        "type": "object"
      },
      "OptionUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "label": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 80,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          }
        },
        "title": "OptionUpdateAttributes",
        "type": "object"
      },
      "OptionUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OptionUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OptionUpdateEnvelope",
        "type": "object"
      },
      "OptionUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OptionUpdateAttributes"
          },
          "type": {
            "const": "contact_attribute_options",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "OptionUpdateResource",
        "type": "object"
      },
      "OrderAttributes": {
        "additionalProperties": false,
        "properties": {
          "amount_discount": {
            "default": 0,
            "title": "Amount Discount",
            "type": "integer"
          },
          "amount_subtotal": {
            "default": 0,
            "title": "Amount Subtotal",
            "type": "integer"
          },
          "amount_total": {
            "default": 0,
            "title": "Amount Total",
            "type": "integer"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "coupon_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Coupon Id"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "currency": {
            "default": "usd",
            "title": "Currency",
            "type": "string"
          },
          "deliverables_snapshot": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliverables Snapshot"
          },
          "expired_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expired At"
          },
          "external_session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Session Id"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "payment_account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Payment Account Id"
          },
          "payment_customer_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Payment Customer Id"
          },
          "price_id": {
            "title": "Price Id",
            "type": "string"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          },
          "source": {
            "default": "native",
            "title": "Source",
            "type": "string"
          },
          "status": {
            "default": "pending",
            "title": "Status",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "hub_id",
          "contact_id",
          "price_id",
          "product_id"
        ],
        "title": "OrderAttributes",
        "type": "object"
      },
      "OrderListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/OrderResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Links"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "OrderListResponse",
        "type": "object"
      },
      "OrderResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OrderAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "orders",
            "default": "orders",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "OrderResource",
        "type": "object"
      },
      "OrderResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OrderResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OrderResponse",
        "type": "object"
      },
      "OverrideAttributes": {
        "additionalProperties": false,
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "granted_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Granted By"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "product_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Product Id"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "contact_id",
          "hub_id",
          "scope",
          "product_id",
          "granted_by",
          "expires_at",
          "reason",
          "team_id",
          "created_at",
          "updated_at"
        ],
        "title": "OverrideAttributes",
        "type": "object"
      },
      "OverrideCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "product_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Product Id"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          }
        },
        "required": [
          "contact_id",
          "scope"
        ],
        "title": "OverrideCreateAttributes",
        "type": "object"
      },
      "OverrideCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OverrideCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OverrideCreateEnvelope",
        "type": "object"
      },
      "OverrideCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OverrideCreateAttributes"
          },
          "type": {
            "const": "access_overrides",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "OverrideCreateResource",
        "type": "object"
      },
      "OverrideListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/OverrideResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "OverrideListResponse",
        "type": "object"
      },
      "OverrideResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OverrideAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "access_overrides",
            "default": "access_overrides",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "OverrideResource",
        "type": "object"
      },
      "OverrideResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OverrideResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OverrideResponse",
        "type": "object"
      },
      "OverrideUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "product_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Product Id"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope"
          }
        },
        "title": "OverrideUpdateAttributes",
        "type": "object"
      },
      "OverrideUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OverrideUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OverrideUpdateEnvelope",
        "type": "object"
      },
      "OverrideUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OverrideUpdateAttributes"
          },
          "type": {
            "const": "access_overrides",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "OverrideUpdateResource",
        "type": "object"
      },
      "OverviewAttributes": {
        "additionalProperties": false,
        "properties": {
          "active_members": {
            "title": "Active Members",
            "type": "integer"
          },
          "new_members": {
            "title": "New Members",
            "type": "integer"
          },
          "top_spaces": {
            "items": {
              "$ref": "#/components/schemas/TopSpace"
            },
            "title": "Top Spaces",
            "type": "array"
          },
          "total_active_members": {
            "title": "Total Active Members",
            "type": "integer"
          }
        },
        "required": [
          "total_active_members",
          "new_members",
          "active_members"
        ],
        "title": "OverviewAttributes",
        "type": "object"
      },
      "OverviewResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/OverviewAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "analytics_overview",
            "default": "analytics_overview",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "OverviewResource",
        "type": "object"
      },
      "OverviewResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OverviewResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "OverviewResponse",
        "type": "object"
      },
      "PageAttributes": {
        "additionalProperties": false,
        "description": "Portal/member read attributes \u2014 no authoring fields.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "is_homepage": {
            "title": "Is Homepage",
            "type": "boolean"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "privacy": {
            "title": "Privacy",
            "type": "string"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "title",
          "slug",
          "type",
          "privacy",
          "is_homepage",
          "position",
          "settings",
          "meta",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "PageAttributes",
        "type": "object"
      },
      "PageCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "is_homepage": {
            "default": false,
            "title": "Is Homepage",
            "type": "boolean"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "privacy": {
            "default": "members",
            "enum": [
              "public",
              "members",
              "private"
            ],
            "title": "Privacy",
            "type": "string"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-z0-9][a-z0-9_-]*$",
            "title": "Slug",
            "type": "string"
          },
          "title": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          },
          "type": {
            "default": "generic",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "title",
          "slug"
        ],
        "title": "PageCreateAttributes",
        "type": "object"
      },
      "PageCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PageCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PageCreateEnvelope",
        "type": "object"
      },
      "PageCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PageCreateAttributes"
          },
          "type": {
            "const": "pages",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PageCreateResource",
        "type": "object"
      },
      "PageListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PageResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "PageListResponse",
        "type": "object"
      },
      "PageResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PageAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "pages",
            "default": "pages",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PageResource",
        "type": "object"
      },
      "PageResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PageResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PageResponse",
        "type": "object"
      },
      "PageScaffoldAttributes": {
        "additionalProperties": false,
        "properties": {
          "catalog_digest": {
            "maxLength": 128,
            "title": "Catalog Digest",
            "type": "string"
          },
          "page_template_id": {
            "maxLength": 100,
            "pattern": "^[a-z0-9][a-z0-9-]*$",
            "title": "Page Template Id",
            "type": "string"
          },
          "privacy": {
            "enum": [
              "public",
              "private"
            ],
            "title": "Privacy",
            "type": "string"
          },
          "slug": {
            "maxLength": 100,
            "pattern": "^[a-z0-9][a-z0-9_-]*$",
            "title": "Slug",
            "type": "string"
          },
          "title": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "page_template_id",
          "slug",
          "title",
          "privacy",
          "catalog_digest"
        ],
        "title": "PageScaffoldAttributes",
        "type": "object"
      },
      "PageScaffoldEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PageScaffoldResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PageScaffoldEnvelope",
        "type": "object"
      },
      "PageScaffoldResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PageScaffoldAttributes"
          },
          "type": {
            "const": "page_scaffolds",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PageScaffoldResource",
        "type": "object"
      },
      "PageScaffoldResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PageScaffoldResultResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PageScaffoldResponse",
        "type": "object"
      },
      "PageScaffoldResultAttributes": {
        "properties": {
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "page_id": {
            "title": "Page Id",
            "type": "string"
          },
          "page_template_id": {
            "title": "Page Template Id",
            "type": "string"
          },
          "published_revision": {
            "title": "Published Revision",
            "type": "integer"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "page_id",
          "slug",
          "page_template_id",
          "published_revision"
        ],
        "title": "PageScaffoldResultAttributes",
        "type": "object"
      },
      "PageScaffoldResultResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PageScaffoldResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "page_scaffolds",
            "default": "page_scaffolds",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PageScaffoldResultResource",
        "type": "object"
      },
      "PageTreeAttributes": {
        "additionalProperties": true,
        "description": "JSON:API attributes for a resolved (or raw) page-builder tree.",
        "properties": {
          "published_revision": {
            "title": "Published Revision",
            "type": "integer"
          },
          "resolved": {
            "title": "Resolved",
            "type": "boolean"
          },
          "tree": {
            "additionalProperties": true,
            "title": "Tree",
            "type": "object"
          }
        },
        "required": [
          "tree",
          "resolved",
          "published_revision"
        ],
        "title": "PageTreeAttributes",
        "type": "object"
      },
      "PageTreeResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a resolved page tree.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PageTreeAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "page_trees",
            "default": "page_trees",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PageTreeResource",
        "type": "object"
      },
      "PageTreeResponse": {
        "additionalProperties": false,
        "description": "Top-level JSON:API response envelope for GET .../pages/{id}?resolve.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PageTreeResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PageTreeResponse",
        "type": "object"
      },
      "PageUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "is_homepage": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Homepage"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "privacy": {
            "anyOf": [
              {
                "enum": [
                  "public",
                  "members",
                  "private"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Privacy"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          }
        },
        "title": "PageUpdateAttributes",
        "type": "object"
      },
      "PageUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PageUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PageUpdateEnvelope",
        "type": "object"
      },
      "PageUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PageUpdateAttributes"
          },
          "type": {
            "const": "pages",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PageUpdateResource",
        "type": "object"
      },
      "ParticipantSummary": {
        "description": "A DM conversation participant summary for embedding in ConversationResponseAttributes.\n\nNot a JSON:API resource \u2014 no type/id fields. Embedded directly in the\nconversation attributes.participants list.",
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url"
          },
          "photo_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Photo Url Expires At"
          },
          "role": {
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "contact_id",
          "display_name",
          "photo_url",
          "last_seen_at",
          "role"
        ],
        "title": "ParticipantSummary",
        "type": "object"
      },
      "PasswordResetAttributes": {
        "additionalProperties": false,
        "properties": {
          "new_password": {
            "maxLength": 4096,
            "minLength": 8,
            "title": "New Password",
            "type": "string"
          },
          "token": {
            "maxLength": 512,
            "minLength": 1,
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token",
          "new_password"
        ],
        "title": "PasswordResetAttributes",
        "type": "object"
      },
      "PasswordResetRequestEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PasswordResetResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PasswordResetRequestEnvelope",
        "type": "object"
      },
      "PasswordResetResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PasswordResetAttributes"
          },
          "type": {
            "const": "password_resets",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PasswordResetResource",
        "type": "object"
      },
      "PaymentAttributes": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "title": "Amount",
            "type": "integer"
          },
          "amount_refunded": {
            "default": 0,
            "title": "Amount Refunded",
            "type": "integer"
          },
          "charged_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Charged At"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "currency": {
            "title": "Currency",
            "type": "string"
          },
          "external_charge_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Charge Id"
          },
          "external_hosted_invoice_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Hosted Invoice Url"
          },
          "external_intent_id": {
            "title": "External Intent Id",
            "type": "string"
          },
          "external_invoice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Invoice Id"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "failure_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Message"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "order_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Order Id"
          },
          "payment_account_id": {
            "title": "Payment Account Id",
            "type": "string"
          },
          "receipt_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receipt Url"
          },
          "refunded_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refunded At"
          },
          "source": {
            "default": "native",
            "title": "Source",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "subscription_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subscription Id"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "hub_id",
          "contact_id",
          "payment_account_id",
          "external_intent_id",
          "amount",
          "currency",
          "status"
        ],
        "title": "PaymentAttributes",
        "type": "object"
      },
      "PaymentListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PaymentResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "PaymentListResponse",
        "type": "object"
      },
      "PaymentResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PaymentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "payments",
            "default": "payments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PaymentResource",
        "type": "object"
      },
      "PaymentResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PaymentResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PaymentResponse",
        "type": "object"
      },
      "PaymentsPageSettings": {
        "additionalProperties": false,
        "description": "Whitelisted page.settings keys for a payments page.",
        "properties": {
          "show_coupon_field": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Show Coupon Field"
          },
          "show_order_summary": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Show Order Summary"
          }
        },
        "title": "PaymentsPageSettings",
        "type": "object"
      },
      "PeerSpaceAttributes": {
        "properties": {
          "access_level": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Level"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "title": "PeerSpaceAttributes",
        "type": "object"
      },
      "PeerSpaceListMeta": {
        "description": "Top-level meta for the peer spaces-access list (keyset cursor).",
        "properties": {
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "title": "PeerSpaceListMeta",
        "type": "object"
      },
      "PeerSpaceListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_PeerSpaceAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PeerSpaceListMeta"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "title": "PeerSpaceListResponse",
        "type": "object"
      },
      "PermissionAssignRequest": {
        "additionalProperties": false,
        "description": "Request body for POST /api/roles/{id}/permissions.\n\nThe client supplies only the permission slug; the server resolves the\nPermission row and attaches it to the role. Extra fields are forbidden\nso that callers receive a 422 rather than silent discard on typos.",
        "properties": {
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "title": "PermissionAssignRequest",
        "type": "object"
      },
      "PermissionAttributes": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "group": {
            "title": "Group",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug",
          "group"
        ],
        "title": "PermissionAttributes",
        "type": "object"
      },
      "PlatformAlertAttributes": {
        "description": "Attributes block for a platform_alerts resource object.\n\nRead-only. ``alert_type`` is the alert type slug (e.g. ``\"spam_escalation\"``)\n\u2014 named specifically, never a bare ``type``, which is reserved for the\nJSON:API resource ``type`` (api-response.md). ``severity`` is one of\n``info`` | ``warning`` | ``critical``. ``resolved_at`` / ``resolved_by``\nare present for forward-compat but are always null on this endpoint, which\nreturns unresolved alerts only (v1).",
        "properties": {
          "alert_type": {
            "title": "Alert Type",
            "type": "string"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "payload": {
            "additionalProperties": true,
            "title": "Payload",
            "type": "object"
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "resolved_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved By"
          },
          "severity": {
            "title": "Severity",
            "type": "string"
          }
        },
        "required": [
          "alert_type",
          "severity",
          "payload",
          "created_at",
          "resolved_at",
          "resolved_by"
        ],
        "title": "PlatformAlertAttributes",
        "type": "object"
      },
      "PlatformOAuthClientUpdateRequest": {
        "properties": {
          "allowed_scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowed Scopes"
          },
          "first_party": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Party"
          }
        },
        "title": "PlatformOAuthClientUpdateRequest",
        "type": "object"
      },
      "PlaybackVideo": {
        "properties": {
          "captions": {
            "items": {
              "$ref": "#/components/schemas/Caption"
            },
            "title": "Captions",
            "type": "array"
          },
          "chapters": {
            "items": {
              "$ref": "#/components/schemas/Caption"
            },
            "title": "Chapters",
            "type": "array"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "hls_expires_at": {
            "format": "date-time",
            "title": "Hls Expires At",
            "type": "string"
          },
          "hls_manifest": {
            "title": "Hls Manifest",
            "type": "string"
          },
          "kind": {
            "const": "video",
            "default": "video",
            "title": "Kind",
            "type": "string"
          },
          "thumbnails": {
            "items": {
              "$ref": "#/components/schemas/Caption"
            },
            "title": "Thumbnails",
            "type": "array"
          }
        },
        "required": [
          "hls_manifest",
          "hls_expires_at"
        ],
        "title": "PlaybackVideo",
        "type": "object"
      },
      "PlaylistAttributes": {
        "description": "Serialisable attributes of a Playlist resource (no id/type inside attributes).",
        "properties": {
          "cover_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Signed CloudFront/imgproxy URL of the playlist cover. Null when no cover attached.",
            "title": "Cover Url"
          },
          "cover_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "UTC datetime when the signed playlist cover URL expires. Null when no cover is attached.",
            "title": "Cover Url Expires At"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "podcast_feed_enabled": {
            "default": false,
            "description": "When true, podcast_feed_url is populated with the RSS feed URL.",
            "title": "Podcast Feed Enabled",
            "type": "boolean"
          },
          "podcast_feed_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Absolute URL to the playlist's RSS feed. Computed at serialize time; null when podcast_feed_enabled is false.",
            "title": "Podcast Feed Url"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "visibility": {
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "title",
          "visibility",
          "created_at",
          "updated_at"
        ],
        "title": "PlaylistAttributes",
        "type": "object"
      },
      "PlaylistCreateAttributes": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional description.",
            "title": "Description"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hub to scope this playlist to, or null.",
            "title": "Hub Id"
          },
          "title": {
            "description": "Playlist title.",
            "maxLength": 255,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          },
          "visibility": {
            "default": "private",
            "description": "Visibility of the playlist.",
            "enum": [
              "public",
              "unlisted",
              "private"
            ],
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "title": "PlaylistCreateAttributes",
        "type": "object"
      },
      "PlaylistCreateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlaylistCreateAttributes"
          },
          "type": {
            "const": "playlists",
            "default": "playlists",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "PlaylistCreateData",
        "type": "object"
      },
      "PlaylistCreateRequest": {
        "description": "Request body for POST /api/teams/{team_id}/playlists.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PlaylistCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistCreateRequest",
        "type": "object"
      },
      "PlaylistItemAttachAttributes": {
        "properties": {
          "file_id": {
            "description": "ID of the File to add to the playlist.",
            "title": "File Id",
            "type": "string"
          },
          "position": {
            "default": 0,
            "description": "0-based ordinal position in the playlist.",
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "file_id"
        ],
        "title": "PlaylistItemAttachAttributes",
        "type": "object"
      },
      "PlaylistItemAttachData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlaylistItemAttachAttributes"
          },
          "type": {
            "const": "playlist_items",
            "default": "playlist_items",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "PlaylistItemAttachData",
        "type": "object"
      },
      "PlaylistItemAttachRequest": {
        "description": "Request body for POST /api/teams/{team_id}/playlists/{id}/items.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PlaylistItemAttachData"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistItemAttachRequest",
        "type": "object"
      },
      "PlaylistItemAttributes": {
        "description": "Serialisable attributes of a PlaylistItem resource.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "file_id": {
            "title": "File Id",
            "type": "string"
          },
          "playlist_id": {
            "title": "Playlist Id",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "playlist_id",
          "file_id",
          "position",
          "created_at"
        ],
        "title": "PlaylistItemAttributes",
        "type": "object"
      },
      "PlaylistItemListResponse": {
        "description": "Collection JSON:API response wrapping a list of PlaylistItemResources.\n\n`data` is ordered by (position ASC, id ASC). `included` carries sideloaded\n`files` resources when the client passes `?include=files`. `links.next`\nholds the cursor URL when another page exists.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_PlaylistItemAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistItemListResponse",
        "type": "object"
      },
      "PlaylistItemPlaybackAttributes": {
        "description": "Public/playback view of a playlist item \u2014 has signed URL, not raw file row.",
        "properties": {
          "asset_kind": {
            "anyOf": [
              {
                "enum": [
                  "video",
                  "audio",
                  "pdf",
                  "image",
                  "document"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Asset Kind"
          },
          "content_node_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hub-scoped content node id.",
            "title": "Content Node Id"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "File description.",
            "title": "Description"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Media duration in seconds.",
            "title": "Duration Seconds"
          },
          "expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the playback URL expires. Null whenever playback_url is null (byte-less/synthetic document with no S3 object to sign). Always present; may be null.",
            "title": "Expires At"
          },
          "file_id": {
            "description": "Underlying file id.",
            "title": "File Id",
            "type": "string"
          },
          "mime_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The media's raw MIME type (e.g. video/mp4, text/markdown). A synchronous kind hint for clients switching between playlist items \u2014 lets a player pick a text vs. video renderer without waiting on a slower signal. Always present; may be null.",
            "title": "Mime Type"
          },
          "playback_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "CloudFront-signed playback URL. Null when the underlying file is byte-less (e.g. a synthetic/placeholder document with no S3 object) \u2014 no URL is signed in that case, but the item is still returned with its other metadata. Always present; may be null.",
            "title": "Playback Url"
          },
          "position": {
            "description": "0-indexed position in the playlist.",
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "poster_variants": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Signed imgproxy poster URLs keyed by preset (thumbnail-160/medium-720/large-1440/webp-medium). Empty when no poster.",
            "title": "Poster Variants",
            "type": "object"
          },
          "poster_variants_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Earliest poster variant expiry; null when poster_variants is empty.",
            "title": "Poster Variants Expires At"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "File title.",
            "title": "Title"
          },
          "unique_viewer_count": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Global count of distinct non-opted-out contacts with visits>0 for this item's resolved hub-scoped content node. null for anonymous callers, missing hub scope, or missing/ambiguous content-node mapping. Reflects retained progress rows and may decrease after retention/GDPR cleanup. NOT a replay/plays total and NOT an immutable lifetime analytics count.",
            "title": "Unique Viewer Count"
          }
        },
        "required": [
          "file_id",
          "position",
          "playback_url",
          "expires_at",
          "mime_type"
        ],
        "title": "PlaylistItemPlaybackAttributes",
        "type": "object"
      },
      "PlaylistItemPlaybackListResponse": {
        "description": "Collection JSON:API response wrapping a list of PlaylistItemPlaybackResources.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_PlaylistItemPlaybackAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistItemPlaybackListResponse",
        "type": "object"
      },
      "PlaylistItemUpdateAttributes": {
        "description": "PATCH fields for a PlaylistItem \u2014 only position is mutable.\n\nExplicit null for position is rejected \u2014 omit the field to keep the current value.\nAccepting null silently would produce an invisible NO-OP masking client bugs.",
        "properties": {
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "New 0-based ordinal position.",
            "title": "Position"
          }
        },
        "title": "PlaylistItemUpdateAttributes",
        "type": "object"
      },
      "PlaylistItemUpdateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlaylistItemUpdateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "playlist_items",
            "default": "playlist_items",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PlaylistItemUpdateData",
        "type": "object"
      },
      "PlaylistItemUpdateRequest": {
        "description": "Request body for PATCH /api/teams/{team_id}/playlists/{id}/items/{item_id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PlaylistItemUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistItemUpdateRequest",
        "type": "object"
      },
      "PlaylistListResponse": {
        "description": "Collection JSON:API response wrapping a list of PlaylistResources.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_PlaylistAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistListResponse",
        "type": "object"
      },
      "PlaylistResponse": {
        "description": "Single-resource JSON:API response wrapping a PlaylistResource.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_PlaylistAttributes_"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistResponse",
        "type": "object"
      },
      "PlaylistUpdateAttributes": {
        "description": "PATCH fields \u2014 all optional; omit a field to keep its current value.\n\nExplicit null for `title` or `visibility` is rejected with 422 \u2014 those columns\nare NOT NULL in the DB and sending null would produce an IntegrityError \u2192 500.\n`description` and `hub_id` are legitimately nullable so null IS accepted for them.",
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New description (null clears it).",
            "title": "Description"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New hub scope (null removes hub scope).",
            "title": "Hub Id"
          },
          "podcast_feed_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Toggle podcast feed exposure. Omit to keep current value.",
            "title": "Podcast Feed Enabled"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New playlist title.",
            "title": "Title"
          },
          "visibility": {
            "anyOf": [
              {
                "enum": [
                  "public",
                  "unlisted",
                  "private"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New visibility.",
            "title": "Visibility"
          }
        },
        "title": "PlaylistUpdateAttributes",
        "type": "object"
      },
      "PlaylistUpdateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PlaylistUpdateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "playlists",
            "default": "playlists",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PlaylistUpdateData",
        "type": "object"
      },
      "PlaylistUpdateRequest": {
        "description": "Request body for PATCH /api/teams/{team_id}/playlists/{id}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PlaylistUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "PlaylistUpdateRequest",
        "type": "object"
      },
      "PolicyAttributes": {
        "additionalProperties": false,
        "description": "Attributes for a hub policies resource object.\n\n``policy_type`` is one of \"tos\" or \"privacy_policy\". ``content`` is the\nraw document text (null if not configured). ``version`` is an opaque\nversion string set by the admin. ``enabled`` reflects whether the\noverall policies gate is active. ``require_acceptance`` records the\nboolean supplied on the most recent effective content/version edit -- it\nis not a standing toggle, and absent legacy state reads as null.",
        "properties": {
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "policy_type": {
            "enum": [
              "tos",
              "privacy_policy"
            ],
            "title": "Policy Type",
            "type": "string"
          },
          "require_acceptance": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "The boolean supplied on the most recent effective content/version edit for this policy document. Not a standing toggle: only the edit that actually changed content or version updates it. A policy document with no such edit in its history reports null, not false. Only \"tos\" can ever be true; \"privacy_policy\" is always false or null.",
            "title": "Require Acceptance"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Version"
          }
        },
        "required": [
          "policy_type",
          "enabled"
        ],
        "title": "PolicyAttributes",
        "type": "object"
      },
      "PolicyListResponse": {
        "additionalProperties": false,
        "description": "JSON:API list response for hub policies.\n\nReturns an empty data array when policies are disabled or unconfigured.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PolicyResource"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "PolicyListResponse",
        "type": "object"
      },
      "PolicyResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a hub policy.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PolicyAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "policies",
            "default": "policies",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PolicyResource",
        "type": "object"
      },
      "PolicyResponse": {
        "additionalProperties": false,
        "description": "JSON:API single-resource response for a hub policy.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PolicyResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PolicyResponse",
        "type": "object"
      },
      "PolicyUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "policy_type": {
            "enum": [
              "tos",
              "privacy_policy"
            ],
            "title": "Policy Type",
            "type": "string"
          },
          "require_acceptance": {
            "default": false,
            "title": "Require Acceptance",
            "type": "boolean"
          }
        },
        "required": [
          "policy_type"
        ],
        "title": "PolicyUpdateAttributes",
        "type": "object"
      },
      "PolicyUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PolicyUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PolicyUpdateEnvelope",
        "type": "object"
      },
      "PolicyUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PolicyUpdateAttributes"
          },
          "type": {
            "const": "policies",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PolicyUpdateResource",
        "type": "object"
      },
      "PollAttributes": {
        "description": "A single-choice poll attached to a discussion.\n\nBuilt field-by-field by ``app.community.poll_read`` (member scope) \u2014\nnever via ``model_dump()`` of the ORM rows. ``viewer_voted`` /\n``viewer_option_id`` are member-scope only; the anon read path\n(``app.community.anon_read.AnonPollAttributes``) omits both entirely, not\njust nulls them, since an anonymous request has no viewer identity.",
        "properties": {
          "closed": {
            "title": "Closed",
            "type": "boolean"
          },
          "deadline_at": {
            "format": "date-time",
            "title": "Deadline At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/PollOptionAttributes"
            },
            "title": "Options",
            "type": "array"
          },
          "total_votes": {
            "title": "Total Votes",
            "type": "integer"
          },
          "viewer_option_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Viewer Option Id"
          },
          "viewer_voted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Viewer Voted"
          }
        },
        "required": [
          "id",
          "deadline_at",
          "closed",
          "total_votes",
          "options"
        ],
        "title": "PollAttributes",
        "type": "object"
      },
      "PollOptionAttributes": {
        "description": "A single selectable option on a poll.\n\n``vote_count`` is documentation-only here (this model drives OpenAPI\ngeneration, not runtime field filtering \u2014 see ``RepostBlockAttributes``'s\ndocstring for why: the routes that carry this shape return a raw\n``JSONResponse``). The ACTUAL omit-vs-present gating \u2014\n``vote_count`` present only when the viewer has voted or the poll is\nclosed \u2014 is implemented field-by-field in\n``app.community.poll_read.build_poll_attrs_member``.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "vote_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vote Count"
          }
        },
        "required": [
          "id",
          "label",
          "position"
        ],
        "title": "PollOptionAttributes",
        "type": "object"
      },
      "PollOptionVoteCount": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "option_id": {
            "title": "Option Id",
            "type": "string"
          }
        },
        "required": [
          "option_id",
          "count"
        ],
        "title": "PollOptionVoteCount",
        "type": "object"
      },
      "PollVoteAttributes": {
        "additionalProperties": false,
        "description": "Attributes accepted by ``POST .../poll/votes``.\n\n``extra=\"forbid\"`` so a smuggled field (e.g. a client-supplied\n``contact_id`` or ``poll_id`` \u2014 the vote is always scoped by the\nauthenticated contact and the ``discussion_id`` path segment) is\nrejected with a 422 rather than silently ignored, mirroring\n``DiscussionCreateAttributes``.",
        "properties": {
          "option_id": {
            "title": "Option Id",
            "type": "string"
          }
        },
        "required": [
          "option_id"
        ],
        "title": "PollVoteAttributes",
        "type": "object"
      },
      "PollVoteCreateEnvelope": {
        "description": "JSON:API create envelope: ``{data: {type, attributes}}`` for a poll vote.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PollVoteResourceData"
          }
        },
        "required": [
          "data"
        ],
        "title": "PollVoteCreateEnvelope",
        "type": "object"
      },
      "PollVoteResource": {
        "description": "JSON:API resource object for ``POST .../poll/votes``'s 201 response.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PollVoteResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "polls",
            "default": "polls",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PollVoteResource",
        "type": "object"
      },
      "PollVoteResourceData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PollVoteAttributes"
          },
          "type": {
            "const": "poll_votes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PollVoteResourceData",
        "type": "object"
      },
      "PollVoteResponse": {
        "description": "Response schema for ``POST /api/discussions/{discussion_id}/poll/votes``.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PollVoteResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PollVoteResponse",
        "type": "object"
      },
      "PollVoteResultAttributes": {
        "description": "The full revealed poll block returned by ``POST .../poll/votes``.\n\nSame fields as ``PollAttributes`` MINUS ``id`` \u2014 this response's own\nJSON:API resource id (``data.id``) already IS the poll id, so repeating\nit inside ``attributes`` would duplicate the same value twice on one\nresource object.",
        "properties": {
          "closed": {
            "title": "Closed",
            "type": "boolean"
          },
          "deadline_at": {
            "format": "date-time",
            "title": "Deadline At",
            "type": "string"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/PollOptionAttributes"
            },
            "title": "Options",
            "type": "array"
          },
          "total_votes": {
            "title": "Total Votes",
            "type": "integer"
          },
          "viewer_option_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Viewer Option Id"
          },
          "viewer_voted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Viewer Voted"
          }
        },
        "required": [
          "deadline_at",
          "closed",
          "total_votes",
          "options"
        ],
        "title": "PollVoteResultAttributes",
        "type": "object"
      },
      "PollVoterAttributes": {
        "description": "A single voter row on the poll roster.",
        "properties": {
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "avatar_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url Expires At"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "option_id": {
            "title": "Option Id",
            "type": "string"
          }
        },
        "required": [
          "contact_id",
          "option_id",
          "created_at"
        ],
        "title": "PollVoterAttributes",
        "type": "object"
      },
      "PollVoterResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PollVoterAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "poll_voters",
            "default": "poll_voters",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PollVoterResource",
        "type": "object"
      },
      "PollVotersListMeta": {
        "properties": {
          "has_more": {
            "title": "Has More",
            "type": "boolean"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "option_counts": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/PollOptionVoteCount"
            },
            "title": "Option Counts",
            "type": "array"
          }
        },
        "required": [
          "has_more"
        ],
        "title": "PollVotersListMeta",
        "type": "object"
      },
      "PollVotersListResponse": {
        "description": "Response schema for ``GET /api/discussions/{discussion_id}/poll/votes``.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PollVoterResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/PollVotersListMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "PollVotersListResponse",
        "type": "object"
      },
      "PortalBootstrapAttributes": {
        "additionalProperties": false,
        "properties": {
          "branding": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branding"
          },
          "canonical_origin": {
            "title": "Canonical Origin",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "discussions_default_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Description"
          },
          "discussions_default_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discussions Default Title"
          },
          "has_custom_domain": {
            "title": "Has Custom Domain",
            "type": "boolean"
          },
          "homepage": {
            "anyOf": [
              {
                "discriminator": {
                  "mapping": {
                    "custom": "#/components/schemas/HomepageCustom",
                    "discussions_index": "#/components/schemas/HomepageDiscussionsIndex"
                  },
                  "propertyName": "kind"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/HomepageCustom"
                  },
                  {
                    "$ref": "#/components/schemas/HomepageDiscussionsIndex"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Homepage"
          },
          "is_free": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Free"
          },
          "is_private": {
            "title": "Is Private",
            "type": "boolean"
          },
          "legacy_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Hash"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "navigation": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Navigation"
          },
          "policies_enabled": {
            "default": false,
            "title": "Policies Enabled",
            "type": "boolean"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "title",
          "slug",
          "legacy_hash",
          "description",
          "discussions_default_title",
          "discussions_default_description",
          "is_private",
          "branding",
          "navigation",
          "settings",
          "meta",
          "created_at",
          "updated_at",
          "deleted_at",
          "canonical_origin",
          "has_custom_domain"
        ],
        "title": "PortalBootstrapAttributes",
        "type": "object"
      },
      "PreviewTokenAttributes": {
        "additionalProperties": false,
        "description": "JSON:API attributes for a preview-token resource.",
        "properties": {
          "expires_at": {
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "token": {
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token",
          "expires_at"
        ],
        "title": "PreviewTokenAttributes",
        "type": "object"
      },
      "PreviewTokenResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a preview-token.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PreviewTokenAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "preview_tokens",
            "default": "preview_tokens",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PreviewTokenResource",
        "type": "object"
      },
      "PreviewTokenResponse": {
        "additionalProperties": false,
        "description": "Top-level JSON:API response for POST .../pages/{id}/preview-token.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PreviewTokenResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PreviewTokenResponse",
        "type": "object"
      },
      "PriceAttributes": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "title": "Amount",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "currency": {
            "title": "Currency",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "interval": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interval"
          },
          "interval_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interval Count"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "legacy_price_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Price Id"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "trial_period_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trial Period Days"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "product_id",
          "team_id",
          "amount",
          "currency",
          "type",
          "interval",
          "interval_count",
          "trial_period_days",
          "name",
          "description",
          "is_active",
          "legacy_price_id",
          "metadata",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "PriceAttributes",
        "type": "object"
      },
      "PriceCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Amount",
            "type": "integer"
          },
          "currency": {
            "title": "Currency",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "interval": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interval"
          },
          "interval_count": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interval Count"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "legacy_price_id": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Price Id"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "trial_period_days": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trial Period Days"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency",
          "type"
        ],
        "title": "PriceCreateAttributes",
        "type": "object"
      },
      "PriceCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PriceCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PriceCreateEnvelope",
        "type": "object"
      },
      "PriceCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PriceCreateAttributes"
          },
          "type": {
            "const": "prices",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PriceCreateResource",
        "type": "object"
      },
      "PriceListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PriceResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "PriceListResponse",
        "type": "object"
      },
      "PriceResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PriceAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "prices",
            "default": "prices",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PriceResource",
        "type": "object"
      },
      "PriceResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PriceResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PriceResponse",
        "type": "object"
      },
      "PriceUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "title": "PriceUpdateAttributes",
        "type": "object"
      },
      "PriceUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PriceUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PriceUpdateEnvelope",
        "type": "object"
      },
      "PriceUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PriceUpdateAttributes"
          },
          "type": {
            "const": "prices",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "PriceUpdateResource",
        "type": "object"
      },
      "PrivacySettingsAttributes": {
        "description": "Attributes section of the member_privacy_settings resource.",
        "properties": {
          "blocked_count": {
            "title": "Blocked Count",
            "type": "integer"
          },
          "dm_enabled": {
            "title": "Dm Enabled",
            "type": "boolean"
          },
          "hide_profile": {
            "title": "Hide Profile",
            "type": "boolean"
          },
          "read_receipts_enabled": {
            "title": "Read Receipts Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "hide_profile",
          "dm_enabled",
          "read_receipts_enabled",
          "blocked_count"
        ],
        "title": "PrivacySettingsAttributes",
        "type": "object"
      },
      "PrivacySettingsData": {
        "description": "JSON:API data object for a member_privacy_settings resource.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PrivacySettingsAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "member_privacy_settings",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "attributes"
        ],
        "title": "PrivacySettingsData",
        "type": "object"
      },
      "PrivacySettingsMeta": {
        "description": "Top-level meta for member privacy responses.",
        "properties": {
          "scope": {
            "default": "hub",
            "title": "Scope",
            "type": "string"
          }
        },
        "title": "PrivacySettingsMeta",
        "type": "object"
      },
      "PrivacySettingsResponse": {
        "description": "JSON:API single-resource response for GET/PATCH /privacy.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PrivacySettingsData"
          },
          "meta": {
            "$ref": "#/components/schemas/PrivacySettingsMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "PrivacySettingsResponse",
        "type": "object"
      },
      "ProductAttributes": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "legacy_product_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Product Id"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "name",
          "type",
          "description",
          "is_active",
          "legacy_product_id",
          "metadata",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "ProductAttributes",
        "type": "object"
      },
      "ProductCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "legacy_product_id": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Product Id"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "title": "ProductCreateAttributes",
        "type": "object"
      },
      "ProductCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProductCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ProductCreateEnvelope",
        "type": "object"
      },
      "ProductCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ProductCreateAttributes"
          },
          "type": {
            "const": "products",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ProductCreateResource",
        "type": "object"
      },
      "ProductListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ProductResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "ProductListResponse",
        "type": "object"
      },
      "ProductResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ProductAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "products",
            "default": "products",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ProductResource",
        "type": "object"
      },
      "ProductResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProductResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ProductResponse",
        "type": "object"
      },
      "ProductUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadata"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          }
        },
        "title": "ProductUpdateAttributes",
        "type": "object"
      },
      "ProductUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProductUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ProductUpdateEnvelope",
        "type": "object"
      },
      "ProductUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ProductUpdateAttributes"
          },
          "type": {
            "const": "products",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ProductUpdateResource",
        "type": "object"
      },
      "ProfileMePatchAttributes": {
        "additionalProperties": false,
        "properties": {
          "banner_color": {
            "anyOf": [
              {
                "pattern": "^#[0-9a-fA-F]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Color"
          },
          "banner_scheme": {
            "anyOf": [
              {
                "enum": [
                  "split",
                  "complementary",
                  "analogous",
                  "triadic",
                  "monochrome",
                  "warm"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Scheme"
          },
          "banner_variant": {
            "anyOf": [
              {
                "enum": [
                  "gradient",
                  "image"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banner Variant"
          },
          "bio": {
            "anyOf": [
              {
                "maxLength": 5000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bio"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 120,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "hide_activity": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hide Activity"
          },
          "hide_profile": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hide Profile"
          }
        },
        "title": "ProfileMePatchAttributes",
        "type": "object"
      },
      "ProfileMePatchData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ProfileMePatchAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ProfileMePatchData",
        "type": "object"
      },
      "ProfileMePatchEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProfileMePatchData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ProfileMePatchEnvelope",
        "type": "object"
      },
      "ProgressTrackAttributes": {
        "additionalProperties": false,
        "properties": {
          "is_completed": {
            "default": false,
            "title": "Is Completed",
            "type": "boolean"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time"
          }
        },
        "title": "ProgressTrackAttributes",
        "type": "object"
      },
      "ProgressTrackEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProgressTrackResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ProgressTrackEnvelope",
        "type": "object"
      },
      "ProgressTrackResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ProgressTrackAttributes"
          },
          "type": {
            "const": "content_progress",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ProgressTrackResource",
        "type": "object"
      },
      "PublishAttributes": {
        "additionalProperties": false,
        "description": "JSON:API attributes for a page-publish outcome resource.",
        "properties": {
          "gate_count": {
            "title": "Gate Count",
            "type": "integer"
          },
          "page_id": {
            "title": "Page Id",
            "type": "string"
          },
          "published_revision": {
            "title": "Published Revision",
            "type": "integer"
          },
          "section_count": {
            "title": "Section Count",
            "type": "integer"
          }
        },
        "required": [
          "page_id",
          "published_revision",
          "section_count",
          "gate_count"
        ],
        "title": "PublishAttributes",
        "type": "object"
      },
      "PublishResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a page publish outcome.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/PublishAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "page_publishes",
            "default": "page_publishes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "PublishResource",
        "type": "object"
      },
      "PublishResponse": {
        "additionalProperties": false,
        "description": "Top-level JSON:API response envelope for POST .../publish.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PublishResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "PublishResponse",
        "type": "object"
      },
      "ReactionAttributes": {
        "description": "Attributes for a comment_reaction JSON:API resource object.",
        "properties": {
          "comment_id": {
            "title": "Comment Id",
            "type": "string"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "emoji": {
            "title": "Emoji",
            "type": "string"
          }
        },
        "required": [
          "comment_id",
          "contact_id",
          "emoji",
          "created_at"
        ],
        "title": "ReactionAttributes",
        "type": "object"
      },
      "ReactionCreateAttributes": {
        "additionalProperties": false,
        "description": "Attributes for POST /api/comments/<id>/reactions.",
        "properties": {
          "emoji": {
            "maxLength": 40,
            "minLength": 1,
            "title": "Emoji",
            "type": "string"
          }
        },
        "required": [
          "emoji"
        ],
        "title": "ReactionCreateAttributes",
        "type": "object"
      },
      "ReactionCreateRequest": {
        "additionalProperties": false,
        "description": "Top-level envelope for POST /api/comments/<id>/reactions.\n\nShape: { \"data\": { \"type\": \"comment_reactions\", \"attributes\": { \"emoji\": \"...\" } } }",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReactionCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReactionCreateRequest",
        "type": "object"
      },
      "ReactionCreateResource": {
        "additionalProperties": false,
        "description": "JSON:API resource wrapper for a reaction create request.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ReactionCreateAttributes"
          },
          "type": {
            "const": "comment_reactions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ReactionCreateResource",
        "type": "object"
      },
      "ReactionGroupListResponse": {
        "description": "JSON:API list envelope for comment reaction groups.\n\nReturned by GET /api/comments/{comment_id}/reactions.\n\nShape:\n{\n  \"data\": [ <ReactionGroupResource>, ... ]\n}",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ReactionGroupResource"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReactionGroupListResponse",
        "type": "object"
      },
      "ReactionGroupResource": {
        "description": "JSON:API resource object for a comment reaction group (per-emoji aggregate).\n\nShape:\n{\n  \"type\": \"comment_reaction_groups\",\n  \"id\": \"<comment_id>:<emoji>\",\n  \"attributes\": { \"emoji\": \"...\", \"count\": 3,\n                  \"reacted_by_me\": true, \"my_reaction_id\": \"...\" }\n}",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/app__comments__schemas__ReactionGroupAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "comment_reaction_groups",
            "default": "comment_reaction_groups",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ReactionGroupResource",
        "type": "object"
      },
      "ReactionResource": {
        "description": "JSON:API resource object for a comment reaction.\n\nShape:\n{\n  \"type\": \"comment_reactions\",\n  \"id\": \"<uuid>\",\n  \"attributes\": { \"comment_id\": \"...\", \"contact_id\": \"...\", \"emoji\": \"...\",\n                  \"created_at\": \"...\" }\n}",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ReactionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "comment_reactions",
            "default": "comment_reactions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ReactionResource",
        "type": "object"
      },
      "ReactionResponse": {
        "description": "Single-item JSON:API envelope for a reaction.\n\nShape: { \"data\": <ReactionResource> }",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReactionResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReactionResponse",
        "type": "object"
      },
      "ReadReceiptResponse": {
        "description": "Response for POST /notifications/mark-all-read.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/app__infrastructure__base_schema__JsonApiResource_ReadReceiptAttributes___2"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReadReceiptResponse",
        "type": "object"
      },
      "ReasonBreakdownItem": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "reason_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason Id"
          }
        },
        "required": [
          "reason_id",
          "count"
        ],
        "title": "ReasonBreakdownItem",
        "type": "object"
      },
      "RecentMember": {
        "additionalProperties": false,
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "joined_at": {
            "title": "Joined At",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "required": [
          "contact_id",
          "joined_at"
        ],
        "title": "RecentMember",
        "type": "object"
      },
      "RedirectOriginsAttributes": {
        "additionalProperties": false,
        "description": "Attributes returned in a GET redirect-origins response.",
        "properties": {
          "origins": {
            "items": {
              "type": "string"
            },
            "title": "Origins",
            "type": "array"
          }
        },
        "required": [
          "origins"
        ],
        "title": "RedirectOriginsAttributes",
        "type": "object"
      },
      "RedirectOriginsResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a hub redirect-origin allowlist.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/RedirectOriginsAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "hub_redirect_origin_allowlists",
            "default": "hub_redirect_origin_allowlists",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "RedirectOriginsResource",
        "type": "object"
      },
      "RedirectOriginsResponse": {
        "additionalProperties": false,
        "description": "JSON:API single-resource response for a hub redirect-origin allowlist.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RedirectOriginsResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "RedirectOriginsResponse",
        "type": "object"
      },
      "RedirectOriginsUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "origins": {
            "items": {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 50,
            "title": "Origins",
            "type": "array"
          }
        },
        "required": [
          "origins"
        ],
        "title": "RedirectOriginsUpdateAttributes",
        "type": "object"
      },
      "RedirectOriginsUpdateEnvelope": {
        "additionalProperties": false,
        "description": "JSON:API request envelope for PUT redirect-origins.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RedirectOriginsUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "RedirectOriginsUpdateEnvelope",
        "type": "object"
      },
      "RedirectOriginsUpdateResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for a PUT redirect-origins request.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/RedirectOriginsUpdateAttributes"
          },
          "type": {
            "const": "hub_redirect_origin_allowlists",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "RedirectOriginsUpdateResource",
        "type": "object"
      },
      "RefreshRequestAttributes": {
        "additionalProperties": false,
        "properties": {
          "refresh_token": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Token"
          }
        },
        "title": "RefreshRequestAttributes",
        "type": "object"
      },
      "RefreshRequestEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RefreshRequestResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "RefreshRequestEnvelope",
        "type": "object"
      },
      "RefreshRequestResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/RefreshRequestAttributes"
          },
          "type": {
            "const": "refresh_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "RefreshRequestResource",
        "type": "object"
      },
      "RefundRequest": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RefundRequestResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "RefundRequest",
        "type": "object"
      },
      "RefundRequestAttributes": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "reason": {
            "title": "Reason",
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "title": "RefundRequestAttributes",
        "type": "object"
      },
      "RefundRequestResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/RefundRequestAttributes"
          },
          "type": {
            "const": "refunds",
            "default": "refunds",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "RefundRequestResource",
        "type": "object"
      },
      "RegisterPageSettings": {
        "additionalProperties": false,
        "description": "Whitelisted page.settings keys for a register page.",
        "properties": {
          "require_tos_accept": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Require Tos Accept"
          },
          "show_social_login": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Show Social Login"
          }
        },
        "title": "RegisterPageSettings",
        "type": "object"
      },
      "RegisterRequest": {
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "password": {
            "minLength": 8,
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "email",
          "password"
        ],
        "title": "RegisterRequest",
        "type": "object"
      },
      "RegisterRequestAttributes": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "redirect_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Redirect Url"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "team_id": {
            "anyOf": [
              {
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "required": [
          "email"
        ],
        "title": "RegisterRequestAttributes",
        "type": "object"
      },
      "RegisterRequestEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RegisterRequestResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "RegisterRequestEnvelope",
        "type": "object"
      },
      "RegisterRequestResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/RegisterRequestAttributes"
          },
          "type": {
            "const": "register_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "RegisterRequestResource",
        "type": "object"
      },
      "RemoveTagNode": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/RemoveTagNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "remove_tag",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "config"
        ],
        "title": "RemoveTagNode",
        "type": "object"
      },
      "RemoveTagNodeConfig": {
        "additionalProperties": false,
        "description": "Config for a ``remove_tag`` node.",
        "properties": {
          "tag_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Tag Id",
            "type": "string"
          }
        },
        "required": [
          "tag_id"
        ],
        "title": "RemoveTagNodeConfig",
        "type": "object"
      },
      "RemovedContentAttributes": {
        "properties": {
          "content_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Id"
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Type"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "removed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Removed At"
          }
        },
        "title": "RemovedContentAttributes",
        "type": "object"
      },
      "RemovedContentListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/RemovedContentResource"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ContactIncludedResource"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "RemovedContentListResponse",
        "type": "object"
      },
      "RemovedContentMeta": {
        "properties": {
          "content_preview": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Preview"
          },
          "parent_comment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Comment Id"
          },
          "report_count": {
            "default": 0,
            "title": "Report Count",
            "type": "integer"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "RemovedContentMeta",
        "type": "object"
      },
      "RemovedContentRelationships": {
        "properties": {
          "author": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiToOneRelationship"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "RemovedContentRelationships",
        "type": "object"
      },
      "RemovedContentResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/RemovedContentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RemovedContentMeta"
              },
              {
                "type": "null"
              }
            ]
          },
          "relationships": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RemovedContentRelationships"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "RemovedContentResource",
        "type": "object"
      },
      "RenderableAttachment": {
        "properties": {
          "asset_kind": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Asset Kind"
          },
          "file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "File Id"
          },
          "filename": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filename"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "media_id": {
            "title": "Media Id",
            "type": "string"
          },
          "mime_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mime Type"
          },
          "role": {
            "title": "Role",
            "type": "string"
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size Bytes"
          },
          "status_upload": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Upload"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url"
          },
          "thumbnail_url_expires_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url Expires At"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "url_expires_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url Expires At"
          }
        },
        "required": [
          "id",
          "media_id",
          "role"
        ],
        "title": "RenderableAttachment",
        "type": "object"
      },
      "ReorderAttributes": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/app__content__schemas__ReorderItem"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "ReorderAttributes",
        "type": "object"
      },
      "ReorderResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ReorderAttributes"
          },
          "type": {
            "const": "content_nodes",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "ReorderResource",
        "type": "object"
      },
      "ReportReasonAttributes": {
        "properties": {
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "label": {
            "maxLength": 80,
            "minLength": 1,
            "title": "Label",
            "type": "string"
          },
          "position": {
            "default": 0,
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "label",
          "hub_id"
        ],
        "title": "ReportReasonAttributes",
        "type": "object"
      },
      "ReportReasonCreateAttributes": {
        "properties": {
          "label": {
            "maxLength": 80,
            "minLength": 1,
            "title": "Label",
            "type": "string"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "label"
        ],
        "title": "ReportReasonCreateAttributes",
        "type": "object"
      },
      "ReportReasonCreateBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReportReasonCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReportReasonCreateBody",
        "type": "object"
      },
      "ReportReasonCreateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ReportReasonCreateAttributes"
          },
          "type": {
            "const": "report_reasons",
            "default": "report_reasons",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "ReportReasonCreateData",
        "type": "object"
      },
      "ReportReasonListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ReportReasonResource"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReportReasonListResponse",
        "type": "object"
      },
      "ReportReasonResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ReportReasonAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "report_reasons",
            "default": "report_reasons",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ReportReasonResource",
        "type": "object"
      },
      "ReportReasonResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReportReasonResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReportReasonResponse",
        "type": "object"
      },
      "ReportReasonUpdateAttributes": {
        "properties": {
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "label": {
            "anyOf": [
              {
                "maxLength": 80,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          }
        },
        "title": "ReportReasonUpdateAttributes",
        "type": "object"
      },
      "ReportReasonUpdateBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReportReasonUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReportReasonUpdateBody",
        "type": "object"
      },
      "ReportReasonUpdateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ReportReasonUpdateAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "report_reasons",
            "default": "report_reasons",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "ReportReasonUpdateData",
        "type": "object"
      },
      "RepostBlockAttributes": {
        "additionalProperties": false,
        "properties": {
          "author_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Display Name"
          },
          "author_photo_thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Thumbnail Url"
          },
          "author_photo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Photo Url"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "space_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Space Name"
          },
          "space_slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Space Slug"
          },
          "state": {
            "enum": [
              "visible",
              "locked",
              "deleted",
              "unavailable"
            ],
            "title": "State",
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "state"
        ],
        "title": "RepostBlockAttributes",
        "type": "object"
      },
      "ResolveReportAttributes": {
        "properties": {
          "delete_content": {
            "default": false,
            "title": "Delete Content",
            "type": "boolean"
          },
          "notes": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "resolution": {
            "title": "Resolution",
            "type": "string"
          },
          "soft_ban_until": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Soft Ban Until"
          }
        },
        "required": [
          "resolution"
        ],
        "title": "ResolveReportAttributes",
        "type": "object"
      },
      "ResolveReportBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ResolveReportData"
          }
        },
        "required": [
          "data"
        ],
        "title": "ResolveReportBody",
        "type": "object"
      },
      "ResolveReportData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ResolveReportAttributes"
          },
          "type": {
            "const": "moderation_reports",
            "default": "moderation_reports",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "ResolveReportData",
        "type": "object"
      },
      "RevertTranscriptBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_RevertData"
          }
        },
        "required": [
          "data"
        ],
        "title": "RevertTranscriptBody",
        "type": "object"
      },
      "RoleAttributes": {
        "properties": {
          "is_system": {
            "default": false,
            "title": "Is System",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "required": [
          "name",
          "slug"
        ],
        "title": "RoleAttributes",
        "type": "object"
      },
      "RoleCreate": {
        "additionalProperties": false,
        "description": "Schema for client-submitted role creation.\n\n``is_system`` is intentionally absent \u2014 system roles are seeded, not\nminted via the API.  Unknown fields are forbidden (extra=\"forbid\") so\ncallers receive a 422 rather than a silent discard on typos, which\nmirrors PermissionAssignRequest and makes the API surface more honest.",
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "required": [
          "name",
          "slug"
        ],
        "title": "RoleCreate",
        "type": "object"
      },
      "RoleUpdate": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "title": "RoleUpdate",
        "type": "object"
      },
      "RowSectionSettings": {
        "additionalProperties": false,
        "description": "Settings for a 'row' layout section.\n\nlayout must be one of {\"columns\", \"stack\"} \u2014 any other value is None.\nNo child-section data is rendered (Section has no parent/child FK).",
        "properties": {
          "layout": {
            "anyOf": [
              {
                "enum": [
                  "columns",
                  "stack"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Layout"
          }
        },
        "title": "RowSectionSettings",
        "type": "object"
      },
      "SavedItemAttributes": {
        "description": "Wire-shape attributes for a saved_items resource.\n\nhub_id:          Hub the item was saved in.\ncontent_node_id: ID of the saved content node (maps to target_id internally).\ncreated_at:      When the item was saved (original, never bumped on re-save).",
        "properties": {
          "content_node_id": {
            "title": "Content Node Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "content_node_id",
          "created_at"
        ],
        "title": "SavedItemAttributes",
        "type": "object"
      },
      "SavedItemCreateAttributes": {
        "description": "Attributes accepted in the POST body.",
        "properties": {
          "content_node_id": {
            "title": "Content Node Id",
            "type": "string"
          }
        },
        "required": [
          "content_node_id"
        ],
        "title": "SavedItemCreateAttributes",
        "type": "object"
      },
      "SavedItemCreateData": {
        "description": "JSON:API data envelope for POST body.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SavedItemCreateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SavedItemCreateData",
        "type": "object"
      },
      "SavedItemCreateEnvelope": {
        "description": "Top-level JSON:API request envelope for POST /saved-items.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SavedItemCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "SavedItemCreateEnvelope",
        "type": "object"
      },
      "ScaffoldPageEntry": {
        "properties": {
          "page_id": {
            "title": "Page Id",
            "type": "string"
          },
          "published_revision": {
            "title": "Published Revision",
            "type": "integer"
          },
          "role": {
            "title": "Role",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "role",
          "slug",
          "page_id",
          "published_revision"
        ],
        "title": "ScaffoldPageEntry",
        "type": "object"
      },
      "SearchResultAttributes": {
        "description": "Attributes for community_search_results resources (type=\"community_search_results\").\n\nCovers both discussion and comment result types. Debug fields (rrf_score,\nlexical_rank, semantic_rank) are only present when EMBEDDINGS_ENABLED=True.",
        "properties": {
          "author_contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Author Contact Id"
          },
          "body_excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body Excerpt"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "lexical_rank": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lexical Rank"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "rrf_score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rrf Score"
          },
          "semantic_rank": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Semantic Rank"
          },
          "source_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Id"
          },
          "source_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Type"
          },
          "space_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Space Id"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "title": "SearchResultAttributes",
        "type": "object"
      },
      "SearchResultListResponse": {
        "description": "JSON:API list response for community search results with typed meta.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/JsonApiResource_SearchResultAttributes_"
            },
            "title": "Data",
            "type": "array"
          },
          "included": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiPaginationLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "$ref": "#/components/schemas/CommunitySearchMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "SearchResultListResponse",
        "type": "object"
      },
      "SectionAttributes": {
        "additionalProperties": false,
        "properties": {
          "access_rule_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Rule Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model Id"
          },
          "model_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model Type"
          },
          "page_id": {
            "title": "Page Id",
            "type": "string"
          },
          "position": {
            "title": "Position",
            "type": "integer"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "visible": {
            "title": "Visible",
            "type": "boolean"
          }
        },
        "required": [
          "page_id",
          "type",
          "title",
          "model_type",
          "model_id",
          "position",
          "visible",
          "access_rule_id",
          "settings",
          "meta",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "SectionAttributes",
        "type": "object"
      },
      "SectionCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "access_rule_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Rule Id"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "model_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model Id"
          },
          "model_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model Type"
          },
          "position": {
            "default": 0,
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "visible": {
            "default": true,
            "title": "Visible",
            "type": "boolean"
          }
        },
        "required": [
          "type"
        ],
        "title": "SectionCreateAttributes",
        "type": "object"
      },
      "SectionCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SectionCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SectionCreateEnvelope",
        "type": "object"
      },
      "SectionCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SectionCreateAttributes"
          },
          "type": {
            "const": "sections",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SectionCreateResource",
        "type": "object"
      },
      "SectionListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SectionResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "SectionListResponse",
        "type": "object"
      },
      "SectionReorderEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SectionReorderItem"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "SectionReorderEnvelope",
        "type": "object"
      },
      "SectionReorderItem": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "position": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "position"
        ],
        "title": "SectionReorderItem",
        "type": "object"
      },
      "SectionResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SectionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "sections",
            "default": "sections",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "SectionResource",
        "type": "object"
      },
      "SectionResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SectionResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SectionResponse",
        "type": "object"
      },
      "SectionUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "access_rule_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Rule Id"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "settings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Settings"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "visible": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Visible"
          }
        },
        "title": "SectionUpdateAttributes",
        "type": "object"
      },
      "SectionUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SectionUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SectionUpdateEnvelope",
        "type": "object"
      },
      "SectionUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SectionUpdateAttributes"
          },
          "type": {
            "const": "sections",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SectionUpdateResource",
        "type": "object"
      },
      "SegmentAttributes": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "$ref": "#/components/schemas/CompiledConditionTree"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "validation_error": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Validation Error"
          }
        },
        "required": [
          "team_id",
          "name",
          "slug",
          "description",
          "conditions",
          "is_active",
          "validation_error",
          "created_by",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "SegmentAttributes",
        "type": "object"
      },
      "SegmentCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "$ref": "#/components/schemas/ConditionTreeIn"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^[a-z0-9][a-z0-9\\-_]*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          }
        },
        "required": [
          "name",
          "conditions"
        ],
        "title": "SegmentCreateAttributes",
        "type": "object"
      },
      "SegmentCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SegmentCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SegmentCreateEnvelope",
        "type": "object"
      },
      "SegmentCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SegmentCreateAttributes"
          },
          "type": {
            "const": "segment",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SegmentCreateResource",
        "type": "object"
      },
      "SegmentListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SegmentResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "SegmentListResponse",
        "type": "object"
      },
      "SegmentResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SegmentAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "segment",
            "default": "segment",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "SegmentResource",
        "type": "object"
      },
      "SegmentResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SegmentResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SegmentResponse",
        "type": "object"
      },
      "SegmentSearchAttributes": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "$ref": "#/components/schemas/ConditionTreeIn"
          },
          "page": {
            "$ref": "#/components/schemas/SegmentSearchPage"
          }
        },
        "required": [
          "conditions"
        ],
        "title": "SegmentSearchAttributes",
        "type": "object"
      },
      "SegmentSearchEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SegmentSearchResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SegmentSearchEnvelope",
        "type": "object"
      },
      "SegmentSearchPage": {
        "additionalProperties": false,
        "properties": {
          "after": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "After"
          },
          "size": {
            "default": 25,
            "maximum": 200.0,
            "minimum": 1.0,
            "title": "Size",
            "type": "integer"
          }
        },
        "title": "SegmentSearchPage",
        "type": "object"
      },
      "SegmentSearchResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SegmentSearchAttributes"
          },
          "type": {
            "const": "segment_search",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SegmentSearchResource",
        "type": "object"
      },
      "SegmentUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "conditions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConditionTreeIn"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^[a-z0-9][a-z0-9\\-_]*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          }
        },
        "title": "SegmentUpdateAttributes",
        "type": "object"
      },
      "SegmentUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SegmentUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SegmentUpdateEnvelope",
        "type": "object"
      },
      "SegmentUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SegmentUpdateAttributes"
          },
          "type": {
            "const": "segment",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SegmentUpdateResource",
        "type": "object"
      },
      "SelfHubMembershipAttributes": {
        "properties": {
          "ban_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ban Reason"
          },
          "banned_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Banned At"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "last_seen_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Seen At"
          },
          "notification_prefs": {
            "additionalProperties": true,
            "title": "Notification Prefs",
            "type": "object"
          },
          "onboarded_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onboarded At"
          },
          "role": {
            "enum": [
              "owner",
              "admin",
              "moderator",
              "member"
            ],
            "title": "Role",
            "type": "string"
          },
          "status": {
            "default": "active",
            "title": "Status",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "tos_acceptance_required": {
            "default": false,
            "title": "Tos Acceptance Required",
            "type": "boolean"
          },
          "tos_accepted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Accepted At"
          },
          "tos_accepted_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Accepted Version"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "welcome_email_sent": {
            "default": false,
            "title": "Welcome Email Sent",
            "type": "boolean"
          }
        },
        "required": [
          "hub_id",
          "contact_id",
          "team_id",
          "role",
          "notification_prefs",
          "created_at",
          "updated_at"
        ],
        "title": "SelfHubMembershipAttributes",
        "type": "object"
      },
      "SelfUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "tos_accepted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Accepted At"
          },
          "tos_version": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tos Version"
          }
        },
        "title": "SelfUpdateAttributes",
        "type": "object"
      },
      "SelfUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SelfUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SelfUpdateEnvelope",
        "type": "object"
      },
      "SelfUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SelfUpdateAttributes"
          },
          "type": {
            "const": "contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SelfUpdateResource",
        "type": "object"
      },
      "SendEmailNode": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SendEmailNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "send_email",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "config"
        ],
        "title": "SendEmailNode",
        "type": "object"
      },
      "SendEmailNodeConfig": {
        "additionalProperties": false,
        "description": "Config for a ``send_email`` node.\n\n``template_ref`` is a logical reference (e.g. ``welcome_email``);\n``template_id`` is an internal UUID for a stored template.\n``context_keys`` lists the merge tag keys the template uses.\nExactly one of ``template_ref`` / ``template_id`` is expected.",
        "properties": {
          "context_keys": {
            "items": {
              "type": "string"
            },
            "title": "Context Keys",
            "type": "array"
          },
          "template_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Id"
          },
          "template_ref": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Ref"
          }
        },
        "title": "SendEmailNodeConfig",
        "type": "object"
      },
      "SetOperation": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SetOperationAttributes"
          },
          "type": {
            "const": "set",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SetOperation",
        "type": "object"
      },
      "SetOperationAttributes": {
        "additionalProperties": false,
        "description": "A single set operation.\n\nCaller may identify the attribute by ``definition_id`` OR\n``definition_slug``. For scalar defs, exactly one of value_text /\nvalue_number / value_boolean / value_date must be set. For multi-select\ndefs, caller provides ``option_ids`` and/or ``option_slugs``.",
        "properties": {
          "definition_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Definition Id"
          },
          "definition_slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Definition Slug"
          },
          "option_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Option Ids"
          },
          "option_slugs": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Option Slugs"
          },
          "value_boolean": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Boolean"
          },
          "value_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Date"
          },
          "value_number": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Number"
          },
          "value_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value Text"
          }
        },
        "title": "SetOperationAttributes",
        "type": "object"
      },
      "SetPasswordAttributes": {
        "additionalProperties": false,
        "description": "Attributes for POST /api/contact-auth/me/password.\n\nSets a password for the first time. 409 if the contact already has one.",
        "properties": {
          "password": {
            "maxLength": 4096,
            "minLength": 8,
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "title": "SetPasswordAttributes",
        "type": "object"
      },
      "SetPasswordEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SetPasswordResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SetPasswordEnvelope",
        "type": "object"
      },
      "SetPasswordResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SetPasswordAttributes"
          },
          "type": {
            "const": "passwords",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SetPasswordResource",
        "type": "object"
      },
      "SpaceAttributes": {
        "description": "Mutable attributes for a Space (create + update).",
        "properties": {
          "access_level": {
            "anyOf": [
              {
                "enum": [
                  "public",
                  "restricted"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Level"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_default": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Default"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "posting_permission": {
            "anyOf": [
              {
                "enum": [
                  "any_member",
                  "admins_only",
                  "segment"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Posting Permission"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          }
        },
        "title": "SpaceAttributes",
        "type": "object"
      },
      "SpaceCreateAttributes": {
        "properties": {
          "access_level": {
            "anyOf": [
              {
                "enum": [
                  "public",
                  "restricted"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Level"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_default": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Default"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "name": {
            "maxLength": 120,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "position": {
            "anyOf": [
              {
                "maximum": 2147483647.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "posting_permission": {
            "anyOf": [
              {
                "enum": [
                  "any_member",
                  "admins_only",
                  "segment"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Posting Permission"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "slug": {
            "minLength": 1,
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug"
        ],
        "title": "SpaceCreateAttributes",
        "type": "object"
      },
      "SpaceCreateEnvelope": {
        "description": "JSON:API create envelope: {data: {type, attributes}}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SpaceCreateResourceData"
          }
        },
        "required": [
          "data"
        ],
        "title": "SpaceCreateEnvelope",
        "type": "object"
      },
      "SpaceCreateResourceData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SpaceCreateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SpaceCreateResourceData",
        "type": "object"
      },
      "SpaceMemberStateAttributes": {
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "is_member": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Member"
          },
          "is_muted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Muted"
          },
          "joined_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Joined At"
          },
          "last_read_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Read At"
          },
          "space_id": {
            "title": "Space Id",
            "type": "string"
          }
        },
        "required": [
          "space_id",
          "contact_id"
        ],
        "title": "SpaceMemberStateAttributes",
        "type": "object"
      },
      "SpaceResourceData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SpaceAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SpaceResourceData",
        "type": "object"
      },
      "SpaceResponseAttributes": {
        "description": "Attributes emitted by space serializers in admin + member routers.",
        "properties": {
          "access_level": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Access Level"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "deleted_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon"
          },
          "is_default": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Default"
          },
          "is_member": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Member"
          },
          "is_muted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Muted"
          },
          "is_pinned": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Pinned"
          },
          "member_avatar_preview": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/MemberAvatarPreviewItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Member Avatar Preview"
          },
          "member_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Member Count"
          },
          "moderator_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Moderator Count"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "online_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Online Count"
          },
          "position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "posting_permission": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Posting Permission"
          },
          "segment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Segment Id"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "unread_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unread Count"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "viewer_can_post": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Viewer Can Post"
          }
        },
        "title": "SpaceResponseAttributes",
        "type": "object"
      },
      "SpaceUpdateEnvelope": {
        "description": "JSON:API update envelope: {data: {type, attributes}}.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SpaceResourceData"
          }
        },
        "required": [
          "data"
        ],
        "title": "SpaceUpdateEnvelope",
        "type": "object"
      },
      "StandaloneActionAttributes": {
        "properties": {
          "notes": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BanReasonCode"
              },
              {
                "type": "null"
              }
            ]
          },
          "soft_ban_until": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Soft Ban Until"
          }
        },
        "title": "StandaloneActionAttributes",
        "type": "object"
      },
      "StandaloneActionBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/StandaloneActionData"
          }
        },
        "required": [
          "data"
        ],
        "title": "StandaloneActionBody",
        "type": "object"
      },
      "StandaloneActionData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/StandaloneActionAttributes"
          },
          "type": {
            "const": "moderation_actions",
            "default": "moderation_actions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "StandaloneActionData",
        "type": "object"
      },
      "StartImportRequest": {
        "properties": {
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id"
        ],
        "title": "StartImportRequest",
        "type": "object"
      },
      "StateConditionCompiled": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display"
          },
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "state",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/StateValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "StateConditionCompiled",
        "type": "object"
      },
      "StateConditionIn": {
        "additionalProperties": false,
        "properties": {
          "operator": {
            "title": "Operator",
            "type": "string"
          },
          "type": {
            "const": "state",
            "title": "Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/StateValue"
          }
        },
        "required": [
          "type",
          "operator",
          "value"
        ],
        "title": "StateConditionIn",
        "type": "object"
      },
      "StateValue": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "title": "StateValue",
        "type": "object"
      },
      "SubscriptionAttributes": {
        "additionalProperties": false,
        "properties": {
          "cancel_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cancel At"
          },
          "cancel_at_period_end": {
            "default": false,
            "title": "Cancel At Period End",
            "type": "boolean"
          },
          "canceled_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Canceled At"
          },
          "collection_paused": {
            "default": false,
            "title": "Collection Paused",
            "type": "boolean"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "current_period_end": {
            "format": "date-time",
            "title": "Current Period End",
            "type": "string"
          },
          "current_period_start": {
            "format": "date-time",
            "title": "Current Period Start",
            "type": "string"
          },
          "deliverables_snapshot": {
            "default": [],
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Deliverables Snapshot",
            "type": "array"
          },
          "external_subscription_id": {
            "title": "External Subscription Id",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "origin_order_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Origin Order Id"
          },
          "payment_account_id": {
            "title": "Payment Account Id",
            "type": "string"
          },
          "payment_customer_id": {
            "title": "Payment Customer Id",
            "type": "string"
          },
          "price_id": {
            "title": "Price Id",
            "type": "string"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          },
          "source": {
            "default": "native",
            "title": "Source",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "trial_end": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trial End"
          },
          "trial_start": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trial Start"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "hub_id",
          "contact_id",
          "price_id",
          "product_id",
          "payment_account_id",
          "payment_customer_id",
          "external_subscription_id",
          "status",
          "current_period_start",
          "current_period_end"
        ],
        "title": "SubscriptionAttributes",
        "type": "object"
      },
      "SubscriptionKeys": {
        "properties": {
          "auth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auth"
          },
          "p256dh": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "P256Dh"
          }
        },
        "title": "SubscriptionKeys",
        "type": "object"
      },
      "SubscriptionListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SubscriptionResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "SubscriptionListResponse",
        "type": "object"
      },
      "SubscriptionPayload": {
        "description": "The subscription object from the browser's PushManager.",
        "properties": {
          "endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endpoint"
          },
          "keys": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SubscriptionKeys"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "SubscriptionPayload",
        "type": "object"
      },
      "SubscriptionResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SubscriptionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "subscriptions",
            "default": "subscriptions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "SubscriptionResource",
        "type": "object"
      },
      "SubscriptionResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SubscriptionResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SubscriptionResponse",
        "type": "object"
      },
      "SuppressionAttributes": {
        "description": "Attributes block for an email-suppression resource object.",
        "properties": {
          "email_address": {
            "title": "Email Address",
            "type": "string"
          },
          "hub_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hub Id"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "lifted_at": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "title": "Lifted At"
          },
          "lifted_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lifted By"
          },
          "reason": {
            "title": "Reason",
            "type": "string"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          },
          "source_event_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Event Type"
          },
          "suppressed_at": {
            "title": "Suppressed At"
          },
          "team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Team Id"
          }
        },
        "required": [
          "email_address",
          "scope",
          "reason",
          "is_active",
          "suppressed_at"
        ],
        "title": "SuppressionAttributes",
        "type": "object"
      },
      "SuppressionListResponse": {
        "description": "Collection JSON:API response.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SuppressionResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "anyOf": [
              {
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Links"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          }
        },
        "required": [
          "data"
        ],
        "title": "SuppressionListResponse",
        "type": "object"
      },
      "SuppressionResource": {
        "description": "JSON:API resource object for email-suppression.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SuppressionAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Links"
          },
          "type": {
            "default": "email_suppressions",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "SuppressionResource",
        "type": "object"
      },
      "SuppressionResponse": {
        "description": "Single-resource JSON:API response.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SuppressionResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "SuppressionResponse",
        "type": "object"
      },
      "SyntheticFileCreateAttributes": {
        "additionalProperties": false,
        "description": "Attributes for registering a READY file with no real upload behind it.\n\nNo `s3_path` field \u2014 the server generates a team-namespaced key via\n`s3_key_for`. Accepting a client-supplied path here would let a team owner\nregister a file pointing at ANOTHER team's S3 key (the download/playback\nroutes blindly sign whatever `s3_path` is stored), so it is intentionally\nabsent, not merely unvalidated.",
        "properties": {
          "asset_kind": {
            "default": "document",
            "description": "Media asset kind (download-only; transcoded kinds are not supported for synthetic files).",
            "enum": [
              "document",
              "pdf"
            ],
            "title": "Asset Kind",
            "type": "string"
          },
          "collection": {
            "default": "documents",
            "description": "Media collection bucket.",
            "maxLength": 32,
            "title": "Collection",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional file description.",
            "title": "Description"
          },
          "mime_type": {
            "anyOf": [
              {
                "maxLength": 128,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "MIME type; defaults to application/octet-stream.",
            "title": "Mime Type"
          },
          "original_filename": {
            "anyOf": [
              {
                "maxLength": 512,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Original filename; defaults to title.",
            "title": "Original Filename"
          },
          "size_bytes": {
            "default": 0,
            "description": "Placeholder size in bytes; a synthetic file has no real bytes.",
            "minimum": 0.0,
            "title": "Size Bytes",
            "type": "integer"
          },
          "title": {
            "description": "Human-readable file name.",
            "maxLength": 512,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          },
          "visibility": {
            "default": "private",
            "description": "Visibility of the registered media asset.",
            "enum": [
              "public",
              "unlisted",
              "private"
            ],
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "title": "SyntheticFileCreateAttributes",
        "type": "object"
      },
      "SyntheticFileCreateData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/SyntheticFileCreateAttributes"
          },
          "type": {
            "const": "files",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "SyntheticFileCreateData",
        "type": "object"
      },
      "SyntheticFileCreateEnvelope": {
        "additionalProperties": false,
        "description": "Request body for POST /api/admin/teams/{team_id}/files/synthetic.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SyntheticFileCreateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "SyntheticFileCreateEnvelope",
        "type": "object"
      },
      "TagAssignEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TagAssignmentResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TagAssignEnvelope",
        "type": "object"
      },
      "TagAssignmentAttributes": {
        "additionalProperties": false,
        "description": "Single-tag assignment payload.\n\nThe contact is identified by URL path; the body only carries the tag.",
        "properties": {
          "tag_id": {
            "title": "Tag Id",
            "type": "string"
          }
        },
        "required": [
          "tag_id"
        ],
        "title": "TagAssignmentAttributes",
        "type": "object"
      },
      "TagAssignmentResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TagAssignmentAttributes"
          },
          "type": {
            "const": "tag_assignments",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "TagAssignmentResource",
        "type": "object"
      },
      "TagAttributes": {
        "additionalProperties": false,
        "properties": {
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "name",
          "slug",
          "color",
          "description",
          "created_by",
          "created_at",
          "updated_at",
          "deleted_at"
        ],
        "title": "TagAttributes",
        "type": "object"
      },
      "TagCreateAttributes": {
        "additionalProperties": false,
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 1000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-z0-9][a-z0-9_-]*$",
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug"
        ],
        "title": "TagCreateAttributes",
        "type": "object"
      },
      "TagCreateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TagCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TagCreateEnvelope",
        "type": "object"
      },
      "TagCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TagCreateAttributes"
          },
          "type": {
            "const": "tags",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "TagCreateResource",
        "type": "object"
      },
      "TagListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TagResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "TagListResponse",
        "type": "object"
      },
      "TagResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TagAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "tags",
            "default": "tags",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "TagResource",
        "type": "object"
      },
      "TagResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TagResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TagResponse",
        "type": "object"
      },
      "TagUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "color": {
            "anyOf": [
              {
                "pattern": "^#[0-9A-Fa-f]{6}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 1000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "slug": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "pattern": "^[a-z0-9][a-z0-9_-]*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          }
        },
        "title": "TagUpdateAttributes",
        "type": "object"
      },
      "TagUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TagUpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TagUpdateEnvelope",
        "type": "object"
      },
      "TagUpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TagUpdateAttributes"
          },
          "type": {
            "const": "tags",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "TagUpdateResource",
        "type": "object"
      },
      "TeamAttributes": {
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "owner_id": {
            "title": "Owner Id",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "name",
          "slug",
          "owner_id"
        ],
        "title": "TeamAttributes",
        "type": "object"
      },
      "TeamContactAttributes": {
        "additionalProperties": false,
        "properties": {
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "consent_source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Source"
          },
          "consent_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Version"
          },
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "deleted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deleted At"
          },
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "email_verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Verified At"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "marketing_consent_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Marketing Consent At"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "restored_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Restored At"
          },
          "source": {
            "title": "Source",
            "type": "string"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "contact_id",
          "email",
          "email_verified_at",
          "first_name",
          "last_name",
          "phone",
          "country",
          "timezone",
          "source",
          "marketing_consent_at",
          "consent_source",
          "consent_version",
          "meta",
          "created_at",
          "updated_at",
          "deleted_at",
          "restored_at"
        ],
        "title": "TeamContactAttributes",
        "type": "object"
      },
      "TeamContactListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TeamContactResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "TeamContactListResponse",
        "type": "object"
      },
      "TeamContactRefAttributes": {
        "additionalProperties": false,
        "description": "Minimal team_contact reference surfaced by segment member endpoints.\n\nThe full team_contact resource lives in the contacts module; this\nlightweight shape carries only the identifiers that the admin\ndirectory UI needs for paginated list rendering.",
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "contact_id"
        ],
        "title": "TeamContactRefAttributes",
        "type": "object"
      },
      "TeamContactRefListResponse": {
        "additionalProperties": false,
        "description": "JSON:API list response for ``team-contact-ref`` resources.\n\nReturned by ``GET /{segment_id}/members``.  The ``meta`` and ``links``\nshapes mirror the pattern used by other paginated list endpoints in this\nmodule.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TeamContactRefResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "TeamContactRefListResponse",
        "type": "object"
      },
      "TeamContactRefResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TeamContactRefAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "team_contact_ref",
            "default": "team_contact_ref",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "TeamContactRefResource",
        "type": "object"
      },
      "TeamContactResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TeamContactAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "team_contacts",
            "default": "team_contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "TeamContactResource",
        "type": "object"
      },
      "TeamContactResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TeamContactResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TeamContactResponse",
        "type": "object"
      },
      "TeamCreate": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "name",
          "slug"
        ],
        "title": "TeamCreate",
        "type": "object"
      },
      "TeamMemberAttributes": {
        "properties": {
          "joined_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Joined At"
          },
          "role_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role Id"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "user_id": {
            "title": "User Id",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "user_id"
        ],
        "title": "TeamMemberAttributes",
        "type": "object"
      },
      "TeamMemberCreate": {
        "additionalProperties": false,
        "properties": {
          "role_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role Id"
          },
          "user_id": {
            "title": "User Id",
            "type": "string"
          }
        },
        "required": [
          "user_id"
        ],
        "title": "TeamMemberCreate",
        "type": "object"
      },
      "TeamProfileAttributes": {
        "additionalProperties": false,
        "description": "Attributes block for the `team_contacts` resource.",
        "properties": {
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "source": {
            "title": "Source",
            "type": "string"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "required": [
          "first_name",
          "last_name",
          "phone",
          "country",
          "city",
          "state",
          "timezone",
          "source",
          "meta",
          "created_at"
        ],
        "title": "TeamProfileAttributes",
        "type": "object"
      },
      "TeamProfileResource": {
        "additionalProperties": false,
        "description": "JSON:API resource object for GET/PATCH /me/teams/{team_id}/profile.",
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TeamProfileAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "team_contacts",
            "default": "team_contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "TeamProfileResource",
        "type": "object"
      },
      "TeamProfileResponse": {
        "additionalProperties": false,
        "description": "JSON:API single-resource envelope for team profile routes.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TeamProfileResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TeamProfileResponse",
        "type": "object"
      },
      "TeamProfileUpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "city": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "country": {
            "anyOf": [
              {
                "maxLength": 2,
                "minLength": 2,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "first_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "phone": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "state": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "timezone": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "title": "TeamProfileUpdateAttributes",
        "type": "object"
      },
      "TeamProfileUpdateData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TeamProfileUpdateAttributes"
          },
          "type": {
            "const": "team_contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "TeamProfileUpdateData",
        "type": "object"
      },
      "TeamProfileUpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TeamProfileUpdateData"
          }
        },
        "required": [
          "data"
        ],
        "title": "TeamProfileUpdateEnvelope",
        "type": "object"
      },
      "TeamUpdate": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "title": "TeamUpdate",
        "type": "object"
      },
      "TemplateScaffoldAttributes": {
        "additionalProperties": false,
        "properties": {
          "catalog_digest": {
            "maxLength": 128,
            "title": "Catalog Digest",
            "type": "string"
          },
          "hub_template_id": {
            "maxLength": 100,
            "pattern": "^[a-z0-9][a-z0-9-]*$",
            "title": "Hub Template Id",
            "type": "string"
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "maxLength": 100,
            "pattern": "^[a-z0-9-]+$",
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "hub_template_id",
          "name",
          "slug",
          "catalog_digest"
        ],
        "title": "TemplateScaffoldAttributes",
        "type": "object"
      },
      "TemplateScaffoldEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TemplateScaffoldResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TemplateScaffoldEnvelope",
        "type": "object"
      },
      "TemplateScaffoldResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TemplateScaffoldAttributes"
          },
          "type": {
            "const": "template_scaffolds",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "TemplateScaffoldResource",
        "type": "object"
      },
      "TemplateScaffoldResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TemplateScaffoldResultResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TemplateScaffoldResponse",
        "type": "object"
      },
      "TemplateScaffoldResultAttributes": {
        "properties": {
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "pages": {
            "items": {
              "$ref": "#/components/schemas/ScaffoldPageEntry"
            },
            "title": "Pages",
            "type": "array"
          }
        },
        "required": [
          "hub_id",
          "pages"
        ],
        "title": "TemplateScaffoldResultAttributes",
        "type": "object"
      },
      "TemplateScaffoldResultResource": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TemplateScaffoldResultAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "template_scaffolds",
            "default": "template_scaffolds",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "TemplateScaffoldResultResource",
        "type": "object"
      },
      "TokenPairAttributes": {
        "additionalProperties": false,
        "properties": {
          "access_token": {
            "title": "Access Token",
            "type": "string"
          },
          "expires_in": {
            "title": "Expires In",
            "type": "integer"
          },
          "refresh_token": {
            "title": "Refresh Token",
            "type": "string"
          },
          "token_type": {
            "const": "bearer",
            "default": "bearer",
            "title": "Token Type",
            "type": "string"
          }
        },
        "required": [
          "access_token",
          "refresh_token",
          "expires_in"
        ],
        "title": "TokenPairAttributes",
        "type": "object"
      },
      "TokenPairResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/TokenPairAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "token_pairs",
            "default": "token_pairs",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "TokenPairResource",
        "type": "object"
      },
      "TokenPairResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TokenPairResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "TokenPairResponse",
        "type": "object"
      },
      "TokenResponse": {
        "properties": {
          "access_token": {
            "title": "Access Token",
            "type": "string"
          },
          "expires_in": {
            "title": "Expires In",
            "type": "integer"
          },
          "refresh_token": {
            "title": "Refresh Token",
            "type": "string"
          },
          "token_type": {
            "default": "Bearer",
            "title": "Token Type",
            "type": "string"
          }
        },
        "required": [
          "access_token",
          "refresh_token",
          "expires_in"
        ],
        "title": "TokenResponse",
        "type": "object"
      },
      "TopContent": {
        "additionalProperties": false,
        "properties": {
          "completions": {
            "title": "Completions",
            "type": "integer"
          },
          "node_id": {
            "title": "Node Id",
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "node_id",
          "completions"
        ],
        "title": "TopContent",
        "type": "object"
      },
      "TopMember": {
        "additionalProperties": false,
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          },
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "required": [
          "contact_id",
          "count"
        ],
        "title": "TopMember",
        "type": "object"
      },
      "TopPost": {
        "additionalProperties": false,
        "properties": {
          "comment_count": {
            "title": "Comment Count",
            "type": "integer"
          },
          "discussion_id": {
            "title": "Discussion Id",
            "type": "string"
          },
          "reaction_count": {
            "title": "Reaction Count",
            "type": "integer"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "discussion_id",
          "comment_count",
          "reaction_count"
        ],
        "title": "TopPost",
        "type": "object"
      },
      "TopSpace": {
        "additionalProperties": false,
        "properties": {
          "discussion_count": {
            "title": "Discussion Count",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "space_id": {
            "title": "Space Id",
            "type": "string"
          }
        },
        "required": [
          "space_id",
          "name",
          "discussion_count"
        ],
        "title": "TopSpace",
        "type": "object"
      },
      "TopSpaceItem": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "posts": {
            "title": "Posts",
            "type": "integer"
          },
          "reactions": {
            "title": "Reactions",
            "type": "integer"
          },
          "space_id": {
            "title": "Space Id",
            "type": "string"
          }
        },
        "required": [
          "space_id",
          "posts",
          "reactions"
        ],
        "title": "TopSpaceItem",
        "type": "object"
      },
      "TranscriptSegmentRow": {
        "properties": {
          "end_time": {
            "title": "End Time",
            "type": "number"
          },
          "highlight": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlight"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Score"
          },
          "speaker_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Speaker Label"
          },
          "start_time": {
            "title": "Start Time",
            "type": "number"
          },
          "transcription": {
            "title": "Transcription",
            "type": "string"
          }
        },
        "required": [
          "id",
          "transcription",
          "start_time",
          "end_time"
        ],
        "title": "TranscriptSegmentRow",
        "type": "object"
      },
      "TranscriptSegmentsMeta": {
        "properties": {
          "current_page": {
            "title": "Current Page",
            "type": "integer"
          },
          "last_page": {
            "title": "Last Page",
            "type": "integer"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "current_page",
          "last_page",
          "total"
        ],
        "title": "TranscriptSegmentsMeta",
        "type": "object"
      },
      "TranscriptSegmentsPayload": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TranscriptSegmentRow"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/TranscriptSegmentsMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "TranscriptSegmentsPayload",
        "type": "object"
      },
      "TranscriptionLanguageBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_LanguageData"
          }
        },
        "required": [
          "data"
        ],
        "title": "TranscriptionLanguageBody",
        "type": "object"
      },
      "TypingSignalEnvelope": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_TypingData"
          }
        },
        "required": [
          "data"
        ],
        "title": "TypingSignalEnvelope",
        "type": "object"
      },
      "UnreadCountAttributes": {
        "description": "Attributes for the notification_unread_counts resource.",
        "properties": {
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "total"
        ],
        "title": "UnreadCountAttributes",
        "type": "object"
      },
      "UnreadCountResponse": {
        "description": "Response for GET /notifications/unread-count.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/JsonApiResource_UnreadCountAttributes_"
          }
        },
        "required": [
          "data"
        ],
        "title": "UnreadCountResponse",
        "type": "object"
      },
      "UnreadTotalAttributes": {
        "description": "Attributes for the hub-level unread total resource.",
        "properties": {
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "total"
        ],
        "title": "UnreadTotalAttributes",
        "type": "object"
      },
      "UpdateAttributes": {
        "additionalProperties": false,
        "properties": {
          "city": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "consent_source": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Source"
          },
          "consent_version": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Version"
          },
          "country": {
            "anyOf": [
              {
                "maxLength": 2,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "first_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "marketing_consent_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Marketing Consent At"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "phone": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "state": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "timezone": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "title": "UpdateAttributes",
        "type": "object"
      },
      "UpdateEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UpdateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "UpdateEnvelope",
        "type": "object"
      },
      "UpdateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/UpdateAttributes"
          },
          "type": {
            "const": "team_contacts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "UpdateResource",
        "type": "object"
      },
      "UploadTranscriptBody": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/_UploadTranscriptData"
          }
        },
        "required": [
          "data"
        ],
        "title": "UploadTranscriptBody",
        "type": "object"
      },
      "UserAttributes": {
        "description": "Attributes for a User resource \u2014 no id or type here.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "default_team_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Team Id"
          },
          "email": {
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "email_verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Verified At"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "is_active": {
            "default": true,
            "title": "Is Active",
            "type": "boolean"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "email"
        ],
        "title": "UserAttributes",
        "type": "object"
      },
      "UserInfoResponse": {
        "description": "OIDC UserInfo response (\u00a75.3).\n\nsub and hub_id are always present. email/email_verified are included only\nwhen the \"email\" scope was granted. name/picture only when \"profile\" granted.",
        "properties": {
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "email_verified": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Verified"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "picture": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Picture"
          },
          "sub": {
            "title": "Sub",
            "type": "string"
          }
        },
        "required": [
          "sub",
          "hub_id"
        ],
        "title": "UserInfoResponse",
        "type": "object"
      },
      "UserUpdate": {
        "properties": {
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          }
        },
        "title": "UserUpdate",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "VapidKeyAttributes": {
        "description": "Attributes for a vapid_keys resource.",
        "properties": {
          "public_key": {
            "title": "Public Key",
            "type": "string"
          }
        },
        "required": [
          "public_key"
        ],
        "title": "VapidKeyAttributes",
        "type": "object"
      },
      "VerifiedDomainAttributes": {
        "description": "Read attributes for a ``verified_domains`` resource.\n\nUsed in all read responses (list, retrieve, create-201, verify-200).\n\n``txt_record_host`` and ``txt_record_value`` are computed from the stored\ndomain + verification_token so the admin knows exactly what DNS record to\npublish without any extra client-side computation.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "last_checked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Checked At"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "txt_record_host": {
            "title": "Txt Record Host",
            "type": "string"
          },
          "txt_record_value": {
            "title": "Txt Record Value",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "verification_token": {
            "title": "Verification Token",
            "type": "string"
          },
          "verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          }
        },
        "required": [
          "domain",
          "status",
          "verification_token",
          "txt_record_host",
          "txt_record_value",
          "hub_id",
          "team_id"
        ],
        "title": "VerifiedDomainAttributes",
        "type": "object"
      },
      "VerifiedDomainCreate": {
        "additionalProperties": false,
        "description": "Request body for adding a verified domain to a hub.\n\nAccepts EITHER a flat body OR a full JSON:API envelope:\n  Flat:     {\"hub_id\": \"...\", \"domain\": \"acme.com\"}\n  Envelope: {\"data\": {\"type\": \"verified_domains\", \"attributes\": {...}}}\n\nDomain validation (normalization + public-suffix/public-email rejection)\nis performed in the router after parsing so the router can return rich\nJSON:API error responses.",
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          }
        },
        "required": [
          "hub_id",
          "domain"
        ],
        "title": "VerifiedDomainCreate",
        "type": "object"
      },
      "WaitNode": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/WaitNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "wait",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "config"
        ],
        "title": "WaitNode",
        "type": "object"
      },
      "WaitNodeConfig": {
        "additionalProperties": false,
        "description": "Config for a ``wait`` node.\n\n``duration`` is a natural-language string accepted by the parser in\n``AutomationsService.parse_wait_duration``, e.g.\n``\"3 days\"``, ``\"2 hours\"``, ``\"30 minutes\"``, ``\"1 week\"``.\nMax resolved duration: 365 days.",
        "properties": {
          "duration": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Duration",
            "type": "string"
          }
        },
        "required": [
          "duration"
        ],
        "title": "WaitNodeConfig",
        "type": "object"
      },
      "WebPushSubscribeBody": {
        "properties": {
          "device": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device"
          },
          "subscription": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SubscriptionPayload"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "WebPushSubscribeBody",
        "type": "object"
      },
      "WebPushSubscriptionAttributes": {
        "properties": {},
        "title": "WebPushSubscriptionAttributes",
        "type": "object"
      },
      "WebhookEndpointAttributes": {
        "additionalProperties": false,
        "description": "Read-only attributes for a ``webhook_endpoints`` resource.\n\n``signing_secret`` is intentionally ABSENT \u2014 it is write-only.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "hub_id": {
            "title": "Hub Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "target_url": {
            "title": "Target Url",
            "type": "string"
          },
          "team_id": {
            "title": "Team Id",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "team_id",
          "hub_id",
          "name",
          "target_url",
          "enabled",
          "created_at",
          "updated_at"
        ],
        "title": "WebhookEndpointAttributes",
        "type": "object"
      },
      "WebhookEndpointCreateAttributes": {
        "additionalProperties": false,
        "description": "Attributes for creating a new webhook endpoint.\n\n``signing_secret`` is optional.  When absent, a cryptographically random\n32-byte hex secret is generated server-side.  The secret is encrypted at\nrest; it is NEVER returned in any API response.",
        "properties": {
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "signing_secret": {
            "anyOf": [
              {
                "maxLength": 256,
                "minLength": 16,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Signing Secret"
          },
          "target_url": {
            "maxLength": 2048,
            "minLength": 1,
            "title": "Target Url",
            "type": "string"
          }
        },
        "required": [
          "name",
          "target_url"
        ],
        "title": "WebhookEndpointCreateAttributes",
        "type": "object"
      },
      "WebhookEndpointCreateBody": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebhookEndpointCreateResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "WebhookEndpointCreateBody",
        "type": "object"
      },
      "WebhookEndpointCreateResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/WebhookEndpointCreateAttributes"
          },
          "type": {
            "const": "webhook_endpoints",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "WebhookEndpointCreateResource",
        "type": "object"
      },
      "WebhookEndpointListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/WebhookEndpointResource"
            },
            "title": "Data",
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "title": "Links",
            "type": "object"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta",
          "links"
        ],
        "title": "WebhookEndpointListResponse",
        "type": "object"
      },
      "WebhookEndpointResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/WebhookEndpointAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "webhook_endpoints",
            "default": "webhook_endpoints",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "WebhookEndpointResource",
        "type": "object"
      },
      "WebhookEndpointResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebhookEndpointResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "WebhookEndpointResponse",
        "type": "object"
      },
      "WebhookEventAttributes": {
        "additionalProperties": false,
        "properties": {
          "api_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Version"
          },
          "attempts": {
            "default": 1,
            "title": "Attempts",
            "type": "integer"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "event_type": {
            "title": "Event Type",
            "type": "string"
          },
          "external_account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Account Id"
          },
          "external_event_id": {
            "title": "External Event Id",
            "type": "string"
          },
          "livemode": {
            "default": false,
            "title": "Livemode",
            "type": "boolean"
          },
          "processed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processed At"
          },
          "provider": {
            "title": "Provider",
            "type": "string"
          },
          "received_at": {
            "format": "date-time",
            "title": "Received At",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "provider",
          "external_event_id",
          "event_type",
          "status",
          "received_at"
        ],
        "title": "WebhookEventAttributes",
        "type": "object"
      },
      "WebhookEventListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/WebhookEventResource"
            },
            "title": "Data",
            "type": "array"
          },
          "meta": {
            "additionalProperties": true,
            "title": "Meta",
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "WebhookEventListResponse",
        "type": "object"
      },
      "WebhookEventResource": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/WebhookEventAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "payment_webhook_events",
            "default": "payment_webhook_events",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "attributes"
        ],
        "title": "WebhookEventResource",
        "type": "object"
      },
      "WebhookEventResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebhookEventResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "WebhookEventResponse",
        "type": "object"
      },
      "WebhookNode": {
        "additionalProperties": false,
        "description": "A ``webhook`` node that POSTs a signed payload to an external URL.\n\nThe node handler (in ``nodes.py``) records a ``webhook_deliveries`` row\n(status ``pending``) and advances the enrollment.  The actual HTTP POST\nis performed asynchronously by the T7 delivery worker.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/WebhookNodeConfig"
          },
          "id": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "webhook",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id",
          "config"
        ],
        "title": "WebhookNode",
        "type": "object"
      },
      "WebhookNodeConfig": {
        "additionalProperties": false,
        "description": "Config for a ``webhook`` node.\n\nV1 uses ``webhook_endpoint_id`` (references a ``webhook_endpoints`` row\nthat holds the target_url + signing_secret).  The URL is validated once\nat endpoint-registration time; the SSRF guard re-checks at delivery time\nto defeat DNS rebinding.\n\n``webhook_endpoint_id`` is the preferred (and only V1) form.  A future\nversion may add an inline ``url`` field for one-off targets.\n\n``payload_template`` is an optional dict of extra fields to merge into\nthe automation envelope payload before posting.  Defaults to an empty\ndict (the standard automation envelope is always included).",
        "properties": {
          "payload_template": {
            "additionalProperties": true,
            "title": "Payload Template",
            "type": "object"
          },
          "webhook_endpoint_id": {
            "maxLength": 64,
            "minLength": 1,
            "title": "Webhook Endpoint Id",
            "type": "string"
          }
        },
        "required": [
          "webhook_endpoint_id"
        ],
        "title": "WebhookNodeConfig",
        "type": "object"
      },
      "_AdminTeamTranscriptionData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/AdminTeamTranscriptionAttributes"
          },
          "type": {
            "default": "team_transcription_settings",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "_AdminTeamTranscriptionData",
        "type": "object"
      },
      "_AudienceCreateAttributes": {
        "properties": {
          "contact_id": {
            "title": "Contact Id",
            "type": "string"
          }
        },
        "required": [
          "contact_id"
        ],
        "title": "_AudienceCreateAttributes",
        "type": "object"
      },
      "_AudienceCreateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_AudienceCreateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_AudienceCreateData",
        "type": "object"
      },
      "_ConsentRequest": {
        "description": "Body for POST /oauth/consent.\n\nCarries ONLY the opaque consent_request_id.  The client cannot supply\nredirect_uri / scope / contact here \u2014 those are read from the server-side\ncontext keyed by this id and re-verified before a code is minted.",
        "properties": {
          "consent_request_id": {
            "title": "Consent Request Id",
            "type": "string"
          }
        },
        "required": [
          "consent_request_id"
        ],
        "title": "_ConsentRequest",
        "type": "object"
      },
      "_ConsentRequiredResponse": {
        "description": "Returned when the contact must approve consent before a code is issued.\n\n``consent_request_id`` is an OPAQUE handle to the SERVER-SIDE pending-authorize\ncontext (held in Valkey, single-use, 5-min TTL).  It carries no bound params \u2014\nredirect_uri / scope binding / PKCE / contact all stay server-side \u2014 so the\nclient cannot forge or tamper with them.  The frontend renders the branded\nconsent screen from the display fields and POSTs the consent_request_id back.",
        "properties": {
          "brand_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Brand Label"
          },
          "client_name": {
            "title": "Client Name",
            "type": "string"
          },
          "consent_request_id": {
            "title": "Consent Request Id",
            "type": "string"
          },
          "consent_required": {
            "default": true,
            "title": "Consent Required",
            "type": "boolean"
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url"
          },
          "scope": {
            "items": {
              "type": "string"
            },
            "title": "Scope",
            "type": "array"
          }
        },
        "required": [
          "consent_request_id",
          "client_name",
          "scope"
        ],
        "title": "_ConsentRequiredResponse",
        "type": "object"
      },
      "_ConversationAudienceUpdateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ConversationAudienceUpdateAttributes"
          },
          "type": {
            "const": "conversation_audiences",
            "default": "conversation_audiences",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "_ConversationAudienceUpdateData",
        "type": "object"
      },
      "_ConversationCreateAttributes": {
        "properties": {
          "audience_contact_ids": {
            "items": {
              "type": "string"
            },
            "title": "Audience Contact Ids",
            "type": "array"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "required": [
          "audience_contact_ids"
        ],
        "title": "_ConversationCreateAttributes",
        "type": "object"
      },
      "_ConversationCreateData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_ConversationCreateAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_ConversationCreateData",
        "type": "object"
      },
      "_ConversationPatchAttributes": {
        "properties": {
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "title": "_ConversationPatchAttributes",
        "type": "object"
      },
      "_ConversationPatchData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_ConversationPatchAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_ConversationPatchData",
        "type": "object"
      },
      "_EditAttributes": {
        "properties": {
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "words": {
            "items": {
              "$ref": "#/components/schemas/EditWord"
            },
            "title": "Words",
            "type": "array"
          }
        },
        "required": [
          "words"
        ],
        "title": "_EditAttributes",
        "type": "object"
      },
      "_EditData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_EditAttributes"
          },
          "type": {
            "default": "transcripts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "_EditData",
        "type": "object"
      },
      "_LanguageAttributes": {
        "properties": {
          "transcription_language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transcription Language"
          }
        },
        "title": "_LanguageAttributes",
        "type": "object"
      },
      "_LanguageData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_LanguageAttributes"
          },
          "type": {
            "default": "team_transcription_settings",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "_LanguageData",
        "type": "object"
      },
      "_MarkAllReadAttributes": {
        "properties": {
          "up_to": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Up To"
          }
        },
        "title": "_MarkAllReadAttributes",
        "type": "object"
      },
      "_MarkAllReadData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_MarkAllReadAttributes"
          },
          "type": {
            "const": "conversation_read_receipts",
            "default": "conversation_read_receipts",
            "title": "Type",
            "type": "string"
          }
        },
        "title": "_MarkAllReadData",
        "type": "object"
      },
      "_MessageEditAttributes": {
        "properties": {
          "attachments": {
            "items": {
              "type": "string"
            },
            "title": "Attachments",
            "type": "array"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "external_video_embeds": {
            "items": {
              "type": "string"
            },
            "title": "External Video Embeds",
            "type": "array"
          }
        },
        "title": "_MessageEditAttributes",
        "type": "object"
      },
      "_MessageEditData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_MessageEditAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_MessageEditData",
        "type": "object"
      },
      "_MessageReadAttributes": {
        "properties": {
          "up_to_message_id": {
            "title": "Up To Message Id",
            "type": "string"
          }
        },
        "required": [
          "up_to_message_id"
        ],
        "title": "_MessageReadAttributes",
        "type": "object"
      },
      "_MessageReadData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_MessageReadAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_MessageReadData",
        "type": "object"
      },
      "_MessageSendAttributes": {
        "properties": {
          "attachments": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attachments"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "external_video_embeds": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Video Embeds"
          },
          "reply_to_message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reply To Message Id"
          }
        },
        "title": "_MessageSendAttributes",
        "type": "object"
      },
      "_MessageSendData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_MessageSendAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_MessageSendData",
        "type": "object"
      },
      "_ResolveData": {
        "additionalProperties": false,
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/ExternalVideoEmbedResolveAttributes"
          },
          "type": {
            "const": "external_video_embed_requests",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_ResolveData",
        "type": "object"
      },
      "_RevertAttributes": {
        "properties": {
          "version": {
            "maximum": 2147483647.0,
            "minimum": 1.0,
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "version"
        ],
        "title": "_RevertAttributes",
        "type": "object"
      },
      "_RevertData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_RevertAttributes"
          },
          "type": {
            "default": "transcripts",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "attributes"
        ],
        "title": "_RevertData",
        "type": "object"
      },
      "_SessionRequest": {
        "properties": {
          "code": {
            "title": "Code",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "title": "_SessionRequest",
        "type": "object"
      },
      "_TypingAttributes": {
        "properties": {
          "state": {
            "default": "start",
            "enum": [
              "start",
              "stop"
            ],
            "title": "State",
            "type": "string"
          }
        },
        "title": "_TypingAttributes",
        "type": "object"
      },
      "_TypingData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_TypingAttributes",
            "default": {
              "state": "start"
            }
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "_TypingData",
        "type": "object"
      },
      "_UploadTranscriptAttributes": {
        "properties": {
          "language": {
            "title": "Language",
            "type": "string"
          },
          "words": {
            "items": {
              "$ref": "#/components/schemas/_UploadTranscriptWord"
            },
            "title": "Words",
            "type": "array"
          }
        },
        "required": [
          "language",
          "words"
        ],
        "title": "_UploadTranscriptAttributes",
        "type": "object"
      },
      "_UploadTranscriptData": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/_UploadTranscriptAttributes"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "attributes"
        ],
        "title": "_UploadTranscriptData",
        "type": "object"
      },
      "_UploadTranscriptWord": {
        "properties": {
          "confidence": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confidence"
          },
          "end_ms": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "End Ms",
            "type": "integer"
          },
          "speaker_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Speaker Label"
          },
          "start_ms": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Start Ms",
            "type": "integer"
          },
          "word": {
            "title": "Word",
            "type": "string"
          }
        },
        "required": [
          "word",
          "start_ms",
          "end_ms"
        ],
        "title": "_UploadTranscriptWord",
        "type": "object"
      },
      "app__comments__schemas__ReactionGroupAttributes": {
        "description": "Attributes for a comment_reaction_groups JSON:API resource object.\n\nRepresents a per-emoji aggregate for a comment's reactions.\n\nFields:\n  emoji:          The emoji character(s), e.g. \"\ud83d\udc4d\".\n  count:          Total number of reactions with this emoji.\n  reacted_by_me:  True if the requesting contact reacted with this emoji.\n  my_reaction_id: UUID of the requesting contact's reaction, or None.\n\nDecision A2 (\u00a710): stable scoped id = \"<comment_id>:<emoji>\".",
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "emoji": {
            "title": "Emoji",
            "type": "string"
          },
          "my_reaction_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "My Reaction Id"
          },
          "reacted_by_me": {
            "title": "Reacted By Me",
            "type": "boolean"
          }
        },
        "required": [
          "emoji",
          "count",
          "reacted_by_me",
          "my_reaction_id"
        ],
        "title": "ReactionGroupAttributes",
        "type": "object"
      },
      "app__community__routers__spaces_admin__ReorderEnvelope": {
        "description": "JSON:API reorder envelope: {data: [{type, id}, ...]}.",
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/app__community__routers__spaces_admin__ReorderItem"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReorderEnvelope",
        "type": "object"
      },
      "app__community__routers__spaces_admin__ReorderItem": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "id"
        ],
        "title": "ReorderItem",
        "type": "object"
      },
      "app__community__schemas__ReactionGroupAttributes": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "emoji": {
            "title": "Emoji",
            "type": "string"
          },
          "my_reaction_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "My Reaction Id"
          },
          "reacted_by_me": {
            "title": "Reacted By Me",
            "type": "boolean"
          }
        },
        "required": [
          "emoji",
          "count",
          "reacted_by_me"
        ],
        "title": "ReactionGroupAttributes",
        "type": "object"
      },
      "app__community__schemas__ReadReceiptAttributes": {
        "description": "Attributes for the mark-all-read receipt resource.",
        "properties": {
          "marked_count": {
            "title": "Marked Count",
            "type": "integer"
          },
          "read_at": {
            "title": "Read At",
            "type": "string"
          }
        },
        "required": [
          "read_at",
          "marked_count"
        ],
        "title": "ReadReceiptAttributes",
        "type": "object"
      },
      "app__content__schemas__ReorderEnvelope": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReorderResource"
          }
        },
        "required": [
          "data"
        ],
        "title": "ReorderEnvelope",
        "type": "object"
      },
      "app__content__schemas__ReorderItem": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "position": {
            "maximum": 2147483647.0,
            "minimum": 0.0,
            "title": "Position",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "position"
        ],
        "title": "ReorderItem",
        "type": "object"
      },
      "app__infrastructure__base_schema__JsonApiResource_ReadReceiptAttributes___1": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/app__community__schemas__ReadReceiptAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ReadReceiptAttributes]",
        "type": "object"
      },
      "app__infrastructure__base_schema__JsonApiResource_ReadReceiptAttributes___2": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/app__notifications__schemas__ReadReceiptAttributes"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "links": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonApiLinks"
              },
              {
                "type": "null"
              }
            ]
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta"
          },
          "relationships": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relationships"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "attributes"
        ],
        "title": "JsonApiResource[ReadReceiptAttributes]",
        "type": "object"
      },
      "app__notifications__schemas__ReadReceiptAttributes": {
        "description": "Attributes for the notification_read_receipts resource.",
        "properties": {
          "marked_count": {
            "title": "Marked Count",
            "type": "integer"
          },
          "read_at": {
            "format": "date-time",
            "title": "Read At",
            "type": "string"
          }
        },
        "required": [
          "read_at",
          "marked_count"
        ],
        "title": "ReadReceiptAttributes",
        "type": "object"
      },
      "post_unsubscribe": {
        "properties": {
          "List-Unsubscribe": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "RFC 8058 form field; value should be 'One-Click'.",
            "title": "List-Unsubscribe"
          }
        },
        "title": "Body_email-unsubscribe.post_unsubscribe",
        "type": "object"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "scheme": "bearer",
        "type": "http"
      },
      "bearerAuth": {
        "bearerFormat": "JWT or mio_sk API key",
        "description": "Send platform JWTs, contact JWTs, or team API keys as `Authorization: Bearer <token>`.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Production API reference for Membership.io. Use the authored guides for workflows and the generated endpoint pages for exact parameters and schemas.",
    "title": "Membership.io API",
    "version": "0.1.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/.well-known/jwks.json": {
      "get": {
        "description": "Public JWKS endpoint for token verification.",
        "operationId": "well_known.get_well_known_get_well_known_jwks_json",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Well-Known.Get Well-Known Jwks Json",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Jwks Endpoint",
        "tags": [
          "well-known"
        ]
      }
    },
    "/.well-known/openid-configuration": {
      "get": {
        "description": "Returns the OpenID Connect Provider Metadata (RFC 8414 / OIDC Core \u00a74). Standard JSON object \u2014 not a JSON:API resource.",
        "operationId": "well_known.get_well_known_get_well_known_openid_configuration",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenIdConfiguration"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "OIDC Discovery Document",
        "tags": [
          "well-known"
        ]
      }
    },
    "/api/v1/admin/media/{media_id}/re-embed": {
      "post": {
        "description": "Requeue embedding jobs for a media item's search-document chunks.\n\nAcquires a 1-hour Redis lock (media:{id}:embed-lock) using SET NX EX 3600.\nReturns 409 if the lock is already held and force is False.\nWith force=true the lock is overwritten unconditionally.\nReturns 404 if the media_id is unknown.\nRequires platform_admin role.",
        "operationId": "admin_transcription.post_admin_transcription_post_admin_media_by_media_id_re_embed",
        "parameters": [
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "default": false,
              "title": "Force",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Admin-Transcription.Post Admin Media By Media Id Re-Embed",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Re Embed",
        "tags": [
          "admin-transcription"
        ]
      }
    },
    "/api/v1/admin/media/{media_id}/re-transcribe": {
      "post": {
        "operationId": "admin_transcription.post_admin_transcription_post_admin_media_by_media_id_re_transcribe",
        "parameters": [
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "default": false,
              "title": "Force",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Admin-Transcription.Post Admin Media By Media Id Re-Transcribe",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Re Transcribe",
        "tags": [
          "admin-transcription"
        ]
      }
    },
    "/api/v1/admin/media/{media_id}/transcript": {
      "post": {
        "description": "Upload a manual transcript for an existing media item (platform_admin only).\n\nArchives any existing active transcript, then creates a new one with\nstatus='active', provider='manual', cost_origin='platform_admin'.\nReturns 404 if media_id is unknown.",
        "operationId": "admin_transcription.post_admin_transcription_post_admin_media_by_media_id_transcript",
        "parameters": [
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/UploadTranscriptBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Admin-Transcription.Post Admin Media By Media Id Transcript",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Upload Transcript",
        "tags": [
          "admin-transcription"
        ]
      }
    },
    "/api/v1/admin/platform-alerts": {
      "get": {
        "description": "List unresolved platform alerts (most-recent first, paginated).\n\nv1 returns UNRESOLVED alerts only. ``filter[status]`` accepts ``open``\n(the default) and nothing else. ``filter[severity]``, when present, must be\none of ``info`` | ``warning`` | ``critical``. Any other value for either\nfilter is a 422 \u2014 no filter is ever silently ignored.\n\nRequires the ``platform_admin`` role.",
        "operationId": "platform_alerts.get_platform_alerts_get_admin_platform_alerts",
        "parameters": [
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "default": "open",
              "title": "Filter[Status]",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[severity]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Severity]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_PlatformAlertAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Platform Alerts",
        "tags": [
          "platform-alerts"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/files/synthetic": {
      "post": {
        "operationId": "media_admin.post_media_admin_post_admin_teams_by_team_id_files_synthetic",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SyntheticFileCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Register Synthetic File",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/comments": {
      "get": {
        "description": "Admin list comments for a hub \u2014 optionally filtered by target.\n\nIncludes tombstoned (is_deleted=True) comments for moderation review.\nfilter[target_type] and filter[target_id] are optional; when omitted\nthe route returns an empty list (a full cross-target scan is deferred\nto a future search endpoint).",
        "operationId": "comments_admin.get_comments_admin_get_admin_teams_by_team_id_hubs_by_hub_id_comments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[target_type]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Target Type]"
            }
          },
          {
            "in": "query",
            "name": "filter[target_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Target Id]"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Comments",
        "tags": [
          "comments-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/comments/{comment_id}": {
      "delete": {
        "description": "Admin-delete a comment by id (bypasses author check).\n\nRequires platform user JWT with owner role for the given team.",
        "operationId": "comments_admin.delete_comments_admin_delete_admin_teams_by_team_id_hubs_by_hub_id_comments_by_comment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Comment",
        "tags": [
          "comments-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/discussions": {
      "get": {
        "description": "List discussions for a hub (admin view: includes unpublished, soft-deleted).\n\nOptional filters:\n  filter[space_id]    \u2014 restrict to a specific space\n  filter[is_broadcast] \u2014 \"true\" / \"false\" to filter broadcast discussions\n\nPagination:\n  page[after]=<cursor>  keyset cursor (last_activity_at|id)\n  page[size]=N          default 20, max 100",
        "operationId": "community_discussions_admin.get_community_discussions_admin_get_admin_teams_by_team_id_hubs_by_hub_id_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[space_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Space Id]"
            }
          },
          {
            "in": "query",
            "name": "filter[is_broadcast]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Is Broadcast]"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Discussions",
        "tags": [
          "community-discussions-admin"
        ]
      },
      "post": {
        "operationId": "community_discussions_admin.post_community_discussions_admin_post_admin_teams_by_team_id_hubs_by_hub_id_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DiscussionCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Admin Create Discussion",
        "tags": [
          "community-discussions-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/discussions/{discussion_id}": {
      "delete": {
        "description": "Admin soft-delete a discussion.\n\nBypasses author check (admin_override=True).\nReturns 204 No Content on success.",
        "operationId": "community_discussions_admin.delete_community_discussions_admin_delete_admin_teams_by_team_id_hubs_by_hub_id_discussions_by_discussion_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Discussion",
        "tags": [
          "community-discussions-admin"
        ]
      },
      "get": {
        "operationId": "community_discussions_admin.get_community_discussions_admin_get_admin_teams_by_team_id_hubs_by_hub_id_discussions_by_discussion_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Discussion",
        "tags": [
          "community-discussions-admin"
        ]
      },
      "patch": {
        "description": "Admin update of a discussion's lock, pin, or broadcast status.\n\nRouting logic:\n  is_locked=True  \u2192 lock_discussion()\n  is_locked=False \u2192 unlock_discussion()\n  is_pinned=True  \u2192 pin_discussion()\n  is_pinned=False \u2192 unpin_discussion()\n  is_broadcast    \u2192 update_discussion(is_admin=True) with flip-detection\n\nMultiple attributes may be sent; each is applied in order.",
        "operationId": "community_discussions_admin.patch_community_discussions_admin_patch_admin_teams_by_team_id_hubs_by_hub_id_discussions_by_discussion_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DiscussionPatchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Patch Discussion",
        "tags": [
          "community-discussions-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/members": {
      "get": {
        "operationId": "hub_memberships_admin.get_hub_memberships_admin_get_admin_teams_by_team_id_hubs_by_hub_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Hub Members",
        "tags": [
          "hub-memberships-admin"
        ]
      },
      "post": {
        "operationId": "hub_memberships_admin.post_hub_memberships_admin_post_admin_teams_by_team_id_hubs_by_hub_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubMembershipCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Idempotent re-add of an already-active member"
          },
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add Hub Member",
        "tags": [
          "hub-memberships-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/members/{contact_id}": {
      "delete": {
        "operationId": "hub_memberships_admin.delete_hub_memberships_admin_delete_admin_teams_by_team_id_hubs_by_hub_id_members_by_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "No hub_memberships row for this (hub_id, contact_id) ever existed."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Target holds the 'owner' role (code=owner_must_transfer_ownership). A hub must never be left ownerless \u2014 transfer ownership to a different member before removing the current owner. Applies regardless of who is acting."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove Hub Member",
        "tags": [
          "hub-memberships-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/ban": {
      "post": {
        "description": "Issue a standalone hard ban on a hub member (no prior report required).\n\nReturns 201 + the new moderation_actions resource on success.\nReturns 403 when the action is blocked (e.g. banning the hub owner).\nReturns 422 when the action_type is invalid.",
        "operationId": "community_moderation_admin.post_community_moderation_admin_post_admin_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_ban",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/StandaloneActionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ModerationActionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ban Member",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/role": {
      "patch": {
        "description": "Assign or clear a hub member's elevated role.\n\n200: updated hub_memberships resource. 404: missing/left membership.\n409: banned/soft_banned and not assignable (code=membership_not_active), OR\nthe target's current role is already 'owner' \u2014 ownership cannot be\nreassigned or cleared via this endpoint, only via the dedicated\nownership-transfer endpoint (code=cannot_modify_owner_role). 422: invalid\nrole. 401/403 are produced by require_hub_admin_or_contact.",
        "operationId": "hub_memberships_admin.patch_hub_memberships_admin_patch_admin_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_role",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubMembershipRoleUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set Member Role",
        "tags": [
          "hub-memberships-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/soft_ban": {
      "post": {
        "description": "Issue a standalone soft (temporary) ban on a hub member.\n\nBody may include `soft_ban_until` (ISO 8601 datetime) to set the\nexpiry. Defaults to now + 7 days when not provided.\n\nReturns 201 + the new moderation_actions resource on success.\nReturns 403 when the action is blocked (e.g. soft-banning the hub owner).\nReturns 422 when the action_type is invalid.",
        "operationId": "community_moderation_admin.post_community_moderation_admin_post_admin_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_soft_ban",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/StandaloneActionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ModerationActionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Soft Ban Member",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/unban": {
      "post": {
        "description": "Unban a hub member (no prior report required).\n\nReturns 201 + the new moderation_actions resource on success.\nReturns 403 when the action is blocked.\nReturns 422 when the action_type is invalid.",
        "operationId": "community_moderation_admin.post_community_moderation_admin_post_admin_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_unban",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/StandaloneActionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ModerationActionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unban Member",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/warn": {
      "post": {
        "description": "Issue a standalone warning to a hub member (no prior report required).\n\nReturns 201 + the new moderation_actions resource on success.\nReturns 403 when the action is blocked (e.g. warning the hub owner).\nReturns 422 when the action_type is invalid.",
        "operationId": "community_moderation_admin.post_community_moderation_admin_post_admin_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_warn",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/StandaloneActionBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ModerationActionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Warn Member",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/audit-log": {
      "get": {
        "description": "Return the paginated moderation audit log for a hub.\n\nQuery parameters:\n  filter[action_type]    \u2014 optional; restrict to one action_type.\n  filter[admin_user_id]  \u2014 optional; restrict to one admin actor.\n  page[size]             \u2014 1-100, default 50.\n  page[after]            \u2014 opaque cursor from previous page's meta.next_cursor.\n  format                 \u2014 optional; 'json' returns a flat JSON array (for export).\n                           Default returns a JSON:API envelope.",
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_audit_log",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[action_type]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Action Type]"
            }
          },
          {
            "in": "query",
            "name": "filter[admin_user_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Admin User Id]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "format",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Format"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_ModerationActionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Audit Log",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/banned-members": {
      "get": {
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_banned_members",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "description": "Sort order for the banned list. One of: -ban_note, -ban_reason, -banned_at, -banned_by_name, -member_name, ban_note, ban_reason, banned_at, banned_by_name, member_name",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-banned_at",
              "description": "Sort order for the banned list. One of: -ban_note, -ban_reason, -banned_at, -banned_by_name, -member_name, ban_note, ban_reason, banned_at, banned_by_name, member_name",
              "enum": [
                "-ban_note",
                "-ban_reason",
                "-banned_at",
                "-banned_by_name",
                "-member_name",
                "ban_note",
                "ban_reason",
                "banned_at",
                "banned_by_name",
                "member_name"
              ],
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/BannedMemberListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Banned Members",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/content/{content_type}/{content_id}": {
      "get": {
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_content_by_content_type_by_content_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_type",
            "required": true,
            "schema": {
              "title": "Content Type",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_id",
            "required": true,
            "schema": {
              "title": "Content Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationContentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "View Moderation Content",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/content/{content_type}/{content_id}/remove": {
      "post": {
        "operationId": "community_moderation_admin.post_community_moderation_admin_post_admin_teams_by_team_id_hubs_by_hub_id_moderation_content_by_content_type_by_content_id_remove",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_type",
            "required": true,
            "schema": {
              "title": "Content Type",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_id",
            "required": true,
            "schema": {
              "title": "Content Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove Content",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/content/{content_type}/{content_id}/report-summary": {
      "get": {
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_content_by_content_type_by_content_id_report_summary",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_type",
            "required": true,
            "schema": {
              "title": "Content Type",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_id",
            "required": true,
            "schema": {
              "title": "Content Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationReportSummaryResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Moderation Report Summary",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/content/{content_type}/{content_id}/restore": {
      "post": {
        "operationId": "community_moderation_admin.post_community_moderation_admin_post_admin_teams_by_team_id_hubs_by_hub_id_moderation_content_by_content_type_by_content_id_restore",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_type",
            "required": true,
            "schema": {
              "title": "Content Type",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_id",
            "required": true,
            "schema": {
              "title": "Content Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Restore Content",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/counts": {
      "get": {
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_counts",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ModerationCountsAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Moderation Counts",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/queue": {
      "get": {
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_queue",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "default": "pending",
              "title": "Filter[Status]",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[reportable_type]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Reportable Type]"
            }
          },
          {
            "description": "Sort order for the queue. One of: -author_name, -content, -last_reported_at, -report_count, -reportable_type, author_name, content, last_reported_at, report_count, reportable_type",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-last_reported_at",
              "description": "Sort order for the queue. One of: -author_name, -content, -last_reported_at, -report_count, -reportable_type, author_name, content, last_reported_at, report_count, reportable_type",
              "enum": [
                "-author_name",
                "-content",
                "-last_reported_at",
                "-report_count",
                "-reportable_type",
                "author_name",
                "content",
                "last_reported_at",
                "report_count",
                "reportable_type"
              ],
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminQueueReportListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Moderation Queue",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/removed": {
      "get": {
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_removed",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "description": "Sort order for the removed list. One of: -author_name, -content, -content_type, -removed_at, -report_count, author_name, content, content_type, removed_at, report_count",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-removed_at",
              "description": "Sort order for the removed list. One of: -author_name, -content, -content_type, -removed_at, -report_count, author_name, content, content_type, removed_at, report_count",
              "enum": [
                "-author_name",
                "-content",
                "-content_type",
                "-removed_at",
                "-report_count",
                "author_name",
                "content",
                "content_type",
                "removed_at",
                "report_count"
              ],
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "filter[content_type]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Content Type]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/RemovedContentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Removed Content",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/moderation/reports/{report_id}": {
      "get": {
        "description": "Fetch a single moderation report (admin view).\n\nReturns 200 + the report resource on success.\nReturns 404 when the report does not exist or does not belong to this hub.",
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_moderation_reports_by_report_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "report_id",
            "required": true,
            "schema": {
              "title": "Report Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AdminModerationReportAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Report",
        "tags": [
          "community-moderation-admin"
        ]
      },
      "patch": {
        "description": "Resolve a pending moderation report.\n\nAccepted resolutions: dismissed | deleted | warned | banned | soft_banned.\n\nReturns 200 + updated report on success.\nReturns 404 when the report does not exist.\nReturns 409 when the report has already been resolved.\nReturns 422 when the resolution value is invalid.\nReturns 403 when the resolution is blocked (e.g. banning the hub owner).\nReturns 501 when the resolution path is not yet implemented (e.g. delete_content\n         cascade, message type).",
        "operationId": "community_moderation_admin.patch_community_moderation_admin_patch_admin_teams_by_team_id_hubs_by_hub_id_moderation_reports_by_report_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "report_id",
            "required": true,
            "schema": {
              "title": "Report Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveReportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AdminModerationReportAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Resolve Report",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/ownership-transfer": {
      "post": {
        "operationId": "hub_memberships_admin.post_hub_memberships_admin_post_admin_teams_by_team_id_hubs_by_hub_id_ownership_transfer",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubOwnershipTransferRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found. errors[0].code is always \"ownership_transfer_not_found\" \u2014 covers both: the hub does not resolve under this team, OR new_owner_contact_id has no hub_memberships row on this hub at all."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict. errors[0].code distinguishes the reason clients must branch on: \"no_current_owner\" / \"multiple_owners\" (corrupted precondition \u2014 the hub has zero or 2+ role='owner' rows); \"current_owner_not_eligible\" (the outgoing owner is banned/soft_banned/left/soft-deleted and force was not set); \"owner_changed_concurrently\" (a concurrent write changed ownership between this request's read and its write \u2014 retry); \"recipient_not_eligible\" (the incoming member is banned/soft_banned/left, or their contact is soft-deleted \u2014 force never overrides this one)."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error. errors[0].code is \"invalid_ownership_transfer\" \u2014 covers an out-of-range demote_to (also enforced by the request schema's Literal) and new_owner_contact_id equal to the current owner when it is NOT eligible for the idempotent no-op path."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Transfer Ownership",
        "tags": [
          "hub-memberships-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/report-reasons": {
      "get": {
        "description": "List report reasons for a hub (platform defaults + hub-scoped, active only).\n\nReturns all active reasons visible to the hub, ordered by (position, id).",
        "operationId": "community_moderation_admin.get_community_moderation_admin_get_admin_teams_by_team_id_hubs_by_hub_id_report_reasons",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportReasonListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Report Reasons",
        "tags": [
          "community-moderation-admin"
        ]
      },
      "post": {
        "description": "Create a new hub-scoped report reason.\n\nReturns 422 when a reason with the same label already exists for this hub.",
        "operationId": "community_moderation_admin.post_community_moderation_admin_post_admin_teams_by_team_id_hubs_by_hub_id_report_reasons",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ReportReasonCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportReasonResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Report Reason",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/report-reasons/{reason_id}": {
      "delete": {
        "description": "Soft-delete a hub-scoped report reason (sets is_active=False).\n\nReturns 403 when trying to delete a platform-default reason.\nReturns 404 when the reason does not exist.\nReturns 204 No Content on success.",
        "operationId": "community_moderation_admin.delete_community_moderation_admin_delete_admin_teams_by_team_id_hubs_by_hub_id_report_reasons_by_reason_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "reason_id",
            "required": true,
            "schema": {
              "title": "Reason Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Report Reason",
        "tags": [
          "community-moderation-admin"
        ]
      },
      "patch": {
        "description": "Update a hub-scoped report reason's label, position, or active status.\n\nReturns 403 when trying to modify a platform-default reason.\nReturns 404 when the reason does not exist.\nReturns 422 when the new label already exists for this hub.",
        "operationId": "community_moderation_admin.patch_community_moderation_admin_patch_admin_teams_by_team_id_hubs_by_hub_id_report_reasons_by_reason_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "reason_id",
            "required": true,
            "schema": {
              "title": "Reason Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ReportReasonUpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportReasonResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Report Reason",
        "tags": [
          "community-moderation-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/spaces/": {
      "get": {
        "operationId": "community_spaces_admin.get_community_spaces_admin_get_admin_teams_by_team_id_hubs_by_hub_id_spaces",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_SpaceResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Spaces",
        "tags": [
          "community-spaces-admin"
        ]
      },
      "post": {
        "description": "Create a new space inside a hub.\n\nRaises:\n    409 Conflict if the slug is already in use within the hub.\n    422 Unprocessable Entity if segment_id does not exist.",
        "operationId": "community_spaces_admin.post_community_spaces_admin_post_admin_teams_by_team_id_hubs_by_hub_id_spaces",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SpaceCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SpaceResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Space",
        "tags": [
          "community-spaces-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/spaces/reorder": {
      "post": {
        "description": "Reorder spaces within a hub.\n\nAccepts an ordered list of space resource identifiers. Position is set\nto the index of each space_id in the list (0-based).\n\nReturns the full updated list of spaces in the new order via\nlist_all_spaces_for_hub, bounded only by that module's shared 500-space\nsafety ceiling (logged on cap-hit) \u2014 not the 20-row page cap that\nlist_spaces_for_hub would otherwise impose on a reorder confirmation.",
        "operationId": "community_spaces_admin.post_community_spaces_admin_post_admin_teams_by_team_id_hubs_by_hub_id_spaces_reorder",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/app__community__routers__spaces_admin__ReorderEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_SpaceResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Reorder Spaces",
        "tags": [
          "community-spaces-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/hubs/{hub_id}/spaces/{space_id}": {
      "delete": {
        "description": "Soft-delete a space.",
        "operationId": "community_spaces_admin.delete_community_spaces_admin_delete_admin_teams_by_team_id_hubs_by_hub_id_spaces_by_space_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Space",
        "tags": [
          "community-spaces-admin"
        ]
      },
      "get": {
        "description": "Retrieve a single space by ID.",
        "operationId": "community_spaces_admin.get_community_spaces_admin_get_admin_teams_by_team_id_hubs_by_hub_id_spaces_by_space_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SpaceResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Space",
        "tags": [
          "community-spaces-admin"
        ]
      },
      "patch": {
        "description": "Partial update of a space. Only supplied attributes are modified.",
        "operationId": "community_spaces_admin.patch_community_spaces_admin_patch_admin_teams_by_team_id_hubs_by_hub_id_spaces_by_space_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SpaceUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SpaceResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Space",
        "tags": [
          "community-spaces-admin"
        ]
      }
    },
    "/api/v1/admin/teams/{team_id}/transcription-settings": {
      "get": {
        "description": "Platform-admin read of a team's transcription settings.\n\nREAD-ONLY \u2014 never creates a `team_settings` row. A team with no row yet\nreturns computed defaults (transcription_enabled=False, auto_chapters=False,\ntranscribe_seconds_quota=MEDIA_DEFAULT_TEAM_TRANSCRIBE_SECONDS,\nconsumed_seconds=0), the same shape a configured team would return.\n\nDeliberately does not 404 on an unknown team_id \u2014 this route reads\nteam_settings state only (never the teams table), so returning computed\ndefaults for any id is a harmless no-op consistent with \"GET must not\nhave a write side effect and must not require an extra existence check.\"\nPATCH performs the real existence check because it is the route that\nwould otherwise silently create an orphaned team_settings row.",
        "operationId": "admin_transcription.get_admin_transcription_get_admin_teams_by_team_id_transcription_settings",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AdminTeamTranscriptionReadAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Admin Team Transcription Settings",
        "tags": [
          "admin-transcription"
        ]
      },
      "patch": {
        "operationId": "admin_transcription.patch_admin_transcription_patch_admin_teams_by_team_id_transcription_settings",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AdminTeamTranscriptionPatchBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AdminTeamTranscriptionReadAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Admin Team Transcription Settings",
        "tags": [
          "admin-transcription"
        ]
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "description": "Authenticate user credentials and return access tokens.",
        "operationId": "auth.post_auth_post_auth_login",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Login",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "description": "Blacklist access token and revoke refresh token.",
        "operationId": "auth.post_auth_post_auth_logout",
        "responses": {
          "204": {
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Logout",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/me": {
      "get": {
        "description": "Return the currently authenticated user's profile.",
        "operationId": "auth.get_auth_get_auth_me",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_UserAttributes_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Me",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/refresh": {
      "post": {
        "description": "Exchange a refresh token for a new access token.",
        "operationId": "auth.post_auth_post_auth_refresh",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Refresh Token",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/register": {
      "post": {
        "description": "Register a new user and return access tokens.",
        "operationId": "auth.post_auth_post_auth_register",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Register",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/comments": {
      "get": {
        "operationId": "comments.get_comments_get_comments",
        "parameters": [
          {
            "in": "query",
            "name": "target_type",
            "required": true,
            "schema": {
              "title": "Target Type",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "target_id",
            "required": true,
            "schema": {
              "title": "Target Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "created_at",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Comments",
        "tags": [
          "comments"
        ]
      },
      "post": {
        "operationId": "comments.post_comments_post_comments",
        "parameters": [
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Comment",
        "tags": [
          "comments"
        ]
      }
    },
    "/api/v1/comments/{comment_id}": {
      "delete": {
        "description": "Soft-delete a comment (author only).",
        "operationId": "comments.delete_comments_delete_comments_by_comment_id",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Comment",
        "tags": [
          "comments"
        ]
      },
      "get": {
        "description": "Get a single comment by ID.\n\nTombstoned comments (is_deleted=True) are returned with body='[deleted]'.",
        "operationId": "comments.get_comments_get_comments_by_comment_id",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Comment",
        "tags": [
          "comments"
        ]
      },
      "patch": {
        "operationId": "comments.patch_comments_patch_comments_by_comment_id",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CommentUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Comment",
        "tags": [
          "comments"
        ]
      }
    },
    "/api/v1/comments/{comment_id}/reactions": {
      "get": {
        "description": "Return emoji reaction groups for a comment.\n\nDedicated endpoint for per-comment reaction refresh \u2014 useful when the\nclient needs an up-to-date reaction bar without re-fetching the full\ncomment payload.\n\nACL gate: the contact must be able to view comments on the comment's\ntarget (via TargetRegistry.can_user_view_comments). This is the same\ngate used by get() and list_for_target(). Mirrors the discussion\nequivalent (GET /api/discussions/{id}/reactions \u00a711 #2).\n\nReturns a JSON:API collection of comment_reaction_groups resources:\n  data: [\n    {\n      \"type\": \"comment_reaction_groups\",\n      \"id\": \"<comment_id>:<emoji>\",\n      \"attributes\": {\n        \"emoji\": \"\ud83d\udc4d\",\n        \"count\": 3,\n        \"reacted_by_me\": true,\n        \"my_reaction_id\": \"rxn-uuid-...\"\n      }\n    },\n    ...\n  ]\n\nReturns 404 when the comment does not exist or is soft-deleted.\nReturns 403 when the contact cannot view comments on the target.\nReturns 401 when unauthenticated.",
        "operationId": "comments.get_comments_get_comments_by_comment_id_reactions",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReactionGroupListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Comment Reactions",
        "tags": [
          "comments"
        ]
      },
      "post": {
        "description": "Add an emoji reaction to a comment.",
        "operationId": "comments.post_comments_post_comments_by_comment_id_reactions",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ReactionCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReactionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add Reaction",
        "tags": [
          "comments"
        ]
      }
    },
    "/api/v1/comments/{comment_id}/reactions/reactors": {
      "get": {
        "description": "List individual reactors (\"who reacted\") for a comment.\n\nPaginated per-(contact, emoji) rows enriched with display_name + signed\nthumbnail avatar_url. Optional ?emoji= filters data (not emoji_counts).\nACL parity with GET /comments/{id}/reactions (404 deleted/missing, 403 unviewable).",
        "operationId": "comments.get_comments_get_comments_by_comment_id_reactions_reactors",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "emoji",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Emoji"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Comment Reaction Reactors",
        "tags": [
          "comments"
        ]
      }
    },
    "/api/v1/comments/{comment_id}/reactions/{reaction_id}": {
      "delete": {
        "description": "Remove an emoji reaction from a comment.",
        "operationId": "comments.delete_comments_delete_comments_by_comment_id_reactions_by_reaction_id",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "reaction_id",
            "required": true,
            "schema": {
              "title": "Reaction Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove Reaction",
        "tags": [
          "comments"
        ]
      }
    },
    "/api/v1/comments/{comment_id}/replies": {
      "get": {
        "operationId": "comments.get_comments_get_comments_by_comment_id_replies",
        "parameters": [
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "created_at",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Comment Replies",
        "tags": [
          "comments"
        ]
      }
    },
    "/api/v1/connect/callback": {
      "get": {
        "description": "Fixed-path OAuth callback for Stripe Connect.\n\nIdentical to onboarding-return but at a fixed URL so it can be\npre-registered in Stripe's redirect URI list without dynamic team_id.",
        "operationId": "checkout_admin.get_checkout_admin_get_connect_callback",
        "parameters": [
          {
            "in": "query",
            "name": "code",
            "required": true,
            "schema": {
              "title": "Code",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": true,
            "schema": {
              "title": "State",
              "type": "string"
            }
          }
        ],
        "responses": {
          "307": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Handle Stripe Connect OAuth return callback (fixed URL)",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/contact-auth/forgot": {
      "post": {
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_forgot",
        "parameters": [
          {
            "in": "header",
            "name": "User-Agent",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "User-Agent"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ForgotPasswordEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Forgot Password",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/login": {
      "post": {
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_login",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequestEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenPairResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Login",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/logout": {
      "post": {
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_logout",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LogoutRequestEnvelope"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Envelope"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Logout",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/logout-everywhere": {
      "post": {
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_logout_everywhere",
        "responses": {
          "204": {
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Logout Everywhere",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/magic": {
      "post": {
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_magic",
        "parameters": [
          {
            "in": "header",
            "name": "User-Agent",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "User-Agent"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MagicLinkRequestEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Request Magic Link",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/magic/consume": {
      "post": {
        "description": "Consume an auth_link magic link and return a fresh token pair.",
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_magic_consume",
        "parameters": [
          {
            "in": "header",
            "name": "User-Agent",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "User-Agent"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MagicLinkConsumeEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenPairResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Consume Magic Link",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/me": {
      "get": {
        "description": "Return the current contact's global identity (JSON:API envelope).",
        "operationId": "contact_auth.get_contact_auth_get_contact_auth_me",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactMeResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Me",
        "tags": [
          "contact-auth"
        ]
      },
      "patch": {
        "operationId": "contact_auth.patch_contact_auth_patch_contact_auth_me",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SelfUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactMeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Me",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs": {
      "get": {
        "description": "Return all hubs the current contact can access.\n\nDefault: every active hub across all the contact's teams (Discord-style).\nPass ?team_id={uuid} to filter to a single team. 403 if the contact is\nnot a member of that team.\n\nJSON:API envelope with resource type \"hubs\". No pagination.",
        "operationId": "contact_auth.get_contact_auth_get_contact_auth_me_hubs",
        "parameters": [
          {
            "description": "Optional team_id filter",
            "in": "query",
            "name": "team_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional team_id filter",
              "title": "Team Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMeListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Me Hubs",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/join": {
      "post": {
        "operationId": "hub_memberships.post_hub_memberships_post_contact_auth_me_hubs_by_hub_id_join",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Self-join a free, registration-enabled hub",
        "tags": [
          "hub-memberships"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/leave": {
      "post": {
        "operationId": "hub_memberships.post_hub_memberships_post_contact_auth_me_hubs_by_hub_id_leave",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Self-service leave hub",
        "tags": [
          "hub-memberships"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/membership": {
      "get": {
        "operationId": "hub_memberships.get_hub_memberships_get_contact_auth_me_hubs_by_hub_id_membership",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SelfHubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Read own hub membership state",
        "tags": [
          "hub-memberships"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/notification-preferences": {
      "get": {
        "operationId": "notification_preferences.get_notification_preferences_get_contact_auth_me_hubs_by_hub_id_notification_preferences",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Notification Preferences",
        "tags": [
          "notification-preferences"
        ]
      },
      "patch": {
        "operationId": "notification_preferences.patch_notification_preferences_patch_contact_auth_me_hubs_by_hub_id_notification_preferences",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Notification Preferences",
        "tags": [
          "notification-preferences"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/notification-prefs": {
      "patch": {
        "description": "Merge the supplied notification preference keys into the contact's prefs.\n\nAllowed keys: email, daily_digest, mobile.\nReturns 422 when the request contains an unknown key.\nReturns 404 when the contact has no membership row for this hub.\n\nThe merge is additive \u2014 keys not present in the request body are preserved.",
        "operationId": "hub_memberships.patch_hub_memberships_patch_contact_auth_me_hubs_by_hub_id_notification_prefs",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationPrefsUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update own hub notification preferences",
        "tags": [
          "hub-memberships"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/onboarding/complete": {
      "post": {
        "operationId": "hub_memberships.post_hub_memberships_post_contact_auth_me_hubs_by_hub_id_onboarding_complete",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mark hub onboarding complete",
        "tags": [
          "hub-memberships"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/privacy": {
      "get": {
        "description": "Return the caller's privacy settings for this hub.",
        "operationId": "member_privacy.get_member_privacy_get_contact_auth_me_hubs_by_hub_id_privacy",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacySettingsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Privacy",
        "tags": [
          "member-privacy"
        ]
      },
      "patch": {
        "operationId": "member_privacy.patch_member_privacy_patch_contact_auth_me_hubs_by_hub_id_privacy",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacySettingsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Privacy",
        "tags": [
          "member-privacy"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/privacy/blocked-members": {
      "get": {
        "description": "Return a keyset-paginated list of members blocked by the caller in this hub.\n\nParked decision #3: group-DM block semantics are deferred; only 1:1 is gated.",
        "operationId": "member_privacy.get_member_privacy_get_contact_auth_me_hubs_by_hub_id_privacy_blocked_members",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/BlockListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Blocked Members",
        "tags": [
          "member-privacy"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/privacy/blocked-members/{blocked_contact_id}": {
      "delete": {
        "description": "Remove a block.  Idempotent \u2014 returns 204 whether or not a block existed.",
        "operationId": "member_privacy.delete_member_privacy_delete_contact_auth_me_hubs_by_hub_id_privacy_blocked_members_by_blocked_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "blocked_contact_id",
            "required": true,
            "schema": {
              "title": "Blocked Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Unblock Member",
        "tags": [
          "member-privacy"
        ]
      },
      "put": {
        "description": "Block a member.  Returns 201 for a new block, 200 if the block already existed.",
        "operationId": "member_privacy.put_member_privacy_put_contact_auth_me_hubs_by_hub_id_privacy_blocked_members_by_blocked_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "blocked_contact_id",
            "required": true,
            "schema": {
              "title": "Blocked Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/BlockResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Block Member",
        "tags": [
          "member-privacy"
        ]
      }
    },
    "/api/v1/contact-auth/me/hubs/{hub_id}/tos/accept": {
      "post": {
        "description": "Accept the Terms of Service for this hub.\n\nVersion-aware acceptance: stamps tos_accepted_at and records the current\nTOS version. A repeat call with the already-current version is a no-op\n(returns 200 with the existing timestamp). After an admin bumps the TOS\nversion with require_acceptance=True, the next call re-stamps tos_accepted_at\nand re-emits TosAccepted.\n\nReturns 401 when no valid contact JWT is present (enforced by\nget_current_contact dependency).\n\nReturns 404 when the contact has no hub_memberships row for this hub,\nwhen the hub does not exist, or when the hub's TOS gate is not enabled\n(enumeration-safe: the caller cannot distinguish these cases).\n\nEmits TosAccepted on each acceptance (initial or re-acceptance after a\nversion bump).",
        "operationId": "hub_memberships.post_hub_memberships_post_contact_auth_me_hubs_by_hub_id_tos_accept",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMembershipAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Accept hub Terms of Service",
        "tags": [
          "hub-memberships"
        ]
      }
    },
    "/api/v1/contact-auth/me/password": {
      "post": {
        "description": "Set the contact's password for the first time.\n\nReturns HTTP 409 if the contact already has a password hash. Clients must\nuse POST /me/password/change to update an existing password.\nReturns the updated /me shape (including has_password: true) on success.",
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_me_password",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SetPasswordEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactMeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Set Password",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/me/password/change": {
      "post": {
        "description": "Change the contact's password, verifying the current one first.\n\nReturns HTTP 422 if current_password is incorrect.\nReturns HTTP 400 if the contact has no password set yet.\nOn success: bumps token_version (invalidates all outstanding refresh\ntokens \u2014 same semantics as logout_everywhere).\nReturns the updated /me shape (including has_password: true) on success.",
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_me_password_change",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactMeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Change Password",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/me/teams/{team_id}/profile": {
      "get": {
        "description": "Return the current contact's team-scoped profile for the given team.",
        "operationId": "contact_auth.get_contact_auth_get_contact_auth_me_teams_by_team_id_profile",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamProfileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Team Profile",
        "tags": [
          "contact-auth"
        ]
      },
      "patch": {
        "description": "Update the current contact's team-scoped profile for the given team.",
        "operationId": "contact_auth.patch_contact_auth_patch_contact_auth_me_teams_by_team_id_profile",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TeamProfileUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamProfileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Team Profile",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/refresh": {
      "post": {
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_refresh",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/RefreshRequestEnvelope"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Envelope"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenPairResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Refresh",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/register": {
      "post": {
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_register",
        "parameters": [
          {
            "in": "header",
            "name": "User-Agent",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "User-Agent"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequestEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Register",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/contact-auth/reset": {
      "post": {
        "description": "Consume a password_reset link, set new password, return fresh tokens.",
        "operationId": "contact_auth.post_contact_auth_post_contact_auth_reset",
        "parameters": [
          {
            "in": "header",
            "name": "User-Agent",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "User-Agent"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequestEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenPairResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Reset Password",
        "tags": [
          "contact-auth"
        ]
      }
    },
    "/api/v1/conversations/{conversation_id}/audiences/me": {
      "patch": {
        "description": "Update the caller's own pin/mute/archive state for a conversation.\n\nPrivate per-member state \u2014 only affects the caller's own view. Only the\nflags supplied in the request body are written (partial update); an\nall-omitted body is rejected as 422 by ConversationAudienceUpdateAttributes\nbefore this handler ever runs.\n\nReturns 200 with the caller's conversation_audiences resource (all three\nflags always included).\nReturns 403 conversation_access_denied when the caller is not an active\nmember. 403 member_banned / member_not_in_hub on ban. 404\nconversation_not_found when missing/soft-deleted. 422\npin_archived_conversation when the request would pin and archive in the\nsame call.\nRequires Content-Type: application/vnd.api+json.",
        "operationId": "community_conversations.patch_community_conversations_patch_conversations_by_conversation_id_audiences_me",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ConversationAudienceUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ConversationAudienceAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Own Audience State",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/conversations/{conversation_id}/messages": {
      "get": {
        "operationId": "community_messages.get_community_messages_get_conversations_by_conversation_id_messages",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_MessageResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Messages",
        "tags": [
          "community-messages"
        ]
      },
      "post": {
        "operationId": "community_messages.post_community_messages_post_conversations_by_conversation_id_messages",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MessageSendEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_MessageResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Send Message",
        "tags": [
          "community-messages"
        ]
      }
    },
    "/api/v1/conversations/{conversation_id}/messages/mark-read": {
      "post": {
        "operationId": "community_messages.post_community_messages_post_conversations_by_conversation_id_messages_mark_read",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MessageReadEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mark Read",
        "tags": [
          "community-messages"
        ]
      }
    },
    "/api/v1/conversations/{conversation_id}/typing": {
      "post": {
        "operationId": "community_conversations.post_community_conversations_post_conversations_by_conversation_id_typing",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/TypingSignalEnvelope"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Body"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Signal Typing",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/conversations/{id}": {
      "get": {
        "description": "Fetch a single conversation.\n\nReturns 403 when the caller is not an active member (membership-gated).\nReturns 404 when the conversation does not exist or has been soft-deleted.",
        "operationId": "community_conversations.get_community_conversations_get_conversations_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ConversationResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Conversation",
        "tags": [
          "community-conversations"
        ]
      },
      "patch": {
        "operationId": "community_conversations.patch_community_conversations_patch_conversations_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ConversationPatchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ConversationResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Conversation",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/conversations/{id}/audiences": {
      "get": {
        "description": "List the ACTIVE participant roster of a conversation (membership-gated).\n\nReturns each active participant as a conversation_audiences resource with\nits audience_id (the resource id), contact_id, role, and resolved\ndisplay_name. The audience_id feeds DELETE /conversations/{id}/audiences/{audience_id}\nto remove a specific participant.\n\n403 conversation_access_denied when caller is not an active member (generic\nbody \u2014 no enumeration). 403 member_banned / member_not_in_hub on ban. 404\nconversation_not_found when missing/soft-deleted.",
        "operationId": "community_conversations.get_community_conversations_get_conversations_by_id_audiences",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_ConversationAudienceAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Conversation Audiences",
        "tags": [
          "community-conversations"
        ]
      },
      "post": {
        "description": "Add a member to a group DM conversation (admin-only).\n\nReturns 201 with the audience resource on success.\nReturns 403 when the caller is not an admin or not a member.\nReturns 422 when the conversation is a 1:1 DM or the group cap is exceeded.\nReturns 404 when the conversation does not exist.\nRequires Content-Type: application/vnd.api+json.",
        "operationId": "community_conversations.post_community_conversations_post_conversations_by_id_audiences",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AudienceCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ConversationAudienceAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add Member",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/conversations/{id}/audiences/{audience_id}": {
      "delete": {
        "description": "Remove a member from a group DM conversation (admin-only).\n\nURL uses audience_id (the ConversationAudience row UUID). The router fetches\nthe audience row by ID to resolve contact_id, then delegates to\nConversationsService.remove_member(). This is Option A per the spec.\n\nReturns 204 No Content on success.\nReturns 403 when the caller is not an admin or not a member.\nReturns 422 when the conversation is a 1:1 DM.\nReturns 404 when the conversation or audience row does not exist.",
        "operationId": "community_conversations.delete_community_conversations_delete_conversations_by_id_audiences_by_audience_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "audience_id",
            "required": true,
            "schema": {
              "title": "Audience Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove Member",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/conversations/{id}/leave": {
      "post": {
        "description": "Leave a conversation.\n\nFor 1:1: soft-deletes the conversation and marks both participants as left.\nFor group: marks only the caller as left; conversation remains for others.\n\nReturns 204 No Content on success.\nReturns 403 when the caller is not an active member.\nReturns 404 when the conversation does not exist.",
        "operationId": "community_conversations.post_community_conversations_post_conversations_by_id_leave",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Leave Conversation",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}": {
      "delete": {
        "description": "Soft-delete a discussion (author only).\n\nReturns 403 when the caller is not the discussion's author.\nReturns 204 No Content on success.",
        "operationId": "community_discussions.delete_community_discussions_delete_discussions_by_discussion_id",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Discussion",
        "tags": [
          "community-discussions"
        ]
      },
      "get": {
        "operationId": "community_discussions.get_community_discussions_get_discussions_by_discussion_id",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "`errors[0].code` == `space_access_denied`. This route exposes a single collapsed \"cannot view\" 403: the service `can_view()` check folds missing/banned hub membership, unpublished-non-author, missing-space, and restricted-space ACL denial into one outward code. It is a real membership-and-ACL gate, not the absence of one; it is not evidence of a specific segment failure.",
            "x-error-codes": [
              "space_access_denied"
            ]
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-codeless-guard-causes": [
              "missing_hub",
              "discussions_feature_disabled"
            ],
            "x-error-codes": [
              "discussion_not_found"
            ]
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Discussion",
        "tags": [
          "community-discussions"
        ]
      },
      "patch": {
        "operationId": "community_discussions.patch_community_discussions_patch_discussions_by_discussion_id",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "additionalProperties": true,
                "description": "JSON:API partial-update envelope.",
                "properties": {
                  "data": {
                    "properties": {
                      "attributes": {
                        "description": "Partial update \u2014 send only the fields you want to change. title/body/attachments/external_video_embeds are accepted here but not schema-documented (see this endpoint's docstring); `poll` is fully documented below.",
                        "properties": {
                          "poll": {
                            "anyOf": [
                              {
                                "additionalProperties": false,
                                "description": "A poll object: ``options`` is a list of 2-10 plain string labels\n(each 1-280 characters after trimming surrounding whitespace; blank or\nwhitespace-only labels and embedded NUL bytes are rejected).\n``duration_days`` is an integer from 1 to 7 \u2014 the poll closes that many\ndays after it is created. No other fields are accepted. This shape is\nused both to create a poll and, on an existing discussion, to submit a\npoll where the discussion does not already have one \u2014 see the\n``poll`` field description on the discussion create/edit endpoints for\nthe full mutation contract.",
                                "properties": {
                                  "duration_days": {
                                    "maximum": 7,
                                    "minimum": 1,
                                    "title": "Duration Days",
                                    "type": "integer"
                                  },
                                  "options": {
                                    "items": {
                                      "description": "The server trims surrounding whitespace before validating and persists the TRIMMED value \u2014 a label consisting only of whitespace (or empty) is rejected, and embedded NUL (\\u0000) bytes are rejected. `maxLength` is measured against this RAW (untrimmed) value, not the trimmed one: a label padded with leading/trailing whitespace whose RAW length exceeds 280 but TRIMMED length does not is a known, intentionally conservative case where this schema rejects an instance the server actually accepts (there is no schema keyword that can express 'trim, then measure').",
                                      "maxLength": 280,
                                      "pattern": "^(?=.*\\S)[^\\x00]*$",
                                      "type": "string"
                                    },
                                    "maxItems": 10,
                                    "minItems": 2,
                                    "title": "Options",
                                    "type": "array"
                                  }
                                },
                                "required": [
                                  "options",
                                  "duration_days"
                                ],
                                "title": "PollEditInput",
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Edit the discussion's poll. Key absent \u2014 poll left unchanged. Key `null` \u2014 the poll is removed entirely, including its votes; this is allowed regardless of the poll's state (open, closed, with or without votes). Key present as an object (same shape as create: 2-10 plain string options, duration_days 1-7, no option ids) \u2014 creates a new poll, but ONLY when the discussion does not already have one. If a poll already exists, an object value is rejected with 409 `poll_replacement_not_allowed` \u2014 replacing an existing poll in one step is not supported, in any state. To change a poll, remove it first (`poll: null`), then create the new one in a separate request. Malformed option/duration values return 422 `invalid_attribute`."
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "attributes"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "data"
                ],
                "title": "Body",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Discussion",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/poll/votes": {
      "get": {
        "description": "List individual voters (\"who voted\") for a discussion's poll.\n\nPaginated per-vote rows enriched with display_name + signed thumbnail\navatar_url. Optional ?option_id= filters data (not option_counts).\n\nRestricted-space ACL denial returns 404 discussion_not_found \u2014 the SAME\nshape as a genuinely missing discussion \u2014 NOT the 403 space_access_denied\nthe sibling GET /discussions/{id}/reactions/reactors route returns for\nthe identical can_view() failure. A member probing discussion ids must\nnot be able to enumerate which ids exist inside a restricted space they\ncan't access by diffing a 403 (exists, denied) from a 404 (doesn't\nexist) \u2014 reactors/reposters keep their existing 403 (out of scope; see\nthe module docstring's error-mapping table).\n\nRoster visibility rule (server-enforced, matches the poll read gating):\nviewable ONLY when the requesting contact can see results \u2014 they've\nvoted OR the poll is closed. Otherwise 403 poll_results_hidden, even\nthough the caller already passed the discussion-level can_view() ACL \u2014\nseeing the discussion does not imply seeing an unrevealed poll's roster.\nThis is NOT an existence oracle (unlike the can_view() case above): it\nonly ever fires once can_view() has already confirmed the discussion is\nvisible to this viewer, so it never distinguishes \"doesn't exist\" from\nanything.",
        "operationId": "community_discussions.get_community_discussions_get_discussions_by_discussion_id_poll_votes",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "option_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Option Id"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PollVotersListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Poll Voters",
        "tags": [
          "community-discussions"
        ]
      },
      "post": {
        "operationId": "community_discussions.post_community_discussions_post_discussions_by_discussion_id_poll_votes",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PollVoteCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PollVoteResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Vote On Poll",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/publish": {
      "post": {
        "description": "Publish a draft discussion (author only).\n\nTransitions a draft (is_published=False) discussion to published state.\nIdempotent: re-publishing an already-published discussion returns 200 with\nno side-effects.\n\nAuth order: active-member gate \u2192 ownership \u2192 space posting gate \u2192 idempotency.\nA stale draft cannot be published if the author has since lost segment access\nor the space became admins_only.\n\nReturns 200 with the JSON:API discussion resource on success.\nReturns 403 when the caller is not the author, is banned, or the space gate\nblocks posting.  Returns 404 when the discussion or space does not exist.",
        "operationId": "community_discussions.post_community_discussions_post_discussions_by_discussion_id_publish",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Publish Discussion",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/reactions": {
      "get": {
        "description": "Return emoji reaction groups for a discussion.\n\nDedicated endpoint for per-discussion reaction refresh \u2014 useful when the\nclient needs an up-to-date reaction bar without re-fetching the full\ndiscussion payload.\n\nACL: the contact must be able to view the discussion (\u00a711 #2 \u2014 can_view gate).\n\nReturns a JSON:API collection of discussion_reaction_groups resources:\n  data: [\n    {\n      \"type\": \"discussion_reaction_groups\",\n      \"id\": \"<discussion_id>:<emoji>\",\n      \"attributes\": {\n        \"emoji\": \"\ud83d\udc4d\",\n        \"count\": 3,\n        \"reacted_by_me\": true,\n        \"my_reaction_id\": \"rxn-uuid-...\"\n      }\n    },\n    ...\n  ]\n\nReturns 404 when the discussion does not exist or is deleted.\nReturns 403 when the contact cannot view the discussion.",
        "operationId": "community_discussions.get_community_discussions_get_discussions_by_discussion_id_reactions",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscussionReactionGroupListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Discussion Reactions",
        "tags": [
          "community-discussions"
        ]
      },
      "post": {
        "description": "Add an emoji reaction to a discussion.\n\nReturns 409 Conflict when the contact has already reacted with the same\nemoji on this discussion.",
        "operationId": "community_discussions.post_community_discussions_post_discussions_by_discussion_id_reactions",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "additionalProperties": true,
                "title": "Body",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionReactionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add Reaction",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/reactions/reactors": {
      "get": {
        "description": "List individual reactors (\"who reacted\") for a discussion.\n\nPaginated per-(contact, emoji) rows enriched with display_name + signed\nthumbnail avatar_url. Optional ?emoji= filters data (not emoji_counts).\nACL parity with GET /discussions/{id}/reactions (404 + can_view 403).",
        "operationId": "community_discussions.get_community_discussions_get_discussions_by_discussion_id_reactions_reactors",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "emoji",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Emoji"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Discussion Reaction Reactors",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/reactions/{reaction_id}": {
      "delete": {
        "description": "Remove an emoji reaction from a discussion (own reaction only).\n\nReturns 404 when the reaction does not exist.\nReturns 403 when the reaction belongs to a different contact.\nReturns 204 No Content on success.",
        "operationId": "community_discussions.delete_community_discussions_delete_discussions_by_discussion_id_reactions_by_reaction_id",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "reaction_id",
            "required": true,
            "schema": {
              "title": "Reaction Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove Reaction",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/reposters": {
      "get": {
        "operationId": "community_discussions.get_community_discussions_get_discussions_by_discussion_id_reposters",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Discussion Reposters",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/schedule": {
      "delete": {
        "description": "Cancel scheduled publication; reverts the discussion to draft state.\n\nhub_id is sourced from the query string \u2014 mirrors sibling action routes.\n\nReturns 204 No Content on success.\nReturns 403 when the caller is not the author or is banned.\nReturns 404 when the discussion does not exist.\nReturns 409 when the discussion is already published (race: worker beat the request).",
        "operationId": "community_discussions.delete_community_discussions_delete_discussions_by_discussion_id_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Cancel Schedule",
        "tags": [
          "community-discussions"
        ]
      },
      "put": {
        "description": "Schedule (or reschedule) a draft discussion for future auto-publication.\n\nBody: {data: {attributes: {scheduled_at: \"<tz-aware ISO-8601>\"}}}\n\nhub_id is sourced from the query string (?hub_id=...) \u2014 mirrors the\n/publish, /unpin, PATCH, and DELETE sibling action routes on this router.\n\nReturns 200 with the updated discussion resource on success.\nReturns 422 when scheduled_at is absent, naive (no tz offset), or fails\nbusiness-rule bounds (too soon, too far).\nReturns 403 when the caller is not the author or is banned.\nReturns 404 when the discussion does not exist.\nReturns 409 when the discussion is already published.",
        "operationId": "community_discussions.put_community_discussions_put_discussions_by_discussion_id_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "additionalProperties": true,
                "title": "Body",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Schedule Discussion",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/discussions/{discussion_id}/unpin": {
      "delete": {
        "description": "Remove a per-member unpin override (re-show the pinned discussion).\n\nIdempotent \u2014 no-ops when no unpin row exists.  Returns 204 No Content.",
        "operationId": "community_discussions.delete_community_discussions_delete_discussions_by_discussion_id_unpin",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Unpin",
        "tags": [
          "community-discussions"
        ]
      },
      "post": {
        "description": "Create a per-member unpin override for a pinned discussion.\n\nThe discussion is hidden from this member's pinned feed until they restore\nit via DELETE /unpin.  The global pin state is unaffected.\n\nReturns 422 when the discussion is not currently pinned.",
        "operationId": "community_discussions.post_community_discussions_post_discussions_by_discussion_id_unpin",
        "parameters": [
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionUnpinAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Unpin",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/external-login/callback": {
      "get": {
        "description": "Receives the authorization code from the provider after user consent. Validates CSRF, exchanges the code, resolves the contact, and redirects to return_to#code=<bootstrap_code> (login) or return_to (connect).",
        "operationId": "external_login.get_external_login_get_external_login_callback",
        "parameters": [
          {
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "State"
            }
          },
          {
            "in": "query",
            "name": "error",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Error"
            }
          }
        ],
        "responses": {
          "302": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Handle provider callback",
        "tags": [
          "external-login"
        ]
      }
    },
    "/api/v1/external-login/session": {
      "post": {
        "description": "Exchanges the single-use bootstrap code (extracted from the return_to URL fragment) for a contact JWT access+refresh token pair. Sets the refresh token as an HttpOnly cookie. The request Origin header is verified against the origin stored in the code.",
        "operationId": "external_login.post_external_login_post_external_login_session",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/_SessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Redeem bootstrap code for token pair",
        "tags": [
          "external-login"
        ]
      }
    },
    "/api/v1/external-login/{config_id}/connect": {
      "post": {
        "description": "Starts a connect flow that links an external provider identity to an already-logged-in contact's account. Returns the provider authorize URL in JSON for the frontend to redirect to.",
        "operationId": "external_login.post_external_login_post_external_login_by_config_id_connect",
        "parameters": [
          {
            "in": "path",
            "name": "config_id",
            "required": true,
            "schema": {
              "title": "Config Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "return_to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Return To"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Initiate connect flow for authenticated contact",
        "tags": [
          "external-login"
        ]
      }
    },
    "/api/v1/external-login/{config_id}/start": {
      "get": {
        "operationId": "external_login.get_external_login_get_external_login_by_config_id_start",
        "parameters": [
          {
            "in": "path",
            "name": "config_id",
            "required": true,
            "schema": {
              "title": "Config Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "return_to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Return To"
            }
          }
        ],
        "responses": {
          "302": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Initiate external-login flow",
        "tags": [
          "external-login"
        ]
      }
    },
    "/api/v1/file/{file_id}/chapters": {
      "get": {
        "operationId": "media_public.get_media_public_get_file_by_file_id_chapters",
        "parameters": [
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          },
          {
            "description": "Hub the file is published into (required)",
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "description": "Hub the file is published into (required)",
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ChaptersPayload"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get File Chapters Public",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/file/{file_id}/download/{variant}": {
      "get": {
        "operationId": "media_public.get_media_public_get_file_by_file_id_download_by_variant_path",
        "parameters": [
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "variant",
            "required": true,
            "schema": {
              "title": "Variant",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Hub Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Download File Variant",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/file/{file_id}/image/{variant}": {
      "get": {
        "operationId": "media_public.get_media_public_get_file_by_file_id_image_by_variant",
        "parameters": [
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "variant",
            "required": true,
            "schema": {
              "title": "Variant",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Hub Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get File Image Variant",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/file/{file_id}/media": {
      "get": {
        "operationId": "media_public.get_media_public_get_file_by_file_id_media",
        "parameters": [
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Hub Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileMediaPayload"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get File Media",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/file/{file_id}/transcript": {
      "get": {
        "operationId": "media_public.get_media_public_get_file_by_file_id_transcript",
        "parameters": [
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          },
          {
            "description": "Hub the file is published into (required)",
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "description": "Hub the file is published into (required)",
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "description": "1-based page; fixed page size of 25",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "description": "1-based page; fixed page size of 25",
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "description": "Search term; missing/blank/'*' = browse",
            "in": "query",
            "name": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Search term; missing/blank/'*' = browse",
              "title": "Query"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscriptSegmentsPayload"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get File Transcript Segments",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/access-check": {
      "get": {
        "operationId": "access_rules_portal.get_access_rules_portal_get_hub_by_hub_id_access_check",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "section_id",
            "required": true,
            "schema": {
              "title": "Section Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessCheckResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Access Check",
        "tags": [
          "access-rules-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/activity": {
      "post": {
        "description": "Record a login or search activity event for the authenticated contact.\n\nEmits the matching ``HubLoginRecorded`` / ``HubSearchRecorded`` domain\nevent on success.",
        "operationId": "activity_portal.post_activity_portal_post_hub_by_hub_id_activity",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ActivityEventEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactHubStatsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Record Activity",
        "tags": [
          "activity-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/attachment-uploads": {
      "post": {
        "description": "Initiate a target-scoped attachment upload (see module docstring \u00a7gate).",
        "operationId": "community_attachment_upload.post_community_attachment_upload_post_hub_by_hub_id_attachment_uploads",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentUploadInitiateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AttachmentUploadAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Initiate Attachment Upload",
        "tags": [
          "community-attachment-upload"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/attachment-uploads/{file_id}/finalize": {
      "post": {
        "operationId": "community_attachment_upload.post_community_attachment_upload_post_hub_by_hub_id_attachment_uploads_by_file_id_finalize",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AttachmentFinalizeAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Finalize Attachment Upload",
        "tags": [
          "community-attachment-upload"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/checkout": {
      "post": {
        "operationId": "checkout_portal.post_checkout_portal_post_hub_by_hub_id_checkout",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSessionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Start checkout (paid or free)",
        "tags": [
          "checkout-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/checkout-display": {
      "get": {
        "operationId": "products_portal.get_products_portal_get_hub_by_hub_id_checkout_display",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutDisplayResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required for a private hub."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Contact is not a member of this hub's team."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Hub not found."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Get Checkout Display",
        "tags": [
          "products-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/checkout/cancel": {
      "get": {
        "operationId": "checkout_portal.get_checkout_portal_get_hub_by_hub_id_checkout_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "summary": "Stripe cancel redirect handler",
        "tags": [
          "checkout-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/checkout/readiness": {
      "get": {
        "description": "Pre-flight check: can this hub accept paid checkouts?\n\nReturns readiness attributes indicating whether the hub has a linked\nStripe account with charges enabled, and whether products/prices have\nbeen synced to Stripe. A hub is ``ready`` when it has a payment account\nwith charges_enabled=True and at least one synced price.\n\nThis is a public (unauthenticated) endpoint \u2014 the portal can poll it\nbefore rendering the checkout button.",
        "operationId": "checkout_portal.get_checkout_portal_get_hub_by_hub_id_checkout_readiness",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "summary": "Pre-flight readiness check for hub checkout",
        "tags": [
          "checkout-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/checkout/success": {
      "get": {
        "operationId": "checkout_portal.get_checkout_portal_get_hub_by_hub_id_checkout_success",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "session_id",
            "required": true,
            "schema": {
              "title": "Session Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "summary": "Post-Stripe redirect handler -- reads session status",
        "tags": [
          "checkout-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/content": {
      "get": {
        "description": "Browse root-level content nodes for a hub.\n\nFilters results to only nodes the contact can access (privacy + publish gate).\nPublic nodes are visible to unauthenticated contacts.",
        "operationId": "content_portal.get_content_portal_get_hub_by_hub_id_content",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal List Root Nodes",
        "tags": [
          "content-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/content/attachments/{file_id}/download": {
      "get": {
        "operationId": "media_member_hub_media.get_media_member_hub_media_get_hub_by_hub_id_content_attachments_by_file_id_download",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Download Content Attachment",
        "tags": [
          "media-member-hub-media"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/content/{node_id}": {
      "get": {
        "description": "Get a single content node from the hub portal.\n\nAccess-gated: respects privacy and publish status.",
        "operationId": "content_portal.get_content_portal_get_hub_by_hub_id_content_by_node_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Access denied. `errors[0].code` is one of: `hub_membership_required` \u2014 caller has no/banned hub membership or the hub is private and the caller is not an entitled member/override; or `content_access_denied` \u2014 the node itself is unpublished/future, members-only without active membership, paid without entitlement, or fails closed on an unrecognized privacy value. Error-only JSON:API envelope; no content resource attributes.",
            "x-error-codes": [
              "hub_membership_required",
              "content_access_denied"
            ]
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Generic 404 with no application `code` when the content node does not exist (or is not visible) or the hub does not exist. Deliberately codeless no-disclosure; do not infer cause from status alone.",
            "x-codeless-guard-causes": [
              "missing_node",
              "missing_hub"
            ],
            "x-error-codes": []
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Get Content Node",
        "tags": [
          "content-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/content/{node_id}/children": {
      "get": {
        "description": "Browse children of a container node from the hub portal.",
        "operationId": "content_portal.get_content_portal_get_hub_by_hub_id_content_by_node_id_children",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal List Children",
        "tags": [
          "content-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/content/{node_id}/progress": {
      "get": {
        "description": "Get progress for a contact on a specific content node.\n\nRequires authenticated contact who is a member of the hub's team.",
        "operationId": "content_portal.get_content_portal_get_hub_by_hub_id_content_by_node_id_progress",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentProgressResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Get Progress",
        "tags": [
          "content-portal"
        ]
      },
      "post": {
        "description": "Track progress for a contact on a content node.\n\nRequires authenticated contact who is a member of the hub's team.",
        "operationId": "content_portal.post_content_portal_post_hub_by_hub_id_content_by_node_id_progress",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ProgressTrackEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentProgressResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Track Progress",
        "tags": [
          "content-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/external-video-embeds": {
      "post": {
        "operationId": "community_external_video_embed.post_community_external_video_embed_post_hub_by_hub_id_external_video_embeds",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalVideoEmbedResolveEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ExternalVideoEmbedAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Resolve External Video Embed",
        "tags": [
          "community-external-video-embed"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/files/upload-url": {
      "post": {
        "operationId": "media_member.post_media_member_post_hub_by_hub_id_files_upload_url",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member Create File",
        "tags": [
          "media-member"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/me/billing-portal-link": {
      "get": {
        "operationId": "checkout_me.get_checkout_me_get_hub_by_hub_id_me_billing_portal_link",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "description": "Optional URL Stripe redirects the customer to after exiting the portal. Must match an origin in the hub's settings.auth.allowed_redirect_origins. Omit to use the platform default.",
            "in": "query",
            "name": "return_url",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional URL Stripe redirects the customer to after exiting the portal. Must match an origin in the hub's settings.auth.allowed_redirect_origins. Omit to use the platform default.",
              "title": "Return Url"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Billing portal link for this hub",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/me/orders": {
      "get": {
        "description": "Return orders for the authenticated contact scoped to this hub.",
        "operationId": "checkout_me.get_checkout_me_get_hub_by_hub_id_me_orders",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List orders for this hub",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/me/orders/{order_id}": {
      "get": {
        "description": "Retrieve order scoped to hub. 404 if not found or belongs to\ndifferent hub/contact.",
        "operationId": "checkout_me.get_checkout_me_get_hub_by_hub_id_me_orders_by_order_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "order_id",
            "required": true,
            "schema": {
              "title": "Order Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve single order (hub-scoped)",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/me/saved-items": {
      "get": {
        "operationId": "saved_items.get_saved_items_get_hub_by_hub_id_me_saved_items",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_SavedItemAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Saved Items",
        "tags": [
          "saved-items"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/me/subscriptions": {
      "get": {
        "operationId": "checkout_me.get_checkout_me_get_hub_by_hub_id_me_subscriptions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List subscriptions for this hub",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/me/subscriptions/{sub_id}": {
      "get": {
        "operationId": "checkout_me.get_checkout_me_get_hub_by_hub_id_me_subscriptions_by_sub_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sub_id",
            "required": true,
            "schema": {
              "title": "Sub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve subscription (hub-scoped)",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/me/subscriptions/{sub_id}/cancel": {
      "post": {
        "description": "Hub-scoped cancel. Contact must own the subscription and it must\nbelong to this hub.",
        "operationId": "checkout_me.post_checkout_me_post_hub_by_hub_id_me_subscriptions_by_sub_id_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sub_id",
            "required": true,
            "schema": {
              "title": "Sub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Cancel subscription (hub-scoped)",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/media": {
      "get": {
        "description": "List live + visible files in the hub for a member/anonymous viewer.",
        "operationId": "media_member_hub_media.get_media_member_hub_media_get_hub_by_hub_id_media",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Public Hub Media Files",
        "tags": [
          "media-member-hub-media"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/pages/": {
      "get": {
        "operationId": "pages_portal.get_pages_portal_get_hub_by_hub_id_pages",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PageListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal List Pages",
        "tags": [
          "pages-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/pages/content": {
      "get": {
        "description": "Designated content-page alias (resolves by type=\"content\").\n\nMirrors /pages/home's designated-lookup + route-ordering pattern, but\nreuses the generic portal page privacy ladder and ?resolve=true behavior so\nthe actual /content page renders a tree. Registered before /{identifier} so\nthe literal \"content\" path is never captured as a slug/UUID identifier.",
        "operationId": "pages_portal.get_pages_portal_get_hub_by_hub_id_pages_content",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resolve",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Resolve"
            }
          },
          {
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Get Content Page",
        "tags": [
          "pages-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/pages/home": {
      "get": {
        "operationId": "pages_portal.get_pages_portal_get_hub_by_hub_id_pages_home",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Get Homepage",
        "tags": [
          "pages-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/pages/{identifier}": {
      "get": {
        "operationId": "pages_portal.get_pages_portal_get_hub_by_hub_id_pages_by_identifier",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "title": "Identifier",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resolve",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Resolve"
            }
          },
          {
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Private hub requested anonymously. Codeless (no errors[0].code).",
            "x-error-codes": []
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Access denied. `errors[0].code` is one of: `hub_membership_required` \u2014 private hub and caller is not a member/override, or the caller is hard-banned from the hub; or `page_access_denied` \u2014 the page is members-only and the caller is not a member/override. Error-only JSON:API envelope; no page attributes.",
            "x-error-codes": [
              "hub_membership_required",
              "page_access_denied"
            ]
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-codeless-guard-causes": [
              "missing_hub",
              "missing_page",
              "private_page_non_disclosure"
            ],
            "x-error-codes": []
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Get Page",
        "tags": [
          "pages-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/pages/{page_id}/sections": {
      "get": {
        "operationId": "pages_portal.get_pages_portal_get_hub_by_hub_id_pages_by_page_id_sections",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SectionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal List Sections",
        "tags": [
          "pages-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/playlist-cards": {
      "get": {
        "operationId": "media_member_hub_media.get_media_member_hub_media_get_hub_by_hub_id_playlist_cards",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "filter[playlist_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Playlist Id]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubPlaylistCardListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Hub Playlist Cards",
        "tags": [
          "media-member-hub-media"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/playlists": {
      "get": {
        "description": "List live + visible playlists in the hub for a member/anonymous viewer.",
        "operationId": "media_member_hub_media.get_media_member_hub_media_get_hub_by_hub_id_playlists",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Public Hub Media Playlists",
        "tags": [
          "media-member-hub-media"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/playlists/{playlist_id}/item-cards": {
      "get": {
        "operationId": "media_member_hub_media.get_media_member_hub_media_get_hub_by_hub_id_playlists_by_playlist_id_item_cards",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "playlist_id",
            "required": true,
            "schema": {
              "title": "Playlist Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubPlaylistItemCardListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Hub Playlist Item Cards",
        "tags": [
          "media-member-hub-media"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/progress": {
      "get": {
        "operationId": "content_portal.get_content_portal_get_hub_by_hub_id_progress",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[node_ids]",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentProgressListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal List Progress",
        "tags": [
          "content-portal"
        ]
      },
      "post": {
        "operationId": "content_portal.post_content_portal_post_hub_by_hub_id_progress",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkProgressEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentProgressBulkResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Bulk Track Progress",
        "tags": [
          "content-portal"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/saved-items": {
      "post": {
        "description": "Save a content node to the contact's list in this hub.\n\nIdempotent: a re-save of an already-saved node returns 201 with the\noriginal row (no recency bump, no duplicate SavedItemAdded event).\n\nBody: {\"data\": {\"type\": \"saved_items\", \"attributes\": {\"content_node_id\": \"...\"}}}\n\nReturns 201 with the saved_items resource (new or existing).\nReturns 404 when the node is missing or inaccessible (no existence leak).\nReturns 403 when the contact is not an active hub member.",
        "operationId": "saved_items.post_saved_items_post_hub_by_hub_id_saved_items",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SavedItemCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SavedItemAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Save Item",
        "tags": [
          "saved-items"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/saved-items/{content_node_id}": {
      "delete": {
        "description": "Remove a content node from the contact's saved list in this hub.\n\nIdempotent: deleting a node that was never saved returns 204 with no error.\nSavedItemRemoved is emitted only when a row was actually deleted.\n\nReturns 204 always (success or not found).\nReturns 403 when the contact is not an active hub member.",
        "operationId": "saved_items.delete_saved_items_delete_hub_by_hub_id_saved_items_by_content_node_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "content_node_id",
            "required": true,
            "schema": {
              "title": "Content Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Unsave Item",
        "tags": [
          "saved-items"
        ]
      }
    },
    "/api/v1/hub/{hub_id}/search/media": {
      "get": {
        "description": "Hybrid (RRF) media search for a hub.\n\nAuthenticated hub members see all published content (member ACL).\nUnauthenticated callers on public hubs see only publicly-visible media\non publicly-visible content nodes (anonymous ACL).\nPrivate hubs return 403 for unauthenticated callers and non-members.\n\nRate limits:\n  Members:   30 req/60s keyed by contact_id.\n  Anonymous: 10 req/60s keyed by client IP (X-Forwarded-For or socket).",
        "operationId": "media_search.get_media_search_get_hub_by_hub_id_search_media",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "description": "Search query string.",
            "in": "query",
            "name": "q",
            "required": true,
            "schema": {
              "description": "Search query string.",
              "minLength": 1,
              "title": "Q",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaSearchListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member Search Media",
        "tags": [
          "media-search"
        ]
      }
    },
    "/api/v1/hub/{team_id}/hubs/{hub_id}/me/attributes": {
      "get": {
        "description": "Return this contact's attribute values for the hub (gated by is_in_profile).",
        "operationId": "contact_attributes_portal.get_contact_attributes_portal_get_hub_by_team_id_hubs_by_hub_id_me_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactValueListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Me Attributes",
        "tags": [
          "contact-attributes-portal"
        ]
      },
      "patch": {
        "description": "Self-service PATCH \u2014 respects is_read_only per hub.",
        "operationId": "contact_attributes_portal.patch_contact_attributes_portal_patch_hub_by_team_id_hubs_by_hub_id_me_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkValuePatchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactValueListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Me Attributes",
        "tags": [
          "contact-attributes-portal"
        ]
      }
    },
    "/api/v1/hub/{team_id}/hubs/{hub_id}/me/profile-attributes": {
      "get": {
        "operationId": "contact_attributes_portal.get_contact_attributes_portal_get_hub_by_team_id_hubs_by_hub_id_me_profile_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Me Profile Attributes",
        "tags": [
          "contact-attributes-portal"
        ]
      }
    },
    "/api/v1/hub/{team_id}/hubs/{hub_id}/onboarding-attributes": {
      "get": {
        "operationId": "contact_attributes_portal.get_contact_attributes_portal_get_hub_by_team_id_hubs_by_hub_id_onboarding_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Onboarding Attributes",
        "tags": [
          "contact-attributes-portal"
        ]
      },
      "post": {
        "description": "Onboarding submission \u2014 enforces is_required + is_read_only per hub.",
        "operationId": "contact_attributes_portal.post_contact_attributes_portal_post_hub_by_team_id_hubs_by_hub_id_onboarding_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkValuePatchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactValueListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Post Onboarding Attributes",
        "tags": [
          "contact-attributes-portal"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/achievements": {
      "get": {
        "description": "Catalog of offered achievements + the caller's own earn state, ONE query.\n\nSecret achievements are excluded unless the caller has earned them\n(revoked included \u2014 the caller has already seen the badge).",
        "operationId": "achievements.get_achievements_get_hubs_by_hub_id_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "filter[id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Id]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AchievementCatalogAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Catalog",
        "tags": [
          "achievements"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/achievements/members": {
      "get": {
        "description": "Top-N non-revoked earns for MANY contacts in a flat number of queries\n(never one query per contact \u2014 the badge strip renders in both the\nmember-detail panel and the hover card wired across discussions).\n\n``filter[contact_id]`` is a comma-separated list, capped at 50 ids.\nUnknown/invisible ids are silently absent from the result rather than\nerroring \u2014 only exceeding the cap is a 422.",
        "operationId": "achievements.get_achievements_get_hubs_by_hub_id_achievements_members",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[contact_id]",
            "required": true,
            "schema": {
              "title": "Filter[Contact Id]",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AchievementEarnAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Batch Peer Achievements",
        "tags": [
          "achievements"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/comments/{comment_id}/remove": {
      "post": {
        "operationId": "community_moderation.post_community_moderation_post_hubs_by_hub_id_comments_by_comment_id_remove",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove Comment As Contact",
        "tags": [
          "community-moderation"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/conversations": {
      "get": {
        "operationId": "community_conversations.get_community_conversations_get_hubs_by_hub_id_conversations",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          },
          {
            "in": "query",
            "name": "filter[is_archived]",
            "required": false,
            "schema": {
              "default": false,
              "title": "Filter[Is Archived]",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_ConversationResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Conversations",
        "tags": [
          "community-conversations"
        ]
      },
      "post": {
        "description": "Create a new DM conversation (1:1 or group).\n\nFor 1:1: idempotent \u2014 returns the existing conversation if one already\nexists between the two contacts in this hub.\n\nRequires the caller and all audience contacts to be active hub members.\nReturns 422 when fewer than 2 distinct contacts are provided or when the\ngroup cap (50 members) would be exceeded.\nRequires Content-Type: application/vnd.api+json.",
        "operationId": "community_conversations.post_community_conversations_post_hubs_by_hub_id_conversations",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ConversationCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ConversationResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Conversation",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/conversations/mark-all-read": {
      "post": {
        "description": "Mark all DM conversations in a hub as read.\n\nAccepts an optional `up_to` timestamp in attributes; defaults to now (UTC).\nTimestamps in the future are clamped to now. Returns 200 with a\nconversation_read_receipts resource containing the final timestamp and\nthe number of audience rows updated.\n\nReturns 404 when the hub does not exist.\nReturns 403 when the caller is banned or not an active hub member.\nRequires Content-Type: application/vnd.api+json.",
        "operationId": "community_conversations.post_community_conversations_post_hubs_by_hub_id_conversations_mark_all_read",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MarkAllReadEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ReadReceiptAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mark All Conversations Read",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/conversations/unread-total": {
      "get": {
        "operationId": "community_conversations.get_community_conversations_get_hubs_by_hub_id_conversations_unread_total",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_UnreadTotalAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Hub Unread Total",
        "tags": [
          "community-conversations"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/direct-message-candidates": {
      "get": {
        "operationId": "community_dm_candidates.get_community_dm_candidates_get_hubs_by_hub_id_direct_message_candidates",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[search]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Search]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DirectMessageCandidateListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List direct-message recipient candidates",
        "tags": [
          "community-dm-candidates"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/direct-message-capabilities/{target_contact_id}": {
      "get": {
        "operationId": "community_dm_capabilities.get_community_dm_capabilities_get_hubs_by_hub_id_direct_message_capabilities_by_target_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "target_contact_id",
            "required": true,
            "schema": {
              "title": "Target Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DirectMessageCapabilityAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Read viewer-relative 1:1 DM capability for a target",
        "tags": [
          "community-dm-capabilities"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/directory-filters": {
      "get": {
        "operationId": "community_directory.get_community_directory_get_hubs_by_hub_id_directory_filters",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DirectoryFiltersResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List hub directory filter metadata",
        "tags": [
          "community-directory"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/discussions": {
      "get": {
        "operationId": "community_discussions.get_community_discussions_get_hubs_by_hub_id_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-last_activity",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[author_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Author Id]"
            }
          },
          {
            "in": "query",
            "name": "filter[is_pinned]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Is Pinned]"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubDiscussionsListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Hub Discussions",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/discussions/{discussion_id}/lock": {
      "delete": {
        "description": "Unlock comments on a discussion (idempotent). 200 with is_locked == false.",
        "operationId": "community_discussions.delete_community_discussions_delete_hubs_by_hub_id_discussions_by_discussion_id_lock",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unlock Discussion As Contact",
        "tags": [
          "community-discussions"
        ]
      },
      "post": {
        "description": "Lock comments on a discussion (idempotent). 200 with is_locked == true.",
        "operationId": "community_discussions.post_community_discussions_post_hubs_by_hub_id_discussions_by_discussion_id_lock",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Lock Discussion As Contact",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/discussions/{discussion_id}/move": {
      "post": {
        "description": "Move a discussion to another space in the same hub. 200 with updated space_id.\n\nOwners/admins can move any discussion (destination posting/access rules\nbypassed). A post's author can move their own discussion when the\ndestination space allows them to post; otherwise 403. Moderators do not\nreceive move by role alone. Same-space move is an idempotent 200 no-op\nafter the relevant checks pass.",
        "operationId": "community_discussions.post_community_discussions_post_hubs_by_hub_id_discussions_by_discussion_id_move",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DiscussionMoveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Move Discussion As Contact",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/discussions/{discussion_id}/pin": {
      "delete": {
        "description": "Unpin a discussion (global toggle) as an elevated hub contact.\n\nReturns 200 with the discussion resource (attributes.is_pinned == false).\nReturns 409 (discussion_not_pinned) when the discussion is not currently\npinned \u2014 admin-parity semantics, NOT the per-member 422 of /unpin.\nReturns 404 when the discussion does not exist or is deleted.\nRegular members are rejected with 403 by require_hub_elevated_contact.",
        "operationId": "community_discussions.delete_community_discussions_delete_hubs_by_hub_id_discussions_by_discussion_id_pin",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unpin Discussion As Contact",
        "tags": [
          "community-discussions"
        ]
      },
      "post": {
        "description": "Pin a discussion (idempotent) as an elevated hub contact.\n\nReturns 200 with the discussion resource (attributes.is_pinned == true).\nReturns 404 when the discussion does not exist or is deleted.\nRegular members are rejected with 403 by require_hub_elevated_contact.",
        "operationId": "community_discussions.post_community_discussions_post_hubs_by_hub_id_discussions_by_discussion_id_pin",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Pin Discussion As Contact",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/discussions/{discussion_id}/remove": {
      "post": {
        "operationId": "community_moderation.post_community_moderation_post_hubs_by_hub_id_discussions_by_discussion_id_remove",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove Discussion As Contact",
        "tags": [
          "community-moderation"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/events": {
      "get": {
        "description": "List events visible to the caller (fail-closed segment gate).\n\nfilter[status]=upcoming|past; sort=starts_at|-starts_at (default\nascending). Segment-restricted events with no segment_id, or where the\ncaller isn't a member of the required segment, are silently excluded --\nnever a 403 (existence hiding is enforced on detail, not on the list;\nan excluded row simply never appears).",
        "operationId": "hub_events.get_hub_events_get_hubs_by_hub_id_events",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "starts_at",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubEventListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Events",
        "tags": [
          "hub-events"
        ]
      },
      "post": {
        "description": "Create a hub event. host_contact_id is set from the authenticated\ncaller \u2014 never client-supplied. Emits hub_event.created.",
        "operationId": "hub_events.post_hub_events_post_hubs_by_hub_id_events",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubEventCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubEventResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Event",
        "tags": [
          "hub-events"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/events/{event_id}": {
      "get": {
        "description": "Event detail. 404 (not 403) when the caller may not see this event --\nexistence hiding, mirrors the discussions/spaces convention.",
        "operationId": "hub_events.get_hub_events_get_hubs_by_hub_id_events_by_event_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubEventResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Event Detail",
        "tags": [
          "hub-events"
        ]
      },
      "patch": {
        "description": "Partial update \u2014 only fields present in the request body are applied.",
        "operationId": "hub_events.patch_hub_events_patch_hubs_by_hub_id_events_by_event_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubEventUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubEventResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Patch Event",
        "tags": [
          "hub-events"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/events/{event_id}/calendar.ics": {
      "get": {
        "description": "Download a minimal single-VEVENT .ics file for this event.",
        "operationId": "hub_events.get_hub_events_get_hubs_by_hub_id_events_by_event_id_calendar_ics",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/calendar": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "A minimal single-VEVENT iCalendar (.ics) file."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Hub Event Calendar Ics",
        "tags": [
          "hub-events"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/events/{event_id}/cancel": {
      "post": {
        "description": "Set status='cancelled'. Idempotent. Emits hub_event.cancelled.",
        "operationId": "hub_events.post_hub_events_post_hubs_by_hub_id_events_by_event_id_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubEventResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Cancel Event",
        "tags": [
          "hub-events"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/events/{event_id}/rsvp": {
      "delete": {
        "description": "Withdraw -- set the caller's RSVP to 'not_going'. Emits\nhub_event.rsvp_cancelled (idempotent: a repeat withdraw is a no-op).",
        "operationId": "hub_events.delete_hub_events_delete_hubs_by_hub_id_events_by_event_id_rsvp",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRsvpResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Withdraw Event Rsvp",
        "tags": [
          "hub-events"
        ]
      },
      "put": {
        "description": "Set the caller's RSVP to 'going' or 'not_going'.",
        "operationId": "hub_events.put_hub_events_put_hubs_by_hub_id_events_by_event_id_rsvp",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/EventRsvpWriteEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRsvpResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Set Event Rsvp",
        "tags": [
          "hub-events"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/events/{event_id}/rsvps": {
      "get": {
        "description": "'going' RSVPs for the event. Member-visible unless the host hid it.",
        "operationId": "hub_events.get_hub_events_get_hubs_by_hub_id_events_by_event_id_rsvps",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRsvpListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Event Rsvps",
        "tags": [
          "hub-events"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/me/discussion-drafts": {
      "get": {
        "operationId": "community_discussions.get_community_discussions_get_hubs_by_hub_id_me_discussion_drafts",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List My Drafts",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/me/scheduled-discussions": {
      "get": {
        "description": "Return the current contact's scheduled (unpublished, scheduled_at set) discussions.\n\nMirrors GET /api/hubs/{hub_id}/me/discussion-drafts exactly, but for\nscheduled posts.  Sorted by (scheduled_at ASC, id ASC) \u2014 soonest first.\n\nPagination:\n  page[size]=N           default 20, max 100.\n  page[after]=<cursor>   keyset cursor (<scheduled_at ISO>|<id>).\n\nReturns:\n  200 \u2014 JSON:API list response with meta.has_more and meta.next_cursor.\n  401 \u2014 No auth token.\n  403 \u2014 Banned or not a member of the hub.",
        "operationId": "community_discussions.get_community_discussions_get_hubs_by_hub_id_me_scheduled_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List My Scheduled",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/member-counts": {
      "get": {
        "operationId": "community_hub_member_counts.get_community_hub_member_counts_get_hubs_by_hub_id_member_counts",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubMemberCountsAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Hub member counts",
        "tags": [
          "community-hub-member-counts"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members": {
      "get": {
        "operationId": "community_directory.get_community_directory_get_hubs_by_hub_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[search]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Search]"
            }
          },
          {
            "description": "Filter to online members only. Only 'true' is accepted; any other value returns 422.",
            "in": "query",
            "name": "filter[online]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter to online members only. Only 'true' is accepted; any other value returns 422.",
              "enum": [
                "true"
              ],
              "title": "Filter[Online]"
            }
          },
          {
            "description": "Comma-separated role filter. Accepted tokens: owner, admin, moderator, member. 'member' matches rows with role IS NULL (regular members). Multiple tokens are OR-combined; unknown token or empty set \u2192 422.",
            "in": "query",
            "name": "filter[role]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Comma-separated role filter. Accepted tokens: owner, admin, moderator, member. 'member' matches rows with role IS NULL (regular members). Multiple tokens are OR-combined; unknown token or empty set \u2192 422.",
              "title": "Filter[Role]"
            }
          },
          {
            "description": "Sort order for the member list. Omit for default id-ASC order.",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort order for the member list. Omit for default id-ASC order.",
              "enum": [
                "created_at",
                "-created_at",
                "last_seen_at",
                "-last_seen_at",
                "name",
                "-name"
              ],
              "title": "Sort"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberDirectoryListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List hub member directory",
        "tags": [
          "community-directory"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/me/achievements": {
      "get": {
        "description": "The caller's own earn history (revoked included \u2014 earn-history-only;\nlocked/unearned badges have no earn row and never appear here).",
        "operationId": "achievements.get_achievements_get_hubs_by_hub_id_members_me_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AchievementEarnAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Own History",
        "tags": [
          "achievements"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}": {
      "get": {
        "operationId": "community_directory.get_community_directory_get_hubs_by_hub_id_members_by_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_MemberDetailAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Fetch single member profile",
        "tags": [
          "community-directory"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/achievements": {
      "get": {
        "description": "A single peer's non-revoked earns. Blocked-either-direction, hidden\nprofile, or an ineligible target membership status all resolve to 404\n(never a more specific error \u2014 matches the community module's privacy\npolicy of never disclosing WHY a member isn't visible).",
        "operationId": "achievements.get_achievements_get_hubs_by_hub_id_members_by_contact_id_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AchievementEarnAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Peer Achievements",
        "tags": [
          "achievements"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/activity/feed": {
      "get": {
        "operationId": "community_member_activity.get_community_member_activity_get_hubs_by_hub_id_members_by_contact_id_activity_feed",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_FeedEventAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member activity feed (paginated events)",
        "tags": [
          "community-member-activity"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/activity/stats": {
      "get": {
        "operationId": "community_member_activity.get_community_member_activity_get_hubs_by_hub_id_members_by_contact_id_activity_stats",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member activity stats (daily buckets)",
        "tags": [
          "community-member-activity"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/follow": {
      "delete": {
        "description": "Unfollow a member (idempotent \u2014 204 always, even if never followed).\n\nDeliberately does NOT run load_visible_member (locked decision 4): if\nthe target has blocked the follower after the follow existed, the\nvisibility gate would 404 and the follower could never remove the edge.\nOnly the membership write guard runs.",
        "operationId": "follows.delete_follows_delete_hubs_by_hub_id_members_by_contact_id_follow",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Unfollow Member",
        "tags": [
          "follows"
        ]
      },
      "post": {
        "description": "Follow a member (idempotent \u2014 re-follow returns the original row, 201).\n\nBodyless POST. Runs the full visibility gate on the TARGET (contact_id)\nbefore attempting the follow \u2014 a blocked, hidden, banned, left, or\nmissing target yields the gate's own 403/404 with no existence leak.\n\nload_visible_member's READ gate deliberately lets an ELEVATED viewer\n(owner/admin/moderator) open a banned/soft_banned target and bypass\nhide_profile \u2014 correct for moderation reads, wrong for creating a follow\nedge. The write-specific re-check below applies to every viewer,\nelevated included, so a moderator cannot follow a banned or hidden\nmember. It returns the exact same 404 shape the visibility gate uses so\nelevated and non-elevated responses stay indistinguishable (no new\noracle for probing target state).",
        "operationId": "follows.post_follows_post_hubs_by_hub_id_members_by_contact_id_follow",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_MemberFollowAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Follow Member",
        "tags": [
          "follows"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/followers": {
      "get": {
        "description": "List the members who follow `contact_id` in this hub (member cards).",
        "operationId": "follows.get_follows_get_hubs_by_hub_id_members_by_contact_id_followers",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FollowMemberListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Member Followers",
        "tags": [
          "follows"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/following": {
      "get": {
        "description": "List the members `contact_id` follows in this hub (member cards).",
        "operationId": "follows.get_follows_get_hubs_by_hub_id_members_by_contact_id_following",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FollowMemberListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Member Following",
        "tags": [
          "follows"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/profile-attributes": {
      "get": {
        "description": "Return the target member's profile-visible attributes as a JSON:API\ncompound document (same shape as the /me/profile-attributes editor read).\n\nVisibility mirrors GET /{hub_id}/members/{contact_id} exactly:\n  - 401 without a contact JWT; 403 for a banned viewer.\n  - 404 for unknown hub, a target who has left / has no membership row,\n    hidden profile (non-elevated, non-owner viewer), or missing\n    team_contact \u2014 plausible deniability.\n  - The profile owner always bypasses hide_profile for their own\n    profile; a hard-banned self is blocked earlier by the viewer-ban\n    gate (403) and never reaches this bypass.\n  - Elevated viewers (owner/admin/moderator) bypass hide_profile for\n    another member's profile, including active/banned/soft-banned\n    targets.\n\nOnly hub configs with is_in_profile=True are returned; soft-deleted\ndefinitions are excluded along with their configs (no dangling refs).",
        "operationId": "community_directory.get_community_directory_get_hubs_by_hub_id_members_by_contact_id_profile_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberProfileAttributesResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Fetch a member's peer-visible profile attributes",
        "tags": [
          "community-directory"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/members/{contact_id}/spaces": {
      "get": {
        "operationId": "community_directory.get_community_directory_get_hubs_by_hub_id_members_by_contact_id_spaces",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page Size",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PeerSpaceListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List a member's peer-visible spaces",
        "tags": [
          "community-directory"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/mention-candidates": {
      "get": {
        "operationId": "community_mention_candidates.get_community_mention_candidates_get_hubs_by_hub_id_mention_candidates",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[search]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Search]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 20,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_MentionCandidateAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List @mention candidates",
        "tags": [
          "community-mention-candidates"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/notifications": {
      "get": {
        "operationId": "notifications.get_notifications_get_hubs_by_hub_id_notifications",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          },
          {
            "in": "query",
            "name": "filter[category]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/NotificationCategoryParam"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Category]"
            }
          },
          {
            "in": "query",
            "name": "filter[kind]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 64,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Kind]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Notifications",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/notifications/counts": {
      "get": {
        "operationId": "notifications.get_notifications_get_hubs_by_hub_id_notifications_counts",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationCountsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Notification Counts",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/notifications/last-opened-at": {
      "put": {
        "description": "Upsert last_opened_at = now() for this (hub, contact).",
        "operationId": "notifications.put_notifications_put_hubs_by_hub_id_notifications_last_opened_at",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/LastOpenedResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Last Opened At",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/notifications/mark-all-read": {
      "post": {
        "operationId": "notifications.post_notifications_post_hubs_by_hub_id_notifications_mark_all_read",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadReceiptResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mark All Notifications Read",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/notifications/unread-count": {
      "get": {
        "operationId": "notifications.get_notifications_get_hubs_by_hub_id_notifications_unread_count",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/UnreadCountResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Unread Count",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/notifications/{notification_id}": {
      "delete": {
        "operationId": "notifications.delete_notifications_delete_hubs_by_hub_id_notifications_by_notification_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "notification_id",
            "required": true,
            "schema": {
              "title": "Notification Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Dismiss Notification",
        "tags": [
          "notifications"
        ]
      },
      "get": {
        "description": "Fetch a single notification by id. 404 if not this contact's.",
        "operationId": "notifications.get_notifications_get_hubs_by_hub_id_notifications_by_notification_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "notification_id",
            "required": true,
            "schema": {
              "title": "Notification Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_NotificationAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Notification",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/notifications/{notification_id}/read": {
      "post": {
        "description": "Idempotent mark-one-read. Returns 204. Returns 404 if not this contact's row.",
        "operationId": "notifications.post_notifications_post_hubs_by_hub_id_notifications_by_notification_id_read",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "notification_id",
            "required": true,
            "schema": {
              "title": "Notification Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mark Notification Read",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/policies": {
      "get": {
        "operationId": "hubs_portal.get_hubs_portal_get_hubs_by_hub_id_policies",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve hub TOS and privacy policy documents",
        "tags": [
          "hubs-portal",
          "hubs-portal"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/public/discussions": {
      "get": {
        "description": "Hub-wide feed of published discussions across public spaces, sanitized.",
        "operationId": "community_anon.get_community_anon_get_hubs_by_hub_id_public_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-last_activity",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AnonDiscussionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Hub Discussions Anon",
        "tags": [
          "community-anon"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/public/discussions/{discussion_id}": {
      "get": {
        "description": "A single published discussion in a public space, sanitized.\n\nis_locked is NOT a deny \u2014 a locked discussion remains readable, only\ncommenting is blocked (member-only write path, unaffected here).",
        "operationId": "community_anon.get_community_anon_get_hubs_by_hub_id_public_discussions_by_discussion_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AnonDiscussionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Discussion Anon",
        "tags": [
          "community-anon"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/public/discussions/{discussion_id}/comments": {
      "get": {
        "operationId": "community_anon.get_community_anon_get_hubs_by_hub_id_public_discussions_by_discussion_id_comments",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "created_at",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AnonCommentAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Discussion Comments Anon",
        "tags": [
          "community-anon"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/public/discussions/{discussion_id}/comments/{comment_id}/replies": {
      "get": {
        "operationId": "community_anon.get_community_anon_get_hubs_by_hub_id_public_discussions_by_discussion_id_comments_by_comment_id_replies",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "comment_id",
            "required": true,
            "schema": {
              "title": "Comment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "created_at",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AnonCommentAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Comment Replies Anon",
        "tags": [
          "community-anon"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/public/discussions/{discussion_id}/reactions": {
      "get": {
        "description": "Aggregate emoji reaction groups for a discussion \u2014 emoji + count only.\n\nNo per-actor identity (reacted_by_me / my_reaction_id are member-only\nconcepts requiring a viewer identity anon requests never have).",
        "operationId": "community_anon.get_community_anon_get_hubs_by_hub_id_public_discussions_by_discussion_id_reactions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "discussion_id",
            "required": true,
            "schema": {
              "title": "Discussion Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AnonReactionCount_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Discussion Reactions Anon",
        "tags": [
          "community-anon"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/public/spaces": {
      "get": {
        "description": "List every public space in a hub, sanitized for an anonymous reader.",
        "operationId": "community_anon.get_community_anon_get_hubs_by_hub_id_public_spaces",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AnonSpaceAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Public Spaces Anon",
        "tags": [
          "community-anon"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/public/spaces/{space_id}/discussions": {
      "get": {
        "description": "One public space's discussion feed, sanitized for an anonymous reader.\n\nA missing space, or a space that is not access_level='public' (restricted\nor segment-gated), collapses to the SAME generic 404 \u2014 anon has zero\nsegments by definition so restricted spaces are never visible.",
        "operationId": "community_anon.get_community_anon_get_hubs_by_hub_id_public_spaces_by_space_id_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-last_activity",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AnonDiscussionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Space Discussions Anon",
        "tags": [
          "community-anon"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/report-reasons": {
      "get": {
        "description": "List active report reasons for a hub.\n\nReturns platform-default reasons plus hub-specific ones, active only.\nRequires the authenticated contact to be an active member of {hub_id}.\nNon-members and banned members receive 403 (identical body, anti-enumeration).",
        "operationId": "community_moderation.get_community_moderation_get_hubs_by_hub_id_report_reasons",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Report Reasons",
        "tags": [
          "community-moderation"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/reports": {
      "post": {
        "description": "File a moderation report against a community entity.\n\nValidates membership, prevents self-reports, and enforces a 24-hour\nduplicate guard.\n\nReturns 201 Created with the new report on success.\nReturns 403 when the hub does not exist, the reporter is not a hub member,\n        or the reporter is banned/soft-banned.  All three cases return an\n        identical response body so that hub IDs cannot be enumerated.\nReturns 422 when the report fails validation (self-report, duplicate, etc.),\n        or when reportable_type is unsupported (e.g. 'message' \u2014 see\n        FILEABLE_REPORTABLE_TYPES in schemas.py).\n\nSecurity (R2.I1): hub-existence resolution happens INSIDE the route body\nusing _err(), not via a Depends() that raises HTTPException.  This ensures\nthe \"hub missing\" 403 and the \"not a member\" 403 go through the same code\npath and produce byte-identical response bodies, preventing hub enumeration.",
        "operationId": "community_moderation.post_community_moderation_post_hubs_by_hub_id_reports",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileReportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationReportResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "File Report",
        "tags": [
          "community-moderation"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/search": {
      "get": {
        "description": "Federated global/spotlight search across community, media, and member silos.",
        "operationId": "default.get_get_hubs_by_hub_id_search",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "required": true,
            "schema": {
              "maxLength": 500,
              "minLength": 1,
              "title": "Q",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "files",
                "media",
                "discussions",
                "comments",
                "members"
              ],
              "title": "Type",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalSearchListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable Content"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Search Hub Global"
      }
    },
    "/api/v1/hubs/{hub_id}/search/community": {
      "get": {
        "description": "Search community content (discussions and comments) within a hub.\n\nReturns JSON:API resource objects of type \"community_search_results\".\nResults are ranked by Reciprocal Rank Fusion (RRF) combining lexical and\nsemantic (embedding) scores. When EMBEDDINGS_ENABLED=False, falls back to\nlexical-only search.\n\nAccess control:\n  Members see content in spaces visible to them (via SpacesService).\n  Anonymous callers on public hubs see content in public spaces only.\n  Private hubs return 403 for anonymous callers.\n\nActivity tracking:\n  Each call from an authenticated member records a \"search\" activity event\n  (fire-and-forget). Anonymous calls do not record activity.",
        "operationId": "community_search.get_community_search_get_hubs_by_hub_id_search_community",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "required": true,
            "schema": {
              "maxLength": 500,
              "minLength": 1,
              "title": "Q",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "discussions",
                "comments"
              ],
              "title": "Type",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResultListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Search Community",
        "tags": [
          "community-search"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/spaces/": {
      "get": {
        "operationId": "community_spaces_member.get_community_spaces_member_get_hubs_by_hub_id_spaces",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_SpaceResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member List Spaces",
        "tags": [
          "community-spaces-member"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/spaces/{space_id}": {
      "get": {
        "operationId": "community_spaces_member.get_community_spaces_member_get_hubs_by_hub_id_spaces_by_space_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SpaceResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Access denied. `errors[0].code` is one of: `hub_membership_required` \u2014 the caller has no active hub membership (checked before space lookup); or `space_access_denied` \u2014 the space is restricted and the caller is not in the required segment, or the restricted space is misconfigured (fail-closed). The body is an error-only JSON:API envelope with no space resource attributes. Only `space_access_denied` is the positive restricted-space no-access signal.",
            "x-error-codes": [
              "hub_membership_required",
              "space_access_denied"
            ]
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-codeless-guard-causes": [
              "missing_hub",
              "discussions_feature_disabled"
            ],
            "x-error-codes": [
              "space_not_found"
            ]
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member Get Space",
        "tags": [
          "community-spaces-member"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/spaces/{space_id}/discussions": {
      "get": {
        "operationId": "community_discussions.get_community_discussions_get_hubs_by_hub_id_spaces_by_space_id_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-last_activity",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[author_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Author Id]"
            }
          },
          {
            "in": "query",
            "name": "filter[is_pinned]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Is Pinned]"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Access denied. `errors[0].code` is one of: `forbidden` \u2014 a generic catch-all returned for missing or denied hub membership; it is NOT a membership-specific or space-specific signal and must not be used for positive UI inference. Or `space_access_denied` \u2014 the restricted-space ACL denial (the positive no-access signal). Membership is checked before space lookup.",
            "x-error-codes": [
              "forbidden",
              "space_access_denied"
            ]
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-codeless-guard-causes": [
              "missing_hub",
              "discussions_feature_disabled"
            ],
            "x-error-codes": [
              "space_not_found"
            ]
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Discussions",
        "tags": [
          "community-discussions"
        ]
      },
      "post": {
        "description": "Create a new discussion inside a space.\n\nRequires an active hub membership (not banned / soft-banned).\nReturns 403 when the space's posting_permission blocks the member.",
        "operationId": "community_discussions.post_community_discussions_post_hubs_by_hub_id_spaces_by_space_id_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "additionalProperties": true,
                "description": "JSON:API create-resource envelope.",
                "properties": {
                  "data": {
                    "properties": {
                      "attributes": {
                        "properties": {
                          "attachments": {
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "type": "array"
                          },
                          "body": {
                            "description": "Markdown body text. Mention tokens use the format `@[Display Name](contact_id)` where `contact_id` is the mentioned contact's UUID. The display label is render-only; the backend trusts only the UUID. Plain `@Name` text does not trigger notifications. Recipients must be active hub members; unknown or ineligible IDs are silently ignored. Mentions notify only when the discussion is published (draft save does not trigger notifications).",
                            "nullable": true,
                            "type": "string"
                          },
                          "external_video_embeds": {
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "type": "array"
                          },
                          "is_published": {
                            "default": true,
                            "type": "boolean"
                          },
                          "poll": {
                            "anyOf": [
                              {
                                "additionalProperties": false,
                                "description": "A poll object: ``options`` is a list of 2-10 plain string labels\n(each 1-280 characters after trimming surrounding whitespace; blank or\nwhitespace-only labels and embedded NUL bytes are rejected).\n``duration_days`` is an integer from 1 to 7 \u2014 the poll closes that many\ndays after it is created. No other fields are accepted. This shape is\nused both to create a poll and, on an existing discussion, to submit a\npoll where the discussion does not already have one \u2014 see the\n``poll`` field description on the discussion create/edit endpoints for\nthe full mutation contract.",
                                "properties": {
                                  "duration_days": {
                                    "maximum": 7,
                                    "minimum": 1,
                                    "title": "Duration Days",
                                    "type": "integer"
                                  },
                                  "options": {
                                    "items": {
                                      "description": "The server trims surrounding whitespace before validating and persists the TRIMMED value \u2014 a label consisting only of whitespace (or empty) is rejected, and embedded NUL (\\u0000) bytes are rejected. `maxLength` is measured against this RAW (untrimmed) value, not the trimmed one: a label padded with leading/trailing whitespace whose RAW length exceeds 280 but TRIMMED length does not is a known, intentionally conservative case where this schema rejects an instance the server actually accepts (there is no schema keyword that can express 'trim, then measure').",
                                      "maxLength": 280,
                                      "pattern": "^(?=.*\\S)[^\\x00]*$",
                                      "type": "string"
                                    },
                                    "maxItems": 10,
                                    "minItems": 2,
                                    "title": "Options",
                                    "type": "array"
                                  }
                                },
                                "required": [
                                  "options",
                                  "duration_days"
                                ],
                                "title": "PollEditInput",
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "An optional single-choice poll to attach at create time, inserted atomically with the discussion. Key absent or JSON null \u2192 no poll (both treated identically by the server). An object: 2-10 plain string options, each trimmed/non-empty/<=280 chars, duration_days 1-7 \u2014 else 422 invalid_attribute. Same shape as the PATCH route's poll (non-null branch) below."
                          },
                          "reposted_discussion_id": {
                            "nullable": true,
                            "type": "string"
                          },
                          "scheduled_at": {
                            "format": "date-time",
                            "nullable": true,
                            "type": "string"
                          },
                          "title": {
                            "maxLength": 280,
                            "type": "string"
                          }
                        },
                        "required": [
                          "title"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "enum": [
                          "discussions"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "attributes"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "data"
                ],
                "title": "Body",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DiscussionResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Discussion",
        "tags": [
          "community-discussions"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/spaces/{space_id}/join": {
      "post": {
        "description": "Join a space.\n\nIdempotent \u2014 if the contact has already joined, returns 200 with the\nexisting member state row (no duplicate event emitted).\n\nReturns 403 if the space is restricted and the contact is not in the\nrequired segment, or if the contact is banned/soft-banned from the hub.\nReturns 404 if the space does not exist or is soft-deleted.",
        "operationId": "community_spaces_member.post_community_spaces_member_post_hubs_by_hub_id_spaces_by_space_id_join",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SpaceMemberStateAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member Join Space",
        "tags": [
          "community-spaces-member"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/spaces/{space_id}/leave": {
      "post": {
        "description": "Leave a space (delete the membership row).\n\nReturns 200 with an empty data response on success.\nReturns 404 if the contact is not currently a member of the space.\nReturns 403 if the contact is banned/soft-banned from the hub.",
        "operationId": "community_spaces_member.post_community_spaces_member_post_hubs_by_hub_id_spaces_by_space_id_leave",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member Leave Space",
        "tags": [
          "community-spaces-member"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/spaces/{space_id}/mark-read": {
      "post": {
        "description": "Update last_read_at for the contact's membership row.\n\nSoft-banned contacts retain read access (require_active, not\nrequire_active_for_write). Returns 200 with updated member state.\nReturns 404 if the contact is not a member of the space.\nReturns 403 if the contact is hard-banned from the hub.",
        "operationId": "community_spaces_member.post_community_spaces_member_post_hubs_by_hub_id_spaces_by_space_id_mark_read",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SpaceMemberStateAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member Mark Space Read",
        "tags": [
          "community-spaces-member"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/spaces/{space_id}/mute": {
      "patch": {
        "description": "Toggle the mute preference for this contact's space membership.\n\nExpects JSON:API envelope:\n    {data: {type: 'space_member_states', attributes: {is_muted: bool}}}\n\nReturns 200 with the updated member state on success.\nReturns 404 if the contact is not a member of the space.\nReturns 403 if the contact is banned/soft-banned from the hub.",
        "operationId": "community_spaces_member.patch_community_spaces_member_patch_hubs_by_hub_id_spaces_by_space_id_mute",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space_id",
            "required": true,
            "schema": {
              "title": "Space Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MuteEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_SpaceMemberStateAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Member Mute Space",
        "tags": [
          "community-spaces-member"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/web-push/subscriptions": {
      "post": {
        "operationId": "web_push.post_web_push_post_hubs_by_hub_id_web_push_subscriptions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/WebPushSubscribeBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_WebPushSubscriptionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Subscribe",
        "tags": [
          "web-push"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/web-push/subscriptions/{subscription_id}": {
      "delete": {
        "operationId": "web_push.delete_web_push_delete_hubs_by_hub_id_web_push_subscriptions_by_subscription_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "title": "Subscription Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Unsubscribe",
        "tags": [
          "web-push"
        ]
      }
    },
    "/api/v1/hubs/{hub_id}/web-push/vapid-public-key": {
      "get": {
        "operationId": "web_push.get_web_push_get_hubs_by_hub_id_web_push_vapid_public_key",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_VapidKeyAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Vapid Public Key",
        "tags": [
          "web-push"
        ]
      }
    },
    "/api/v1/hubs/{slug}": {
      "get": {
        "description": "Retrieve a hub by globally unique slug (new portal bootstrap).\n\nPublic hubs (is_private=False) are accessible without authentication.\nPrivate hubs require a valid contact token whose team_ids list includes\nthe hub's team_id.\n\nReplaces the deprecated GET /api/hub/{team_id}/hubs/{identifier} route.",
        "operationId": "hubs_portal.get_hubs_portal_get_hubs_by_slug",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Slug",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Portal Get Hub By Slug",
        "tags": [
          "hubs-portal"
        ]
      }
    },
    "/api/v1/hubs/{slug}/pages/{page_type}": {
      "get": {
        "description": "Retrieve a sanitized anonymous page render for an auth page.\n\nAnonymous-readable. Returns a sanitized 'hub-page-renders' JSON:API response\ncontaining only whitelisted branding, page settings, and section content.\n\npath param page_type in {login, register, payments}\n\nNon-whitelisted type values return 404 (no DB hit, publicly documented whitelist).\nUnknown slug, soft-deleted hub/team/page, or missing page returns 404.\nAll 404 responses use the same JSON:API error shape.\n\nRate-limited at 600 req/hour per IP (reuses _portal_slug_rl pattern).",
        "operationId": "hubs_portal.get_hubs_portal_get_hubs_by_slug_pages_by_page_type",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Slug",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_type",
            "required": true,
            "schema": {
              "title": "Page Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubPageRenderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "page_not_found \u2014 the slug is unknown, the hub/team/page is soft-deleted, page_type is not in the anonymous whitelist {login, register, payments}, or no matching page exists. All cases share this response shape (no disclosure of which case occurred)."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Portal Get Anon Page Render",
        "tags": [
          "hubs-portal"
        ]
      }
    },
    "/api/v1/messages/{message_id}": {
      "delete": {
        "operationId": "community_messages.delete_community_messages_delete_messages_by_message_id",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "title": "Message Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Message",
        "tags": [
          "community-messages"
        ]
      },
      "patch": {
        "operationId": "community_messages.patch_community_messages_patch_messages_by_message_id",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "title": "Message Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MessageEditEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_MessageResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Edit Message",
        "tags": [
          "community-messages"
        ]
      }
    },
    "/api/v1/messages/{message_id}/reactions": {
      "get": {
        "description": "Return the per-emoji reaction aggregate for a direct message.\n\nReturns a JSON:API collection of message_reaction_groups resources, each\nwith a stable scoped id \"<message_id>:<emoji>\" (matches the comment/\ndiscussion reaction-group id convention):\n\n  data: [\n    {\n      \"type\": \"message_reaction_groups\",\n      \"id\": \"<message_id>:\ud83d\udc4d\",\n      \"attributes\": {\n        \"emoji\": \"\ud83d\udc4d\", \"count\": 3,\n        \"reacted_by_me\": true, \"my_reaction_id\": \"<uuid>\"\n      }\n    },\n    ...\n  ]",
        "operationId": "community_messages.get_community_messages_get_messages_by_message_id_reactions",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "title": "Message Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Message Reactions",
        "tags": [
          "community-messages"
        ]
      },
      "post": {
        "operationId": "community_messages.post_community_messages_post_messages_by_message_id_reactions",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "title": "Message Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "additionalProperties": true,
                "title": "Body",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Rate limited"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add Reaction",
        "tags": [
          "community-messages"
        ]
      }
    },
    "/api/v1/messages/{message_id}/reactions/reactors": {
      "get": {
        "operationId": "community_messages.get_community_messages_get_messages_by_message_id_reactions_reactors",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "title": "Message Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "emoji",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Emoji"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[Size]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Message Reaction Reactors",
        "tags": [
          "community-messages"
        ]
      }
    },
    "/api/v1/messages/{message_id}/reactions/{reaction_id}": {
      "delete": {
        "description": "Remove the caller's own emoji reaction from a direct message.\n\nReturns 404 when the reaction does not exist, belongs to a different\nmessage, OR belongs to a different contact \u2014 MessageReactionsService's\nowner-scoped delete collapses all three into the same ReactionNotFoundError\n(anti-enumeration: a caller cannot learn another participant's reaction id\nis real by getting a 403 instead of a 404). Returns 204 on success.",
        "operationId": "community_messages.delete_community_messages_delete_messages_by_message_id_reactions_by_reaction_id",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "title": "Message Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "reaction_id",
            "required": true,
            "schema": {
              "title": "Reaction Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove Reaction",
        "tags": [
          "community-messages"
        ]
      }
    },
    "/api/v1/oauth-clients/{client_pk}": {
      "patch": {
        "description": "Platform-admin-only: set first_party flag and/or allowed_scopes.\n\nRequires `platform_admin` role. Returns the updated client (no secret).\nEach provided field is applied independently \u2014 a PATCH that sends BOTH\nfirst_party and allowed_scopes updates both (a no-op PATCH is idempotent).",
        "operationId": "oauth_clients_admin.patch_oauth_clients_admin_patch_oauth_clients_by_client_pk",
        "parameters": [
          {
            "in": "path",
            "name": "client_pk",
            "required": true,
            "schema": {
              "title": "Client Pk",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PlatformOAuthClientUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_OAuthClientAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Platform Admin Update Client",
        "tags": [
          "oauth-clients-admin"
        ]
      }
    },
    "/api/v1/page-builder/catalog": {
      "get": {
        "description": "Serve the vendored page-builder catalog with ETag/304 support.",
        "operationId": "page_builder.get_page_builder_get_page_builder_catalog",
        "parameters": [
          {
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-None-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Page Catalog",
        "tags": [
          "page-builder"
        ]
      }
    },
    "/api/v1/permissions": {
      "get": {
        "operationId": "permissions.get_permissions_get_permissions",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_PermissionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Permissions",
        "tags": [
          "permissions"
        ]
      }
    },
    "/api/v1/playlist/{playlist_id}": {
      "get": {
        "operationId": "media_public.get_media_public_get_playlist_by_playlist_id",
        "parameters": [
          {
            "in": "path",
            "name": "playlist_id",
            "required": true,
            "schema": {
              "title": "Playlist Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Hub Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Public Playlist",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/playlist/{playlist_id}/files": {
      "get": {
        "operationId": "media_public.get_media_public_get_playlist_by_playlist_id_files",
        "parameters": [
          {
            "in": "path",
            "name": "playlist_id",
            "required": true,
            "schema": {
              "title": "Playlist Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hub_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Hub Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaylistItemPlaybackListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Public Playlist Files",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/playlists/{playlist_id}/feed.xml": {
      "get": {
        "operationId": "media_public.get_media_public_get_playlists_by_playlist_id_feed_xml",
        "parameters": [
          {
            "in": "path",
            "name": "playlist_id",
            "required": true,
            "schema": {
              "title": "Playlist Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Playlist Podcast Feed",
        "tags": [
          "media-public"
        ]
      }
    },
    "/api/v1/portal/bootstrap": {
      "get": {
        "operationId": "domains.get_domains_get_portal_bootstrap",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_PortalBootstrapAttributes_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Portal Bootstrap",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/portal/domain-resolution": {
      "get": {
        "operationId": "domains.get_domains_get_portal_domain_resolution",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DomainResolutionAttributes_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Domain Resolution",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/portal/hubs/{hub_id}/me/avatar": {
      "post": {
        "description": "Initiate an avatar upload: validate, create File+Media, return presigned PUT URL.\n\nSecurity gate (design \u00a75.2 \u2014 initiation):\n  (a) contact JWT \u2014 enforced by get_current_contact dependency\n  (b) resolve hub server-side + derive team_id\n  (c) require_active_for_write membership check\n  (d) MIME allowlist\n  (e) 5 MB size cap\n  (f) MediaService.create_file + rate limit",
        "operationId": "community_avatar_upload.post_community_avatar_upload_post_portal_hubs_by_hub_id_me_avatar",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AvatarInitiateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Initiate Avatar Upload",
        "tags": [
          "community-avatar-upload"
        ]
      }
    },
    "/api/v1/portal/hubs/{hub_id}/me/avatar/{file_id}/finalize": {
      "post": {
        "operationId": "community_avatar_upload.post_community_avatar_upload_post_portal_hubs_by_hub_id_me_avatar_by_file_id_finalize",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_CommunityProfileResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "`errors[0].code == 'membership_denied'` \u2014 contact is banned or soft-banned from this hub.",
            "x-error-codes": [
              "membership_denied"
            ]
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "`errors[0].code` is one of: `hub_not_found` \u2014 no hub matches the path id; `not_a_member` \u2014 contact has no membership in this hub; or `profile_not_found` \u2014 the contact's community profile does not exist yet (profiles are auto-created on hub join, so this indicates an inconsistent state, not a normal flow).",
            "x-error-codes": [
              "hub_not_found",
              "not_a_member",
              "profile_not_found"
            ]
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-error-codes": [
              "invalid_avatar_file",
              "not_an_image",
              "upload_not_found",
              "content_length_unknown",
              "invalid_image_content",
              "file_too_large",
              "quota_exceeded",
              "avatar_copy_failed",
              "finalize_failed"
            ]
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Finalize Avatar Upload",
        "tags": [
          "community-avatar-upload"
        ]
      }
    },
    "/api/v1/portal/hubs/{hub_id}/me/banner": {
      "post": {
        "description": "Initiate a banner upload: validate, create File+Media, return presigned PUT URL.\n\nSecurity gate (mirrors avatar_upload.py \u2014 initiation):\n  (a) contact JWT \u2014 enforced by get_current_contact dependency\n  (b) resolve hub server-side + derive team_id\n  (c) require_active_for_write membership check\n  (d) MIME allowlist\n  (e) 10 MiB size cap\n  (f) MediaService.create_file + rate limit",
        "operationId": "community_banner_upload.post_community_banner_upload_post_portal_hubs_by_hub_id_me_banner",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/BannerInitiateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Initiate Banner Upload",
        "tags": [
          "community-banner-upload"
        ]
      }
    },
    "/api/v1/portal/hubs/{hub_id}/me/banner/{file_id}/finalize": {
      "post": {
        "operationId": "community_banner_upload.post_community_banner_upload_post_portal_hubs_by_hub_id_me_banner_by_file_id_finalize",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_CommunityProfileResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Finalize Banner Upload",
        "tags": [
          "community-banner-upload"
        ]
      }
    },
    "/api/v1/portal/hubs/{hub_id}/me/heartbeat": {
      "post": {
        "description": "Record that the authenticated contact is active in this hub.\n\nRate-limited to 1 update per contact per 60 seconds. When the rate limit\nis exceeded the service returns silently \u2014 the router always responds with\n204 No Content. The heartbeat is fire-and-forget; throttling is transparent\nto the caller (no 429 surfaced).",
        "operationId": "community_profile_me.post_community_profile_me_post_portal_hubs_by_hub_id_me_heartbeat",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Post Heartbeat",
        "tags": [
          "community-profile-me"
        ]
      }
    },
    "/api/v1/portal/hubs/{hub_id}/me/profile": {
      "get": {
        "operationId": "community_profile_me.get_community_profile_me_get_portal_hubs_by_hub_id_me_profile",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_CommunityProfileResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get My Profile",
        "tags": [
          "community-profile-me"
        ]
      },
      "patch": {
        "operationId": "community_profile_me.patch_community_profile_me_patch_portal_hubs_by_hub_id_me_profile",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileMePatchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_CommunityProfileResponseAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch My Profile",
        "tags": [
          "community-profile-me"
        ]
      }
    },
    "/api/v1/roles": {
      "get": {
        "operationId": "roles.get_roles_get_roles",
        "parameters": [
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_RoleAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Roles",
        "tags": [
          "roles"
        ]
      },
      "post": {
        "operationId": "roles.post_roles_post_roles",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/RoleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_RoleAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Role",
        "tags": [
          "roles"
        ]
      }
    },
    "/api/v1/roles/{role_id}": {
      "delete": {
        "operationId": "roles.delete_roles_delete_roles_by_role_id",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Role",
        "tags": [
          "roles"
        ]
      },
      "get": {
        "operationId": "roles.get_roles_get_roles_by_role_id",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_RoleAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Role",
        "tags": [
          "roles"
        ]
      },
      "patch": {
        "operationId": "roles.patch_roles_patch_roles_by_role_id",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/RoleUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_RoleAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Role",
        "tags": [
          "roles"
        ]
      }
    },
    "/api/v1/roles/{role_id}/permissions": {
      "post": {
        "description": "Assign a permission to a role.\n\nThe client supplies the permission ``slug``; the server resolves the\nPermission row and attaches it to the role. Idempotent: re-assigning an\nalready-held permission is a no-op that still returns 201.\n\nReturns 404 when the role or the permission slug does not exist.\nManaging roles is not exposed to API keys.",
        "operationId": "roles.post_roles_post_roles_by_role_id_permissions",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PermissionAssignRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_RoleAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Assign Permission To Role",
        "tags": [
          "roles"
        ]
      }
    },
    "/api/v1/roles/{role_id}/permissions/{permission_slug}": {
      "delete": {
        "description": "Remove a permission from a role.\n\nIdempotent: removing a permission the role does not hold is a no-op that\nstill returns 204. Returns 404 when the role itself does not exist.\n\nManaging roles is not exposed to API keys.",
        "operationId": "roles.delete_roles_delete_roles_by_role_id_permissions_by_permission_slug",
        "parameters": [
          {
            "in": "path",
            "name": "role_id",
            "required": true,
            "schema": {
              "title": "Role Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "permission_slug",
            "required": true,
            "schema": {
              "title": "Permission Slug",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove Permission From Role",
        "tags": [
          "roles"
        ]
      }
    },
    "/api/v1/teams": {
      "get": {
        "description": "List all teams the current user belongs to.\n\nAPI-key principals are scoped to a single team \u2014 return ONLY the bound\nteam rather than every team the key's creator happens to belong to.",
        "operationId": "teams.get_teams_get_teams",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_TeamAttributes_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Teams",
        "tags": [
          "teams"
        ]
      },
      "post": {
        "description": "Create a new team owned by the current user.",
        "operationId": "teams.post_teams_post_teams",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TeamCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_TeamAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Team",
        "tags": [
          "teams"
        ]
      }
    },
    "/api/v1/teams/{team_id}": {
      "delete": {
        "operationId": "teams.delete_teams_delete_teams_by_team_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "default": false,
              "title": "Force",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Team",
        "tags": [
          "teams"
        ]
      },
      "get": {
        "description": "Retrieve a team by ID.",
        "operationId": "teams.get_teams_get_teams_by_team_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_TeamAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Team",
        "tags": [
          "teams"
        ]
      },
      "patch": {
        "description": "Update a team (owner only).",
        "operationId": "teams.patch_teams_patch_teams_by_team_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TeamUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_TeamAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Team",
        "tags": [
          "teams"
        ]
      }
    },
    "/api/v1/teams/{team_id}/achievements": {
      "get": {
        "description": "Cursor-paginated list of achievement definitions for ``team_id``.",
        "operationId": "achievements_admin.get_achievements_admin_get_teams_by_team_id_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "filter[award_mode]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Award Mode]"
            }
          },
          {
            "in": "query",
            "name": "filter[category]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Category]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AchievementAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Achievements",
        "tags": [
          "achievements-admin"
        ]
      },
      "post": {
        "description": "Create a new achievement definition for ``team_id``.",
        "operationId": "achievements_admin.post_achievements_admin_post_teams_by_team_id_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AchievementCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AchievementAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Achievement",
        "tags": [
          "achievements-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/achievements/{achievement_id}": {
      "delete": {
        "description": "Archive (soft-delete) an achievement definition.\n\nDoes NOT cascade to hub offerings or earn rows.",
        "operationId": "achievements_admin.delete_achievements_admin_delete_teams_by_team_id_achievements_by_achievement_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "achievement_id",
            "required": true,
            "schema": {
              "title": "Achievement Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Archive Achievement",
        "tags": [
          "achievements-admin"
        ]
      },
      "get": {
        "description": "Retrieve a single achievement definition. 404 if missing, soft-deleted, or cross-team.",
        "operationId": "achievements_admin.get_achievements_admin_get_teams_by_team_id_achievements_by_achievement_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "achievement_id",
            "required": true,
            "schema": {
              "title": "Achievement Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AchievementAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Achievement",
        "tags": [
          "achievements-admin"
        ]
      },
      "patch": {
        "description": "Partial-update an achievement definition (PATCH semantics \u2014 exclude_unset).",
        "operationId": "achievements_admin.patch_achievements_admin_patch_teams_by_team_id_achievements_by_achievement_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "achievement_id",
            "required": true,
            "schema": {
              "title": "Achievement Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AchievementUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AchievementAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Achievement",
        "tags": [
          "achievements-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/admin-alerts": {
      "get": {
        "description": "List a team's unresolved admin alerts (most-recent first, paginated).\n\nv1 returns UNRESOLVED alerts only. ``filter[status]`` accepts ``open``\n(the default) and nothing else \u2014 any other value is a 422, so the contract\nnever silently ignores an unsupported filter.\n\nRequires a human (JWT) team-owner session; API keys are rejected.",
        "operationId": "admin_alerts.get_admin_alerts_get_teams_by_team_id_admin_alerts",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "default": "open",
              "title": "Filter[Status]",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AdminAlertAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Admin Alerts",
        "tags": [
          "admin-alerts"
        ]
      }
    },
    "/api/v1/teams/{team_id}/api-keys": {
      "get": {
        "description": "List all API keys for the team (active + revoked). No secrets returned.\n\nManaging keys requires a real user (JWT) session \u2014 a key cannot list keys.",
        "operationId": "api_keys.get_api_keys_get_teams_by_team_id_api_keys",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_ApiKeyAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Api Keys",
        "tags": [
          "api-keys"
        ]
      },
      "post": {
        "description": "Mint a new API key for the team.\n\nReturns the full plaintext `secret` in `data.attributes.secret`.\nThis is the ONLY time the secret is returned \u2014 store it immediately.\n\nManaging keys requires a real user (JWT) session \u2014 a key cannot mint keys.",
        "operationId": "api_keys.post_api_keys_post_teams_by_team_id_api_keys",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ApiKeyCreateAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Mint Api Key",
        "tags": [
          "api-keys"
        ]
      }
    },
    "/api/v1/teams/{team_id}/api-keys/{key_id}": {
      "delete": {
        "description": "Revoke an API key by setting revoked_at. Returns 204 No Content.\n\nManaging keys requires a real user (JWT) session \u2014 a key cannot revoke keys.",
        "operationId": "api_keys.delete_api_keys_delete_teams_by_team_id_api_keys_by_key_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Revoke Api Key",
        "tags": [
          "api-keys"
        ]
      },
      "get": {
        "description": "Retrieve a single API key by ID. No secret returned.\n\nManaging keys requires a real user (JWT) session.",
        "operationId": "api_keys.get_api_keys_get_teams_by_team_id_api_keys_by_key_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ApiKeyAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve Api Key",
        "tags": [
          "api-keys"
        ]
      },
      "patch": {
        "description": "Update an API key's permission flags (currently only can_moderate).\n\nManaging keys requires a real user (JWT) session. ``require_team_owner``\nADMITS a valid same-team API key (a key implies owner-level access), so\n``reject_api_key_principal`` below is the SOLE defense that stops a key\nfrom flipping its own can_moderate \u2014 do not remove it.",
        "operationId": "api_keys.patch_api_keys_patch_teams_by_team_id_api_keys_by_key_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ApiKeyAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Api Key",
        "tags": [
          "api-keys"
        ]
      }
    },
    "/api/v1/teams/{team_id}/attachments": {
      "get": {
        "description": "List attachments for a team with optional filters, cursor-paginated.",
        "operationId": "media_admin_attachments.get_media_admin_attachments_get_teams_by_team_id_attachments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "media_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Media Id"
            }
          },
          {
            "in": "query",
            "name": "target_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "content_node",
                    "hub_branding",
                    "page_section",
                    "email_message",
                    "playlist",
                    "comment",
                    "discussion",
                    "message"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Target Type"
            }
          },
          {
            "in": "query",
            "name": "target_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Target Id"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Attachments",
        "tags": [
          "media-admin-attachments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/attachments/{attachment_id}": {
      "delete": {
        "description": "Hard-delete (detach) an attachment. caller_module derived from row's target_type.",
        "operationId": "media_admin_attachments.delete_media_admin_attachments_delete_teams_by_team_id_attachments_by_attachment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "attachment_id",
            "required": true,
            "schema": {
              "title": "Attachment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Attachment",
        "tags": [
          "media-admin-attachments"
        ]
      },
      "get": {
        "description": "Fetch a single attachment by ID.",
        "operationId": "media_admin_attachments.get_media_admin_attachments_get_teams_by_team_id_attachments_by_attachment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "attachment_id",
            "required": true,
            "schema": {
              "title": "Attachment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Show Attachment",
        "tags": [
          "media-admin-attachments"
        ]
      },
      "patch": {
        "description": "Reorder (position) or change role of an attachment.\n\ncaller_module is derived from the existing row's target_type via _TARGET_TYPE_OWNER.",
        "operationId": "media_admin_attachments.patch_media_admin_attachments_patch_teams_by_team_id_attachments_by_attachment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "attachment_id",
            "required": true,
            "schema": {
              "title": "Attachment Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Attachment",
        "tags": [
          "media-admin-attachments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/checkout/sync/import-from-stripe": {
      "post": {
        "operationId": "checkout_admin.post_checkout_admin_post_teams_by_team_id_checkout_sync_import_from_stripe",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/StartImportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Start a Stripe-tagged-product import for a hub",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/checkout/sync/import-runs/{run_id}": {
      "get": {
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_checkout_sync_import_runs_by_run_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "title": "Run Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get import run status and progress",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contact-attributes": {
      "get": {
        "operationId": "contact_attributes_admin.get_contact_attributes_admin_get_teams_by_team_id_contact_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DefinitionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Definitions",
        "tags": [
          "contact-attributes-admin"
        ]
      },
      "post": {
        "operationId": "contact_attributes_admin.post_contact_attributes_admin_post_teams_by_team_id_contact_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DefinitionCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DefinitionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Definition",
        "tags": [
          "contact-attributes-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contact-attributes/{definition_id}": {
      "delete": {
        "operationId": "contact_attributes_admin.delete_contact_attributes_admin_delete_teams_by_team_id_contact_attributes_by_definition_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Definition",
        "tags": [
          "contact-attributes-admin"
        ]
      },
      "get": {
        "operationId": "contact_attributes_admin.get_contact_attributes_admin_get_teams_by_team_id_contact_attributes_by_definition_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DefinitionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Definition",
        "tags": [
          "contact-attributes-admin"
        ]
      },
      "patch": {
        "operationId": "contact_attributes_admin.patch_contact_attributes_admin_patch_teams_by_team_id_contact_attributes_by_definition_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DefinitionUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DefinitionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Definition",
        "tags": [
          "contact-attributes-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contact-attributes/{definition_id}/options": {
      "get": {
        "operationId": "contact_attributes_admin.get_contact_attributes_admin_get_teams_by_team_id_contact_attributes_by_definition_id_options",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OptionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Options",
        "tags": [
          "contact-attributes-admin"
        ]
      },
      "post": {
        "operationId": "contact_attributes_admin.post_contact_attributes_admin_post_teams_by_team_id_contact_attributes_by_definition_id_options",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/OptionCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OptionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Option",
        "tags": [
          "contact-attributes-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contact-attributes/{definition_id}/options/{option_id}": {
      "delete": {
        "operationId": "contact_attributes_admin.delete_contact_attributes_admin_delete_teams_by_team_id_contact_attributes_by_definition_id_options_by_option_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "option_id",
            "required": true,
            "schema": {
              "title": "Option Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Option",
        "tags": [
          "contact-attributes-admin"
        ]
      },
      "patch": {
        "operationId": "contact_attributes_admin.patch_contact_attributes_admin_patch_teams_by_team_id_contact_attributes_by_definition_id_options_by_option_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "option_id",
            "required": true,
            "schema": {
              "title": "Option Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/OptionUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OptionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Option",
        "tags": [
          "contact-attributes-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contacts/": {
      "get": {
        "operationId": "contacts_admin.get_contacts_admin_get_teams_by_team_id_contacts",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "-created_at",
              "title": "Sort",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamContactListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Contacts",
        "tags": [
          "contacts-admin"
        ]
      },
      "post": {
        "description": "Create (or idempotently attach) a team contact.\n\nDual rate limit: the outer `_create_rate_limit` always fires via\n`dependencies=[...]`. If `send_invite=True`, we ALSO consume the tighter\n10/hour `_invite_rate_limit` bucket so invite spam is hard-capped\nindependently of the 60/hour create quota.\n\nEmail validation (\u00a713.1):\n- Layer 1 (syntax + MX) always runs, no external calls.\n- Layer 2 (Emailable real-time API) runs when EMAILABLE_API_KEY is set.\n- On reject: 400 (syntax) or 422 (mx/undeliverable), contact NOT created.\n- On accept: contact created; typo_hint surfaced in meta.email_validation.\n- Emailable outage \u2192 fail-open (contact created, emailable_status='skipped').",
        "operationId": "contacts_admin.post_contacts_admin_post_teams_by_team_id_contacts",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamContactResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Contact",
        "tags": [
          "contacts-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contacts/{team_contact_id}": {
      "delete": {
        "description": "Soft-delete a team contact.\n\n204 on success. 404 if missing/already deleted. 409 if the contact still\nowns a live hub \u2014 transfer ownership (or delete the hub)\nbefore removing them; unlike a typical 409, retrying this exact request\nwill never succeed on its own.\n\nIMPORTANT \u2014 hub memberships are NOT preserved for restore:\nthis severs the contact's login AND cascades their active hub\nmemberships to 'left' (banned/soft_banned and owned-hub memberships are\nleft untouched \u2014 see the hub_memberships module for the full cascade\ncontract). POST .../restore reverses the login lock ONLY; it does NOT\nreactivate any hub membership the cascade touched. A restored contact\nmust be explicitly re-added to each hub (POST .../hubs/{hub_id}/members)\nto rejoin. This is a deliberate product decision, not a bug.",
        "operationId": "contacts_admin.delete_contacts_admin_delete_teams_by_team_id_contacts_by_team_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Contact owns one or more live hubs (code=contact_owns_hub). This is NOT resolved by retrying the same request: transfer ownership of each listed hub to a different member, or delete the hub itself, before removing this contact. The error meta.owned_hub_ids lists the affected hubs."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Contact",
        "tags": [
          "contacts-admin"
        ]
      },
      "get": {
        "description": "Retrieve a single team contact, including soft-deleted rows.",
        "operationId": "contacts_admin.get_contacts_admin_get_teams_by_team_id_contacts_by_team_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamContactResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Contact",
        "tags": [
          "contacts-admin"
        ]
      },
      "patch": {
        "description": "Partial update. Immutable fields (source/email/password) rejected at\nschema level via extra=\"forbid\"; service-level ImmutableFieldError is\ncaught here as defense-in-depth.",
        "operationId": "contacts_admin.patch_contacts_admin_patch_teams_by_team_id_contacts_by_team_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamContactResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Contact",
        "tags": [
          "contacts-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contacts/{team_contact_id}/attributes": {
      "get": {
        "operationId": "contact_attributes_admin_values.get_contact_attributes_admin_values_get_teams_by_team_id_contacts_by_team_contact_id_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactValueListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Contact Values",
        "tags": [
          "contact-attributes-admin-values"
        ]
      },
      "patch": {
        "operationId": "contact_attributes_admin_values.patch_contact_attributes_admin_values_patch_teams_by_team_id_contacts_by_team_contact_id_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkValuePatchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactValueListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Contact Values",
        "tags": [
          "contact-attributes-admin-values"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contacts/{team_contact_id}/restore": {
      "post": {
        "description": "Restore a soft-deleted team contact. Silent \u2014 no event emitted.\n\nIMPORTANT \u2014 restores LOGIN only, not hub memberships: a\nsoft-deleted contact's active hub_memberships rows are cascaded to\n'left' by DELETE .../{team_contact_id} (see that route's description).\nThis endpoint clears the login lock ONLY; it does NOT reactivate any\nhub membership. The restored contact must be explicitly re-added to\neach hub (POST .../hubs/{hub_id}/members) to rejoin. Deliberate product\ndecision, not a bug.",
        "operationId": "contacts_admin.post_contacts_admin_post_teams_by_team_id_contacts_by_team_contact_id_restore",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamContactResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Restore Contact",
        "tags": [
          "contacts-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contacts/{team_contact_id}/tags": {
      "get": {
        "description": "List tags currently attached to a contact (active tags only).",
        "operationId": "tags_assignments.get_tags_assignments_get_teams_by_team_id_contacts_by_team_contact_id_tags",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Contact Tags",
        "tags": [
          "tags-assignments"
        ]
      },
      "post": {
        "description": "Attach a single tag to a contact.",
        "operationId": "tags_assignments.post_tags_assignments_post_teams_by_team_id_contacts_by_team_contact_id_tags",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TagAssignEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Assign Tag",
        "tags": [
          "tags-assignments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contacts/{team_contact_id}/tags/bulk": {
      "post": {
        "description": "Attach many tags to a contact in one call.\n\nAlready-assigned tags are silently skipped. If any tag_id is unknown\nthe whole call fails with 404.",
        "operationId": "tags_assignments.post_tags_assignments_post_teams_by_team_id_contacts_by_team_contact_id_tags_bulk",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/BulkAssignEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Bulk Assign Tags",
        "tags": [
          "tags-assignments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/contacts/{team_contact_id}/tags/{tag_id}": {
      "delete": {
        "description": "Detach a tag from a contact.",
        "operationId": "tags_assignments.delete_tags_assignments_delete_teams_by_team_id_contacts_by_team_contact_id_tags_by_tag_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "team_contact_id",
            "required": true,
            "schema": {
              "title": "Team Contact Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "tag_id",
            "required": true,
            "schema": {
              "title": "Tag Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove Contact Tag",
        "tags": [
          "tags-assignments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/content-node-attachments": {
      "post": {
        "description": "Create a content-node attachment. caller_module='content' is hard-coded server-side.",
        "operationId": "media_admin_attachments.post_media_admin_attachments_post_teams_by_team_id_content_node_attachments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Content Node Attachment",
        "tags": [
          "media-admin-attachments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/coupons/": {
      "get": {
        "description": "Cursor-paginated list of coupons for the team.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_coupons",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Coupons",
        "tags": [
          "products-admin"
        ]
      },
      "post": {
        "description": "Create a new coupon for the team (code normalized to uppercase).",
        "operationId": "products_admin.post_products_admin_post_teams_by_team_id_coupons",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CouponCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Coupon",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/coupons/{coupon_id}": {
      "delete": {
        "description": "Soft-delete a coupon.",
        "operationId": "products_admin.delete_products_admin_delete_teams_by_team_id_coupons_by_coupon_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "coupon_id",
            "required": true,
            "schema": {
              "title": "Coupon Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Coupon",
        "tags": [
          "products-admin"
        ]
      },
      "get": {
        "description": "Fetch a single coupon by id.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_coupons_by_coupon_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "coupon_id",
            "required": true,
            "schema": {
              "title": "Coupon Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Coupon",
        "tags": [
          "products-admin"
        ]
      },
      "patch": {
        "description": "Update mutable coupon fields (code/discount are immutable).",
        "operationId": "products_admin.patch_products_admin_patch_teams_by_team_id_coupons_by_coupon_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "coupon_id",
            "required": true,
            "schema": {
              "title": "Coupon Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CouponUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Coupon",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/coupons/{coupon_id}/products/": {
      "get": {
        "description": "List the product scope of a coupon.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_coupons_by_coupon_id_products",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "coupon_id",
            "required": true,
            "schema": {
              "title": "Coupon Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponProductListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Coupon Products",
        "tags": [
          "products-admin"
        ]
      },
      "post": {
        "description": "Add a product to a coupon's scope.\n\nEmpty scope (no products attached) means the coupon applies to every\nproduct in the team \u2014 the Checkout module is responsible for that\ninterpretation.",
        "operationId": "products_admin.post_products_admin_post_teams_by_team_id_coupons_by_coupon_id_products",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "coupon_id",
            "required": true,
            "schema": {
              "title": "Coupon Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CouponProductAttachEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponProductResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Attach Product To Coupon",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/coupons/{coupon_id}/products/{product_id}": {
      "delete": {
        "description": "Remove a product from a coupon's scope.",
        "operationId": "products_admin.delete_products_admin_delete_teams_by_team_id_coupons_by_coupon_id_products_by_product_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "coupon_id",
            "required": true,
            "schema": {
              "title": "Coupon Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Detach Product From Coupon",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/external-login-providers": {
      "get": {
        "description": "List all external-login providers for the team (including disabled).\n\nManaging external-login providers requires a real user (JWT) session \u2014\nAPI keys cannot register or manage provider configs.",
        "operationId": "external_login_providers.get_external_login_providers_get_teams_by_team_id_external_login_providers",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_ExternalProviderAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Providers",
        "tags": [
          "external-login-providers"
        ]
      },
      "post": {
        "description": "Register a new external-login provider for the team hub.\n\n``client_secret`` is write-only \u2014 it is AES-256-GCM encrypted at rest.\nRead responses return ``client_secret_set: bool`` instead.\n\nFor generic kinds (generic_oidc / generic_oauth2):\n  - Every admin-supplied URL is SSRF-validated (HTTPS-only; no private /\n    loopback / metadata IPs).\n  - ``issuer`` must NOT be in the platform's trusted-issuer set (currently\n    ``https://accounts.google.com``).",
        "operationId": "external_login_providers.post_external_login_providers_post_teams_by_team_id_external_login_providers",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalProviderCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ExternalProviderAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Provider",
        "tags": [
          "external-login-providers"
        ]
      }
    },
    "/api/v1/teams/{team_id}/external-login-providers/{provider_id}": {
      "delete": {
        "description": "Soft-delete an external-login provider. Returns 204 on success.",
        "operationId": "external_login_providers.delete_external_login_providers_delete_teams_by_team_id_external_login_providers_by_provider_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "provider_id",
            "required": true,
            "schema": {
              "title": "Provider Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Provider",
        "tags": [
          "external-login-providers"
        ]
      },
      "get": {
        "description": "Retrieve a single external-login provider. No secret returned.",
        "operationId": "external_login_providers.get_external_login_providers_get_teams_by_team_id_external_login_providers_by_provider_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "provider_id",
            "required": true,
            "schema": {
              "title": "Provider Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ExternalProviderAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve Provider",
        "tags": [
          "external-login-providers"
        ]
      },
      "patch": {
        "description": "Update an external-login provider (PATCH \u2014 only supplied fields changed).\n\nSupplying a new ``client_secret`` rotates the stored ciphertext.\nOmitting it leaves the stored secret unchanged.\n\nSSRF and trusted-issuer guards apply to generic kinds on update, same as\non create.",
        "operationId": "external_login_providers.patch_external_login_providers_patch_teams_by_team_id_external_login_providers_by_provider_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "provider_id",
            "required": true,
            "schema": {
              "title": "Provider Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalProviderUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_ExternalProviderAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Provider",
        "tags": [
          "external-login-providers"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files": {
      "get": {
        "description": "List non-deleted files for a team, cursor-paginated.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_files",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Files",
        "tags": [
          "media-admin"
        ]
      },
      "post": {
        "description": "Create a new file row and return a presigned S3 PUT URL.\n\nThe client uploads the file directly to S3 using the returned upload_url,\nthen calls POST /api/teams/{team_id}/files/{id}/finalize to confirm the\nupload succeeded and transition status_upload PENDING \u2192 READY.\n\nRate limited to MEDIA_UPLOAD_RATE_LIMIT_PER_HOUR requests per team per hour.\nReturns 413 if the team's storage quota would be exceeded.\nReturns 429 if the per-team rate limit is exceeded.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create File",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/multipart": {
      "post": {
        "description": "Initiate a multipart upload. Returns upload_id and s3_key in data.meta.\n\nThe client uses upload_id + s3_key to request presigned URLs for each part,\nthen calls /complete when all parts are uploaded. Does NOT call /finalize \u2014\nmultipart complete signals the object is assembled; /finalize HEAD-checks it.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_multipart",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Multipart Init",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}": {
      "delete": {
        "description": "Soft-delete a file and its associated media row.",
        "operationId": "media_admin.delete_media_admin_delete_teams_by_team_id_files_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete File",
        "tags": [
          "media-admin"
        ]
      },
      "get": {
        "description": "Fetch a single non-deleted file.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_files_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Show File",
        "tags": [
          "media-admin"
        ]
      },
      "patch": {
        "description": "Update title, description, and/or visibility of a file.",
        "operationId": "media_admin.patch_media_admin_patch_teams_by_team_id_files_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update File",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/cards": {
      "get": {
        "description": "List active in-video CTA cards for a team-owned file, ordered by start.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_files_by_id_cards",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileCardListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List File Cards",
        "tags": [
          "media-admin"
        ]
      },
      "put": {
        "description": "Atomically replace the full list of in-video CTA cards for a file.",
        "operationId": "media_admin.put_media_admin_put_teams_by_team_id_files_by_id_cards",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileCardsWriteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileCardListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Replace File Cards",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/chapters": {
      "get": {
        "description": "List the effective chapters (authored, else auto) for a team-owned file.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_files_by_id_chapters",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileChapterListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List File Chapters",
        "tags": [
          "media-admin"
        ]
      },
      "put": {
        "description": "Atomically replace the authored chapter list for a team-owned file.",
        "operationId": "media_admin.put_media_admin_put_teams_by_team_id_files_by_id_chapters",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileChaptersWriteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileChapterListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Replace File Chapters",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/download/{variant}": {
      "get": {
        "description": "Return a signed download URL in a JSON:API body for a team-owned file variant.\n\nReturns the signed URL, filename, and expiry as a JSON:API resource so that\nbrowser clients (window.open / <a href>) can fetch the URL without needing to\nforward the Authorization or X-Team-ID headers (which are CORS-opaque on 302s).",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_files_by_id_download_by_variant_path",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "variant",
            "required": true,
            "schema": {
              "title": "Variant",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileDownloadPayload"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Download File Variant",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/finalize": {
      "post": {
        "description": "Confirm a completed S3 upload and transition status_upload PENDING \u2192 READY.\n\nThe client calls this endpoint after completing the presigned PUT to S3.\nThe server HEAD-checks the S3 object; on success it emits MediaUploaded.\n\nErrors:\n    503 \u2014 media module disabled\n    404 \u2014 file_id not found or has no associated media\n    415 \u2014 uploaded object content-type not permitted\n    422 \u2014 S3 object not found at expected path (upload may have failed)",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_finalize",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Finalize File",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/media": {
      "get": {
        "description": "Resolve a team-owned file to a signed playback URL for admins/creators.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_files_by_id_media",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileMediaPayload"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Admin File Media",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/multipart/{upload_id}": {
      "delete": {
        "description": "Abort a multipart upload and mark the file status_upload=FAILED.",
        "operationId": "media_admin.delete_media_admin_delete_teams_by_team_id_files_by_id_multipart_by_upload_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "upload_id",
            "required": true,
            "schema": {
              "title": "Upload Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Multipart Abort",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/multipart/{upload_id}/complete": {
      "post": {
        "description": "Complete a multipart upload. Client must call /finalize next to confirm.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_multipart_by_upload_id_complete",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "upload_id",
            "required": true,
            "schema": {
              "title": "Upload Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartCompleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Multipart Complete",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/multipart/{upload_id}/parts/{part_number}": {
      "post": {
        "description": "Return a presigned PUT URL for one part of a multipart upload.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_multipart_by_upload_id_parts_by_part_number",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "upload_id",
            "required": true,
            "schema": {
              "title": "Upload Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "part_number",
            "required": true,
            "schema": {
              "title": "Part Number",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Multipart Part Url",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/replace": {
      "post": {
        "description": "Create a pending replacement upload without changing file.media_id.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_replace",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileReplacementInitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileReplacementResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Init File Replacement",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/replace/multipart": {
      "post": {
        "description": "Create a pending replacement and initiate multipart upload.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_replace_multipart",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FileReplacementInitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileReplacementResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Multipart File Replacement Init",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/replace/{replacement_media_id}/finalize": {
      "post": {
        "description": "Finalize a replacement upload and relink the existing file atomically.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_replace_by_replacement_media_id_finalize",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "replacement_media_id",
            "required": true,
            "schema": {
              "title": "Replacement Media Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Finalize File Replacement",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/replace/{replacement_media_id}/multipart/{upload_id}/complete": {
      "post": {
        "description": "Complete multipart replacement upload and relink the file.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_replace_by_replacement_media_id_multipart_by_upload_id_complete",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "replacement_media_id",
            "required": true,
            "schema": {
              "title": "Replacement Media Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "upload_id",
            "required": true,
            "schema": {
              "title": "Upload Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/MultipartCompleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Multipart File Replacement Complete",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/replace/{replacement_media_id}/multipart/{upload_id}/parts/{part_number}": {
      "post": {
        "description": "Return a presigned URL for one replacement multipart part.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_replace_by_replacement_media_id_multipart_by_upload_id_parts_by_part_number",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "replacement_media_id",
            "required": true,
            "schema": {
              "title": "Replacement Media Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "upload_id",
            "required": true,
            "schema": {
              "title": "Upload Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "part_number",
            "required": true,
            "schema": {
              "title": "Part Number",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FileReplacementResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Multipart File Replacement Part Url",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/files/{id}/transcode": {
      "post": {
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_files_by_id_transcode",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Trigger Transcode",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/folders": {
      "get": {
        "description": "List non-deleted folders for a team, cursor-paginated.\n\nPreviously returned ALL folders (unbounded tree dump), which is a DoS risk\nfor teams with thousands of folders.  Now applies cursor pagination via\npage[size] (default 20, max 100) and page[after] (opaque ID cursor).\n\nEach folder's path_array encodes the full ancestor chain.  For the full\ntree in a single request, set page[size]=100 and follow links.next.\n\nReturns:\n    JSON:API collection with meta.page + links.next envelope.",
        "operationId": "media_admin_folders.get_media_admin_folders_get_teams_by_team_id_folders",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Folders",
        "tags": [
          "media-admin-folders"
        ]
      },
      "post": {
        "description": "Create a new folder, optionally nested under parent_id.\n\nReturns 404 if parent_id is provided but not found or belongs to a different team.",
        "operationId": "media_admin_folders.post_media_admin_folders_post_teams_by_team_id_folders",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FolderCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Folder",
        "tags": [
          "media-admin-folders"
        ]
      }
    },
    "/api/v1/teams/{team_id}/folders/{id}": {
      "delete": {
        "description": "Soft-delete a folder \u2014 only allowed when the folder has no children or files.\n\nReturns 404 if the folder is not found or belongs to a different team.\nReturns 409 if the folder is not empty (has child folders or files).",
        "operationId": "media_admin_folders.delete_media_admin_folders_delete_teams_by_team_id_folders_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Folder",
        "tags": [
          "media-admin-folders"
        ]
      },
      "get": {
        "description": "Fetch a single non-deleted folder by ID.",
        "operationId": "media_admin_folders.get_media_admin_folders_get_teams_by_team_id_folders_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Show Folder",
        "tags": [
          "media-admin-folders"
        ]
      },
      "patch": {
        "description": "Rename a folder (name only).\n\nparent_id cannot be changed via PATCH \u2014 use POST /{id}/move instead.\nReturns 404 if the folder is not found or belongs to a different team.",
        "operationId": "media_admin_folders.patch_media_admin_folders_patch_teams_by_team_id_folders_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FolderUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Rename Folder",
        "tags": [
          "media-admin-folders"
        ]
      }
    },
    "/api/v1/teams/{team_id}/folders/{id}/move": {
      "post": {
        "operationId": "media_admin_folders.post_media_admin_folders_post_teams_by_team_id_folders_by_id_move",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/FolderMoveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Move Folder",
        "tags": [
          "media-admin-folders"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hub-branding-attachments": {
      "post": {
        "description": "Create a hub-branding attachment. caller_module='hubs' is hard-coded server-side.",
        "operationId": "media_admin_attachments.post_media_admin_attachments_post_teams_by_team_id_hub_branding_attachments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Hub Branding Attachment",
        "tags": [
          "media-admin-attachments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/": {
      "get": {
        "description": "List all active hubs for the team with cursor pagination.",
        "operationId": "hubs_admin.get_hubs_admin_get_teams_by_team_id_hubs",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Hubs",
        "tags": [
          "hubs-admin"
        ]
      },
      "post": {
        "description": "Create a new hub for the team.",
        "operationId": "hubs_admin.post_hubs_admin_post_teams_by_team_id_hubs",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Hub",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/from-template": {
      "post": {
        "description": "Create a hub from a hubTemplate in ONE transaction (spec \u00a75, create mode).\n\nReturns 201 with the hub id plus the ordered per-resource summary\n(created / skipped / reason), so a caller can tell what actually happened\nwithout diffing the hub. A REPLAY (same Idempotency-Key, same request)\nreturns 201 with the SAME summary and ``replayed: true``.\n\nError codes\n-----------\n405 (bare, ``Allow: GET``)        \u2014 ``HUB_SCAFFOLD_ENABLED`` is False; the\n                                     route answers exactly like a backend\n                                     without this op. Enforced by\n                                     ``_FlagGatedAPIRoute`` BEFORE body\n                                     parsing, auth and the rate limiter\n                                     (module docstring).\n400  ``idempotency_key_invalid``  \u2014 ``Idempotency-Key`` missing, empty, or\n                                     over 255 characters.\n409  ``catalog_digest_mismatch``  \u2014 the client's catalog digest is stale.\n404  ``template_not_found``       \u2014 hubTemplateId/pageTemplateId unknown to\n                                     the served catalog.\n409  ``template_not_scaffoldable``\u2014 the hubTemplate's lifecycle is not\n                                     scaffold-eligible.\n422  ``invalid_scaffold_request`` \u2014 a malformed template block (spaces,\n                                     onboarding, policies, playlists,\n                                     navigation), an unresolved token, an\n                                     invalid page tree, a batch-limit or\n                                     payload-size breach, or an\n                                     unresolvable welcome-post space/author.\n409  ``hub_slug_unavailable``     \u2014 no unique hub slug could be minted\n                                     after ``HubService.create``'s race\n                                     retries.\n409  ``hub_resource_conflict``    \u2014 a child resource (space slug, attribute\n                                     definition slug, playlist item) was\n                                     claimed concurrently mid-op.\n409  ``page_conflict`` /\n     ``reserved_page_conflict``   \u2014 the page matrix's own conflicts.\n409  ``idempotency_fingerprint_mismatch`` \u2014 the Idempotency-Key was reused\n                                     with a different request, or lost a\n                                     concurrent claim race.\n\nEVERY code above is a ``ScaffoldError`` subclass RAISED out of this handler\n\u2014 never returned inline \u2014 and mapped by the centrally-registered\n``scaffold_error_handler``, which runs AFTER ``get_db()``'s except-branch\nhas rolled the whole transaction back. See the module docstring.",
        "operationId": "hubs_admin.post_hubs_admin_post_teams_by_team_id_hubs_from_template",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubScaffoldEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubScaffoldResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Scaffold Hub From Template",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/access-overrides": {
      "get": {
        "description": "List access overrides for a hub with optional contact filter.",
        "operationId": "access_overrides_admin.get_access_overrides_admin_get_teams_by_team_id_hubs_by_hub_id_access_overrides",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[contact_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Contact Id]"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OverrideListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Overrides",
        "tags": [
          "access-overrides-admin"
        ]
      },
      "post": {
        "description": "Create an admin access override for a contact.\n\nNOTE: require_team_owner returns the Team ORM row (not a JWT).\nThe admin user ID comes from get_current_user[\"sub\"] (CX-3).",
        "operationId": "access_overrides_admin.post_access_overrides_admin_post_teams_by_team_id_hubs_by_hub_id_access_overrides",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/OverrideCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OverrideResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Override",
        "tags": [
          "access-overrides-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/access-overrides/{override_id}": {
      "delete": {
        "description": "Delete (revoke) an access override.",
        "operationId": "access_overrides_admin.delete_access_overrides_admin_delete_teams_by_team_id_hubs_by_hub_id_access_overrides_by_override_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "override_id",
            "required": true,
            "schema": {
              "title": "Override Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Override",
        "tags": [
          "access-overrides-admin"
        ]
      },
      "get": {
        "description": "Retrieve an access override by ID.",
        "operationId": "access_overrides_admin.get_access_overrides_admin_get_teams_by_team_id_hubs_by_hub_id_access_overrides_by_override_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "override_id",
            "required": true,
            "schema": {
              "title": "Override Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OverrideResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Override",
        "tags": [
          "access-overrides-admin"
        ]
      },
      "patch": {
        "description": "Update an access override (e.g., extend expiry).",
        "operationId": "access_overrides_admin.patch_access_overrides_admin_patch_teams_by_team_id_hubs_by_hub_id_access_overrides_by_override_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "override_id",
            "required": true,
            "schema": {
              "title": "Override Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/OverrideUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OverrideResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Override",
        "tags": [
          "access-overrides-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/access-rules": {
      "get": {
        "description": "List access rules for a hub with cursor pagination.",
        "operationId": "access_rules_admin.get_access_rules_admin_get_teams_by_team_id_hubs_by_hub_id_access_rules",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessRuleListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Rules",
        "tags": [
          "access-rules-admin"
        ]
      },
      "post": {
        "description": "Create an access rule with conditions for a resource in a hub.\n\nNOTE: require_team_owner returns the Team ORM row (not a JWT).\nThe admin user ID comes from get_current_user (CX-3).",
        "operationId": "access_rules_admin.post_access_rules_admin_post_teams_by_team_id_hubs_by_hub_id_access_rules",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AccessRuleCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessRuleResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Rule",
        "tags": [
          "access-rules-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/access-rules/{rule_id}": {
      "delete": {
        "description": "Delete an access rule and cascade-delete its conditions.",
        "operationId": "access_rules_admin.delete_access_rules_admin_delete_teams_by_team_id_hubs_by_hub_id_access_rules_by_rule_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Rule",
        "tags": [
          "access-rules-admin"
        ]
      },
      "get": {
        "description": "Retrieve an access rule with its conditions.",
        "operationId": "access_rules_admin.get_access_rules_admin_get_teams_by_team_id_hubs_by_hub_id_access_rules_by_rule_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessRuleResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Rule",
        "tags": [
          "access-rules-admin"
        ]
      },
      "patch": {
        "description": "Update an access rule and optionally replace its conditions.",
        "operationId": "access_rules_admin.patch_access_rules_admin_patch_teams_by_team_id_hubs_by_hub_id_access_rules_by_rule_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AccessRuleUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessRuleResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate rule for target)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Rule",
        "tags": [
          "access-rules-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/achievements": {
      "get": {
        "description": "Hub offerings grid \u2014 which achievements are offered in this hub.",
        "operationId": "achievements_admin.get_achievements_admin_get_teams_by_team_id_hubs_by_hub_id_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_AchievementHubAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Hub Achievements",
        "tags": [
          "achievements-admin"
        ]
      },
      "post": {
        "description": "Offer an achievement in a hub. Idempotent \u2014 attaching twice still yields one offering.",
        "operationId": "achievements_admin.post_achievements_admin_post_teams_by_team_id_hubs_by_hub_id_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AchievementAttachEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AchievementHubAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Attach Hub Achievement",
        "tags": [
          "achievements-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/achievements/{achievement_id}": {
      "delete": {
        "description": "Remove an achievement's offering from a hub. Earners keep the badge.",
        "operationId": "achievements_admin.delete_achievements_admin_delete_teams_by_team_id_hubs_by_hub_id_achievements_by_achievement_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "achievement_id",
            "required": true,
            "schema": {
              "title": "Achievement Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Detach Hub Achievement",
        "tags": [
          "achievements-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/activity/contacts/{contact_id}": {
      "get": {
        "description": "Return the ContactHubStats row for ``(hub_id, contact_id)``.",
        "operationId": "activity_admin.get_activity_admin_get_teams_by_team_id_hubs_by_hub_id_activity_contacts_by_contact_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactHubStatsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Contact Activity",
        "tags": [
          "activity-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/activity/top-engaged": {
      "get": {
        "description": "Return a page of top-engaged contacts for the hub, sorted by metric DESC.",
        "operationId": "activity_admin.get_activity_admin_get_teams_by_team_id_hubs_by_hub_id_activity_top_engaged",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "metric",
            "required": false,
            "schema": {
              "default": "login_count",
              "title": "Metric",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactHubStatsListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Top Engaged",
        "tags": [
          "activity-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/analytics/email": {
      "get": {
        "operationId": "analytics_admin.get_analytics_admin_get_teams_by_team_id_hubs_by_hub_id_analytics_email",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailDeliverabilityResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Email Deliverability",
        "tags": [
          "analytics-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/analytics/engagement": {
      "get": {
        "description": "Hub engagement overview (composite KPIs + leaderboards).\n\nPass ``section`` for a size-limited drill-down on a single section.\nValid section values: top_members_by_posts, top_members_by_comments,\ntop_posts, top_content, top_spaces, recent_members.\n\nUse ``page[size]`` (1-100) to control how many rows the section returns.\nThe composite (no section) response is a fixed top-N preview.",
        "operationId": "analytics_admin.get_analytics_admin_get_teams_by_team_id_hubs_by_hub_id_analytics_engagement",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "section",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Section"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/EngagementResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Engagement",
        "tags": [
          "analytics-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/analytics/overview": {
      "get": {
        "description": "Membership summary for a hub: total active / new-in-range / active-by-recency.",
        "operationId": "analytics_admin.get_analytics_admin_get_teams_by_team_id_hubs_by_hub_id_analytics_overview",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OverviewResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Overview",
        "tags": [
          "analytics-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations": {
      "get": {
        "description": "List automations for ``hub_id``, cursor-paginated.",
        "operationId": "automations.get_automations_get_teams_by_team_id_hubs_by_hub_id_automations",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Automations",
        "tags": [
          "automations"
        ]
      },
      "post": {
        "description": "Create a new draft automation in hub ``hub_id``.\n\nThe definition is stored as a draft; it is NOT validated until\n``POST /automations/{id}/publish`` is called.  Returns 201 on\nsuccess.",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_automations",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AutomationCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Automation",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/events": {
      "post": {
        "description": "Fire a custom developer/integration trigger event.\n\nWrites an ``EventOutbox`` row (status ``pending``) that the relay worker\nwill pick up and match against active automation triggers.\n\n``idempotency_key`` (REQUIRED) \u2014 the event is deduplicated per-team.\nA repeat call with the same key for the same team returns 200 without\nwriting a new row.  Different teams with the same key are NOT suppressed.\n\nReturns 202 on a new event, 200 on a duplicate.\n\nErrors flow through the central error pipeline (``jsonapi_error``).",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_automations_events",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomEventBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomEventAcceptedResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Fire Custom Event",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/{automation_id}": {
      "get": {
        "description": "Retrieve a single automation by ID.\n\nReturns 404 if the automation does not exist, is soft-deleted, or\nbelongs to a different team/hub.",
        "operationId": "automations.get_automations_get_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Automation",
        "tags": [
          "automations"
        ]
      },
      "patch": {
        "description": "Partial-update a draft automation.\n\nUses ``exclude_unset`` semantics: only fields present in the request\nbody are applied.  Returns 404 if not found.",
        "operationId": "automations.patch_automations_patch_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AutomationUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Automation",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/{automation_id}/activate": {
      "post": {
        "description": "Activate an automation (draft/paused \u2192 active).\n\nRequires a published version.  Returns 409 if the status transition\nis invalid.",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id_activate",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Activate Automation",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/{automation_id}/deactivate": {
      "post": {
        "description": "Deactivate an automation (active \u2192 paused).\n\nPaused automations stop accepting new enrollments but in-flight\nenrollments continue.  Returns 409 if the status is not ``active``.",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id_deactivate",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Deactivate Automation",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/{automation_id}/enrollments": {
      "get": {
        "description": "List enrollment runs for an automation (observability).\n\nSupports ``?filter[status]=stuck`` for filtering stuck enrollments.\nCursor-paginated, ordered by ``entered_at`` descending.\nReturns 404 if the automation does not exist or belongs to a different\nteam/hub.",
        "operationId": "automations.get_automations_get_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id_enrollments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationEnrollmentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Enrollments",
        "tags": [
          "automations"
        ]
      },
      "post": {
        "description": "Manually enroll a contact into an active automation.\n\nRespects the automation's re-entry policy.  Returns 409 when the\nautomation is not active, 404 when the contact is not found in the team.\nReturns 201 with the enrollment resource on success, or 200 (no body)\nwhen the re-entry policy suppresses the enrollment.",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id_enrollments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ManualEnrollBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationEnrollmentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Manual Enroll",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/{automation_id}/publish": {
      "post": {
        "description": "Validate and snapshot the current draft as an immutable version.\n\nRuns full graph validation (cycles, unreachable nodes, condition\ntrees, etc.) before inserting the version.  Returns 422 with\nstructured JSON:API pointers on validation failure.\n\nReturns the new ``AutomationVersion`` resource on success (201).",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id_publish",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationVersionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Publish Automation",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/{automation_id}/test": {
      "post": {
        "description": "Dry-run a contact through the automation's published graph.\n\nExecutes the SAME node-dispatch logic as the real executor, but with\nside-effect adapters STUBBED.  No enrollment is persisted; no email is\nsent; no tag is applied; no webhook fires.\n\nBranch nodes still evaluate real ``is_member`` so routing is realistic.\nWait nodes return the computed delay without sleeping.\n\nReturns a step trace ordered by execution order.",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id_test",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DryRunBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DryRunResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Dry Run Automation",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/automations/{automation_id}/versions": {
      "get": {
        "description": "List published versions for an automation, newest first.",
        "operationId": "automations.get_automations_get_teams_by_team_id_hubs_by_hub_id_automations_by_automation_id_versions",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "automation_id",
            "required": true,
            "schema": {
              "title": "Automation Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AutomationVersionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Automation Versions",
        "tags": [
          "automations"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/contact-attributes": {
      "get": {
        "operationId": "contact_attributes_admin_hub_config.get_contact_attributes_admin_hub_config_get_teams_by_team_id_hubs_by_hub_id_contact_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubConfigListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Hub Configs",
        "tags": [
          "contact-attributes-admin-hub-config"
        ]
      },
      "post": {
        "operationId": "contact_attributes_admin_hub_config.post_contact_attributes_admin_hub_config_post_teams_by_team_id_hubs_by_hub_id_contact_attributes",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubConfigUpsertEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubConfigResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Upsert Hub Config",
        "tags": [
          "contact-attributes-admin-hub-config"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/contact-attributes/{definition_id}": {
      "delete": {
        "operationId": "contact_attributes_admin_hub_config.delete_contact_attributes_admin_hub_config_delete_teams_by_team_id_hubs_by_hub_id_contact_attributes_by_definition_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Hub Config",
        "tags": [
          "contact-attributes-admin-hub-config"
        ]
      },
      "patch": {
        "operationId": "contact_attributes_admin_hub_config.patch_contact_attributes_admin_hub_config_patch_teams_by_team_id_hubs_by_hub_id_contact_attributes_by_definition_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "definition_id",
            "required": true,
            "schema": {
              "title": "Definition Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubConfigPatchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubConfigResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Hub Config",
        "tags": [
          "contact-attributes-admin-hub-config"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/content/": {
      "get": {
        "description": "List root-level (container) nodes for a hub with cursor pagination.",
        "operationId": "content_admin.get_content_admin_get_teams_by_team_id_hubs_by_hub_id_content",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Root Nodes",
        "tags": [
          "content-admin"
        ]
      },
      "post": {
        "description": "Create a new content node in the hub tree.",
        "operationId": "content_admin.post_content_admin_post_teams_by_team_id_hubs_by_hub_id_content",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ContentNodeCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Content Node",
        "tags": [
          "content-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/content/reconcile": {
      "post": {
        "description": "Materialize ``content_nodes`` for a hub's provenance-scoped playlists (D4).\n\nA bodyless POST (or a body with ``attributes`` omitted / ``playlist_ids``\nomitted) derives the playlist set from this hub's OWN\n``HubTemplateApplication`` history \u2014 the common case, and the intended\ndefault usage for both an operator running this after a data issue and\n``mio-cli`` re-running it after its own step sequence. Passing an\nexplicit ``playlist_ids`` list is for the one case provenance cannot\ncover (a hub with no application record at all \u2014 see the plan's \u00a76 open\nquestion); every id in that list must belong to THIS hub.\n\nIdempotent by construction: ``ContentService.ensure_nodes`` hash-first\nresolves every spec (D6), so calling this twice in a row with the SAME\nresolved playlist set adopts everything the first call created rather\nthan creating it again \u2014 zero duplicate rows, zero duplicate INSERT\nattempts on the second call.\n\nReturns 200 with one result per resolved ``NodeSpec``, in the full D7\noutcome vocabulary (created / adopted / adopted_not_member_visible /\nskipped_*) \u2014 nothing is log-only, so a caller can tell exactly what\nhappened without diffing the hub.\n\nError codes\n-----------\n404 ``hub_not_found``          \u2014 ``hub_id`` does not exist, or belongs to\n                                  a different team than ``team_id``\n                                  (enumeration-safe: both cases 404\n                                  identically).\n422 ``no_playlist_provenance`` \u2014 the hub has no ``HubTemplateApplication``\n                                  row carrying any playlist ids, AND no\n                                  ``playlist_ids`` were supplied in the\n                                  request body.\n422 ``playlist_not_in_hub``    \u2014 one or more ids in an explicit\n                                  ``playlist_ids`` list do not resolve to\n                                  a Playlist scoped to THIS hub\n                                  (``meta.invalid_playlist_ids`` lists\n                                  which).\n429                            \u2014 rate limit (60/hr/IP) exceeded.\n\nRAISE, NEVER RETURN: every rejection above is an ``AppException``\nsubclass (``NotFoundError`` / ``ValidationError``,\n``app/infrastructure/exceptions.py``) raised out of\n``HubContentReconcileService.reconcile`` and left to propagate uncaught\n\u2014 never caught here and turned into a hand-rolled ``JSONResponse``. They\nare mapped by the centrally-registered ``app_exception_handler``\n(``app/main.py``), which runs AFTER ``get_db()``'s except-branch has\nalready rolled back anything ``ensure_nodes`` flushed before the\nrejection. A handler that instead caught one of these and RETURNED an\nerror response would return NORMALLY from this route, sending\n``get_db()`` down its commit branch instead \u2014 durably persisting\nwhatever partial work happened before the error. See\n``app/hub_scaffold/reconcile_service.py``'s module docstring for the\nsame contract stated from the service side.",
        "operationId": "hubs_admin.post_hubs_admin_post_teams_by_team_id_hubs_by_hub_id_content_reconcile",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/HubContentReconcileEnvelope"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Envelope"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubContentReconcileResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Reconcile Hub Content",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/content/reorder": {
      "post": {
        "description": "Bulk-reorder content nodes by setting their position values.",
        "operationId": "content_admin.post_content_admin_post_teams_by_team_id_hubs_by_hub_id_content_reorder",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/app__content__schemas__ReorderEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Reorder Content Nodes",
        "tags": [
          "content-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/content/{node_id}": {
      "delete": {
        "description": "Soft-delete a content node. Containers cascade to their children.",
        "operationId": "content_admin.delete_content_admin_delete_teams_by_team_id_hubs_by_hub_id_content_by_node_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Content Node",
        "tags": [
          "content-admin"
        ]
      },
      "get": {
        "description": "Retrieve a content node by UUID, slug, or legacy_hash.",
        "operationId": "content_admin.get_content_admin_get_teams_by_team_id_hubs_by_hub_id_content_by_node_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Content Node",
        "tags": [
          "content-admin"
        ]
      },
      "patch": {
        "description": "Partial update of a content node. Only provided fields are modified.",
        "operationId": "content_admin.patch_content_admin_patch_teams_by_team_id_hubs_by_hub_id_content_by_node_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ContentNodeUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Content Node",
        "tags": [
          "content-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/content/{node_id}/children": {
      "get": {
        "description": "List children of a container node.",
        "operationId": "content_admin.get_content_admin_get_teams_by_team_id_hubs_by_hub_id_content_by_node_id_children",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Children",
        "tags": [
          "content-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/content/{node_id}/restore": {
      "post": {
        "description": "Restore a soft-deleted content node (and its children).",
        "operationId": "content_admin.post_content_admin_post_teams_by_team_id_hubs_by_hub_id_content_by_node_id_restore",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "node_id",
            "required": true,
            "schema": {
              "title": "Node Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentNodeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Restore Content Node",
        "tags": [
          "content-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/media": {
      "get": {
        "description": "List ALL states (draft/scheduled/live) of files published into the hub.",
        "operationId": "media_admin_hub_media.get_media_admin_hub_media_get_teams_by_team_id_hubs_by_hub_id_media",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Hub Media Files",
        "tags": [
          "media-admin-hub-media"
        ]
      },
      "post": {
        "description": "Publish/upsert a FILE into the hub (idempotent on (hub, file)).",
        "operationId": "media_admin_hub_media.post_media_admin_hub_media_post_teams_by_team_id_hubs_by_hub_id_media",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubMediaPublishRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaResponse"
                }
              }
            },
            "description": "Publish row updated (upsert)."
          },
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaResponse"
                }
              }
            },
            "description": "Publish row created."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Publish Hub Media File",
        "tags": [
          "media-admin-hub-media"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/media/{file_id}": {
      "delete": {
        "description": "Unpublish a FILE from the hub (delete the join row).",
        "operationId": "media_admin_hub_media.delete_media_admin_hub_media_delete_teams_by_team_id_hubs_by_hub_id_media_by_file_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "title": "File Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Unpublish Hub Media File",
        "tags": [
          "media-admin-hub-media"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/achievements": {
      "post": {
        "description": "Manually award an achievement to a hub member.\n\n201 when this call created the earn; 200 when it was already live\n(idempotent repeat \u2014 same earn id, no duplicate notification/event).",
        "operationId": "achievements_admin.post_achievements_admin_post_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_achievements",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AchievementGrantEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AchievementEarnAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Grant Achievement",
        "tags": [
          "achievements-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/achievements/{achievement_id}": {
      "delete": {
        "description": "Soft-revoke a member's earned achievement. Idempotent \u2014 revoking an\nalready-revoked (or nonexistent) earn still returns 204.",
        "operationId": "achievements_admin.delete_achievements_admin_delete_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_achievements_by_achievement_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "achievement_id",
            "required": true,
            "schema": {
              "title": "Achievement Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "reason",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Reason"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Revoke Achievement",
        "tags": [
          "achievements-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/members/{contact_id}/achievements/{achievement_id}/restore": {
      "post": {
        "description": "Restore a previously revoked earn \u2014 the repair path for an accidental revoke.",
        "operationId": "achievements_admin.post_achievements_admin_post_teams_by_team_id_hubs_by_hub_id_members_by_contact_id_achievements_by_achievement_id_restore",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "achievement_id",
            "required": true,
            "schema": {
              "title": "Achievement Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AchievementRestoreEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_AchievementEarnAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Restore Achievement",
        "tags": [
          "achievements-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/orders": {
      "get": {
        "description": "List orders for a hub. Supports cursor pagination and filter[status], filter[contact_id].",
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_orders",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          },
          {
            "in": "query",
            "name": "filter[contact_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Contact Id]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List orders for hub",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/orders/{order_id}": {
      "get": {
        "description": "Retrieve a single order. Returns 404 if hub not found or belongs to another team.",
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_orders_by_order_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "order_id",
            "required": true,
            "schema": {
              "title": "Order Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve order",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/": {
      "get": {
        "description": "List all active pages for the hub with cursor pagination.",
        "operationId": "pages_admin.get_pages_admin_get_teams_by_team_id_hubs_by_hub_id_pages",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminPageListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Pages",
        "tags": [
          "pages-admin"
        ]
      },
      "post": {
        "description": "Create a new page for the hub.\n\n`slug` is rejected (422, `page_slug_reserved`) when it collides with a\nbuilt-in mio-hub frontend route. The reserved set covers the full mio-hub\nroute table, so a slug that previously succeeded (e.g. \"members\", \"login\")\nnow 422s if it is in that set.",
        "operationId": "pages_admin.post_pages_admin_post_teams_by_team_id_hubs_by_hub_id_pages",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PageCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminPageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-error-codes": [
              "page_slug_reserved",
              "content_page_slug_type_mismatch"
            ]
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Page",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/content": {
      "get": {
        "description": "Retrieve the designated content page (type=\"content\") for the hub.\n\nMirrors admin_get_homepage; verifies hub ownership via require_team_owner +\nthe team_id passed to the service resolver.",
        "operationId": "pages_admin.get_pages_admin_get_teams_by_team_id_hubs_by_hub_id_pages_content",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminPageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Content Page",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/from-template": {
      "post": {
        "operationId": "pages_admin.post_pages_admin_post_teams_by_team_id_hubs_by_hub_id_pages_from_template",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PageScaffoldEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PageScaffoldResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Install one page template at a chosen slug",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/home": {
      "get": {
        "description": "Retrieve the homepage for the hub.",
        "operationId": "pages_admin.get_pages_admin_get_teams_by_team_id_hubs_by_hub_id_pages_home",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminPageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Homepage",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/scaffold-from-template": {
      "post": {
        "description": "Applies a **hubTemplate**'s complete `pages[]` manifest to this hub in one transaction \u2014 every page the template declares (homepage included), created, tree-written and published together. Takes a `hub_template_id` (e.g. `community`); the number of pages is whatever the manifest declares. Idempotent via the required `Idempotency-Key`: re-runs converge \u2014 untouched template pages no-op, interrupted ones resume, human-edited ones 409 rather than being overwritten. Attribute returned pages by `slug` (unique per manifest), never by `role` (not unique). Not to be confused with the sibling `POST .../pages/from-template`, which installs exactly ONE pageTemplate at a caller-chosen slug.",
        "operationId": "pages_admin.post_pages_admin_post_teams_by_team_id_hubs_by_hub_id_pages_scaffold_from_template",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateScaffoldEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateScaffoldResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Apply a hub template's full page set",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/{identifier}": {
      "delete": {
        "description": "Soft-delete a page and cascade to its sections.\n\nDeleting the page that is the hub's sole effective homepage is rejected\n(409, `homepage_unset_would_orphan_hub`) \u2014 either the typed \"custom\"\ndescriptor, or the legacy is_homepage-flag fallback on a hub with no\ndescriptor set. This used to succeed and silently leave the hub with no\nhomepage; set a different page as home first, then delete this one.",
        "operationId": "pages_admin.delete_pages_admin_delete_teams_by_team_id_hubs_by_hub_id_pages_by_identifier",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-error-codes": [
              "homepage_unset_would_orphan_hub"
            ]
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Page",
        "tags": [
          "pages-admin"
        ]
      },
      "get": {
        "description": "Retrieve a page by UUID or slug.\n\nP7 \u2014 ``?resolve=false``:\n  Returns the RAW (un-pruned) ``tree_published`` as a ``page-trees``\n  JSON:API resource. ADMIN ONLY \u2014 callers must be team owners.\n  Useful for the editor to read the full published tree without pruning.",
        "operationId": "pages_admin.get_pages_admin_get_teams_by_team_id_hubs_by_hub_id_pages_by_identifier",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "title": "Identifier",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resolve",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Resolve"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AdminPageResponse"
                    },
                    {
                      "$ref": "#/components/schemas/PageTreeResponse"
                    }
                  ]
                }
              }
            },
            "description": "Page metadata with draft_version OCC token (default). When ?resolve=false is supplied, returns a page_trees resource (PageTreeResponse) containing the raw tree_published instead.",
            "headers": {
              "ETag": {
                "description": "Current draft_version (quoted per RFC 9110). Echo as If-Match on PUT .../tree or POST .../publish to complete the OCC chain without a second read.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Page",
        "tags": [
          "pages-admin"
        ]
      },
      "patch": {
        "description": "Partial update of a page. Only provided fields are modified.\n\nSetting `is_homepage: false` is rejected (409,\n`homepage_unset_would_orphan_hub`) when this page is the hub's sole\neffective homepage \u2014 either the typed \"custom\" descriptor, or the legacy\nis_homepage-flag fallback on a hub with no descriptor set. This used to\nsucceed and silently leave the hub with no homepage.\n\nSetting `slug` to a reserved value is rejected (422,\n`page_slug_reserved`), using the same reserved set enforced on create.",
        "operationId": "pages_admin.patch_pages_admin_patch_teams_by_team_id_hubs_by_hub_id_pages_by_identifier",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PageUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminPageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-error-codes": [
              "homepage_unset_would_orphan_hub",
              "page_slug_conflict",
              "content_page_duplicate",
              "homepage_system_pointer_active"
            ]
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Error response; see `errors[0].code` where present.",
            "x-error-codes": [
              "page_slug_reserved",
              "page_slug_invalid",
              "auth_page_type_change",
              "content_page_slug_type_mismatch"
            ]
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Page",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/{page_id}/preview-token": {
      "post": {
        "operationId": "pages_admin.post_pages_admin_post_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_preview_token",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewTokenResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Preview Token",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/{page_id}/publish": {
      "post": {
        "description": "Atomically publish a page's draft tree with OCC via If-Match.\n\nThe caller MUST supply the ``If-Match`` request header containing the\n``draft_version`` value it observed when reading the draft.  If the\nheader is absent the request is rejected with 428 Precondition Required.\nIf the provided version no longer matches the page (a concurrent edit\noccurred) the request is rejected with 409 Conflict so the caller can\nre-read the draft and retry.\n\nOn success, the page's published sections and gate index are atomically\nwritten and ``published_revision`` is incremented (R5 revision-flip-last).\n\nError codes\n-----------\n428  ``precondition_required``    \u2014 ``If-Match`` header absent.\n400  ``invalid_if_match``         \u2014 ``If-Match`` value is not an integer.\n404  ``page_not_found``           \u2014 page does not exist.\n409  ``stale_draft``              \u2014 ``If-Match`` version does not match.\n422  ``compiler_invariant``       \u2014 a non-public node is under a NULL gate (R3).\n422  ``unknown_access_rule``      \u2014 a gated node references a missing rule.",
        "operationId": "pages_admin.post_pages_admin_post_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_publish",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Publish Page",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/{page_id}/sections": {
      "get": {
        "operationId": "pages_admin.get_pages_admin_get_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_sections",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SectionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Sections",
        "tags": [
          "pages-admin"
        ]
      },
      "patch": {
        "description": "Bulk-reorder sections for a page by providing a list of {id, position} pairs.",
        "operationId": "pages_admin.patch_pages_admin_patch_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_sections",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SectionReorderEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SectionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Reorder Sections",
        "tags": [
          "pages-admin"
        ]
      },
      "post": {
        "description": "Add a section to an existing page.",
        "operationId": "pages_admin.post_pages_admin_post_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_sections",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SectionCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SectionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Add Section",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/{page_id}/sections/{section_id}": {
      "delete": {
        "description": "Soft-delete a section.",
        "operationId": "pages_admin.delete_pages_admin_delete_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_sections_by_section_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "section_id",
            "required": true,
            "schema": {
              "title": "Section Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Section",
        "tags": [
          "pages-admin"
        ]
      },
      "patch": {
        "description": "Partial update of a section. type, model_type, model_id are immutable.",
        "operationId": "pages_admin.patch_pages_admin_patch_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_sections_by_section_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "section_id",
            "required": true,
            "schema": {
              "title": "Section Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SectionUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SectionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Section",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/pages/{page_id}/tree": {
      "get": {
        "operationId": "pages_admin.get_pages_admin_get_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_tree",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "audience",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Audience"
            }
          },
          {
            "in": "query",
            "name": "resolve",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Resolve"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorDraftTreeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Author Draft Tree",
        "tags": [
          "pages-admin"
        ]
      },
      "put": {
        "operationId": "pages_admin.put_pages_admin_put_teams_by_team_id_hubs_by_hub_id_pages_by_page_id_tree",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "page_id",
            "required": true,
            "schema": {
              "title": "Page Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DraftTreeWriteEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftTreeResponse"
                }
              }
            },
            "description": "Successful Response",
            "headers": {
              "ETag": {
                "description": "New draft_version (quoted). Send back as If-Match on the next tree write or publish.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Put Page Tree",
        "tags": [
          "pages-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/payment-webhooks": {
      "get": {
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_payment_webhooks",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List webhook events for hub",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/payment-webhooks/{event_id}": {
      "get": {
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_payment_webhooks_by_event_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEventResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve webhook event",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/payment-webhooks/{event_id}/replay": {
      "post": {
        "operationId": "checkout_admin.post_checkout_admin_post_teams_by_team_id_hubs_by_hub_id_payment_webhooks_by_event_id_replay",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event_id",
            "required": true,
            "schema": {
              "title": "Event Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Replay a webhook event",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/payments": {
      "get": {
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_payments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[contact_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Contact Id]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List payments for hub",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/payments/{payment_id}": {
      "get": {
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_payments_by_payment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "payment_id",
            "required": true,
            "schema": {
              "title": "Payment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve payment",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/payments/{payment_id}/refund": {
      "post": {
        "operationId": "checkout_admin.post_checkout_admin_post_teams_by_team_id_hubs_by_hub_id_payments_by_payment_id_refund",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "payment_id",
            "required": true,
            "schema": {
              "title": "Payment Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/RefundRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Refund a payment",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/playlists": {
      "get": {
        "description": "List ALL states of playlists published into the hub.",
        "operationId": "media_admin_hub_media.get_media_admin_hub_media_get_teams_by_team_id_hubs_by_hub_id_playlists",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Hub Media Playlists",
        "tags": [
          "media-admin-hub-media"
        ]
      },
      "post": {
        "description": "Publish/upsert a PLAYLIST into the hub (idempotent on (hub, playlist)).",
        "operationId": "media_admin_hub_media.post_media_admin_hub_media_post_teams_by_team_id_hubs_by_hub_id_playlists",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubMediaPublishRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaResponse"
                }
              }
            },
            "description": "Publish row updated (upsert)."
          },
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubMediaResponse"
                }
              }
            },
            "description": "Publish row created."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Publish Hub Media Playlist",
        "tags": [
          "media-admin-hub-media"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/playlists/{playlist_id}": {
      "delete": {
        "description": "Unpublish a PLAYLIST from the hub.",
        "operationId": "media_admin_hub_media.delete_media_admin_hub_media_delete_teams_by_team_id_hubs_by_hub_id_playlists_by_playlist_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "playlist_id",
            "required": true,
            "schema": {
              "title": "Playlist Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Unpublish Hub Media Playlist",
        "tags": [
          "media-admin-hub-media"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/prices/": {
      "get": {
        "description": "List all hub_price_display rows for a hub, ordered by position.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_hubs_by_hub_id_prices",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubPriceDisplayListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Hub Price Displays",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/prices/{display_id}": {
      "patch": {
        "description": "Update visibility and/or position of a single hub_price_display row.",
        "operationId": "products_admin.patch_products_admin_patch_teams_by_team_id_hubs_by_hub_id_prices_by_display_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "display_id",
            "required": true,
            "schema": {
              "title": "Display Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubPriceDisplayUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubPriceDisplayResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Hub Price Display",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/products/": {
      "get": {
        "description": "List all hub_product_display rows for a hub, ordered by position.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_hubs_by_hub_id_products",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubProductDisplayListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Hub Products",
        "tags": [
          "products-admin"
        ]
      },
      "post": {
        "description": "Attach a product to a hub, creating hub_product_display plus default\nhub_price_display rows for every active price on the product.",
        "operationId": "products_admin.post_products_admin_post_teams_by_team_id_hubs_by_hub_id_products",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubProductDisplayCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubProductDisplayResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Attach Product To Hub",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/products/{display_id}": {
      "delete": {
        "description": "Detach a product from a hub (hard-deletes hub_product_display + hub_price_display).",
        "operationId": "products_admin.delete_products_admin_delete_teams_by_team_id_hubs_by_hub_id_products_by_display_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "display_id",
            "required": true,
            "schema": {
              "title": "Display Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Detach Product From Hub",
        "tags": [
          "products-admin"
        ]
      },
      "patch": {
        "description": "Toggle visibility, position, or free-tier flag on a hub_product_display row.",
        "operationId": "products_admin.patch_products_admin_patch_teams_by_team_id_hubs_by_hub_id_products_by_display_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "display_id",
            "required": true,
            "schema": {
              "title": "Display Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubProductDisplayUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubProductDisplayResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Hub Product Display",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/subscriptions": {
      "get": {
        "description": "List subscriptions for a hub.",
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_subscriptions",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "filter[status]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Status]"
            }
          },
          {
            "in": "query",
            "name": "filter[contact_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Contact Id]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List subscriptions for hub",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/subscriptions/{sub_id}": {
      "get": {
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_hubs_by_hub_id_subscriptions_by_sub_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sub_id",
            "required": true,
            "schema": {
              "title": "Sub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve subscription",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/subscriptions/{sub_id}/cancel": {
      "post": {
        "operationId": "checkout_admin.post_checkout_admin_post_teams_by_team_id_hubs_by_hub_id_subscriptions_by_sub_id_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sub_id",
            "required": true,
            "schema": {
              "title": "Sub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Cancel subscription (Phase A: at-period-end only)",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/webhook-endpoints": {
      "get": {
        "description": "List webhook endpoints for a hub (cursor-paginated).",
        "operationId": "automations.get_automations_get_teams_by_team_id_hubs_by_hub_id_webhook_endpoints",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Webhook Endpoints",
        "tags": [
          "automations",
          "webhook-endpoints"
        ]
      },
      "post": {
        "description": "Create a new outbound webhook endpoint.\n\n``target_url`` is validated against the SSRF guard on save.  Private,\nloopback, link-local, multicast, and cloud-metadata IPs are rejected\n(422).\n\n``signing_secret`` is optional.  When absent, a cryptographically random\n32-byte hex secret is generated server-side.  The secret is encrypted at\nrest and is NEVER returned in API responses (write-only).\n\nReturns 201 with the new ``webhook_endpoints`` resource (without the\nsigning secret).",
        "operationId": "automations.post_automations_post_teams_by_team_id_hubs_by_hub_id_webhook_endpoints",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointCreateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Webhook Endpoint",
        "tags": [
          "automations",
          "webhook-endpoints"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{hub_id}/webhook-endpoints/{endpoint_id}": {
      "delete": {
        "operationId": "automations.delete_automations_delete_teams_by_team_id_hubs_by_hub_id_webhook_endpoints_by_endpoint_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Status conflict"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Graph validation error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Webhook Endpoint",
        "tags": [
          "automations",
          "webhook-endpoints"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}": {
      "delete": {
        "description": "Soft-delete a hub and cascade to child content_nodes, pages, sections.",
        "operationId": "hubs_admin.delete_hubs_admin_delete_teams_by_team_id_hubs_by_identifier",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Hub",
        "tags": [
          "hubs-admin"
        ]
      },
      "get": {
        "description": "Retrieve a hub by UUID, slug, or legacy_hash.",
        "operationId": "hubs_admin.get_hubs_admin_get_teams_by_team_id_hubs_by_identifier",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubResponse"
                }
              }
            },
            "description": "Successful Response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Hub",
        "tags": [
          "hubs-admin"
        ]
      },
      "patch": {
        "operationId": "hubs_admin.patch_hubs_admin_patch_teams_by_team_id_hubs_by_identifier",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "in": "header",
            "name": "If-Unmodified-Since",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Unmodified-Since"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubResponse"
                }
              }
            },
            "description": "Successful Response",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "invalid_if_match \u2014 an If-Match candidate is a weak validator (W/\"...\"). invalid_if_unmodified_since \u2014 If-Unmodified-Since is not a parseable RFC 9110 HTTP-date."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "stale_hub \u2014 If-Match was supplied and no candidate matches the hub's current ETag. The ETag is an OPAQUE comparison token, NOT the updated_at value itself (round-7 blind-review finding: this description previously said 'updated_at', which would tell a client to send a timestamp as If-Match \u2014 that never matches the opaque token and would 409 forever). Send back the exact ETag header value from a prior GET/PATCH. resource_modified \u2014 If-Unmodified-Since was supplied (no If-Match) and the hub was modified after the provided date. Also hub_slug_conflict / homepage_discussions_disabled for the pre-existing, unrelated conflict cases this route already returned."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Hub",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}/custom-domains": {
      "get": {
        "description": "List a hub's custom-domain rows: live rows plus recently-failed ones.",
        "operationId": "hub_custom_domains.get_hub_custom_domains_get_teams_by_team_id_hubs_by_identifier_custom_domains",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_HubCustomDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Custom Domains",
        "tags": [
          "hub-custom-domains"
        ]
      },
      "post": {
        "operationId": "hub_custom_domains.post_hub_custom_domains_post_teams_by_team_id_hubs_by_identifier_custom_domains",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubCustomDomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubCustomDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Register Custom Domain",
        "tags": [
          "hub-custom-domains"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}/custom-domains/{domain_id}": {
      "delete": {
        "operationId": "hub_custom_domains.delete_hub_custom_domains_delete_teams_by_team_id_hubs_by_identifier_custom_domains_by_domain_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Domain Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubCustomDomainAttributes_"
                }
              }
            },
            "description": "Accepted"
          },
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Custom Domain",
        "tags": [
          "hub-custom-domains"
        ]
      },
      "get": {
        "operationId": "hub_custom_domains.get_hub_custom_domains_get_teams_by_team_id_hubs_by_identifier_custom_domains_by_domain_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Domain Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubCustomDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve Custom Domain",
        "tags": [
          "hub-custom-domains"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}/custom-domains/{domain_id}/verify": {
      "post": {
        "operationId": "hub_custom_domains.post_hub_custom_domains_post_teams_by_team_id_hubs_by_identifier_custom_domains_by_domain_id_verify",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain_id",
            "required": true,
            "schema": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "title": "Domain Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubCustomDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubCustomDomainAttributes_"
                }
              }
            },
            "description": "Accepted"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Verify Custom Domain",
        "tags": [
          "hub-custom-domains"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}/email-settings": {
      "get": {
        "description": "Retrieve the email sender identity (from_name, reply_to) for a hub.",
        "operationId": "hubs_admin.get_hubs_admin_get_teams_by_team_id_hubs_by_identifier_email_settings",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubEmailSenderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get per-hub email sender identity",
        "tags": [
          "hubs-admin"
        ]
      },
      "patch": {
        "description": "Update the email sender identity (from_name, reply_to) for a hub.\n\nPartial update (JSON:API PATCH): only the fields explicitly present in the\nrequest body are touched. Omitting a field leaves it unchanged; passing\nnull for a field explicitly clears it. Merges into settings.email; other\nsettings keys are preserved.",
        "operationId": "hubs_admin.patch_hubs_admin_patch_teams_by_team_id_hubs_by_identifier_email_settings",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubEmailSenderUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubEmailSenderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update per-hub email sender identity",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}/policies": {
      "get": {
        "operationId": "hubs_admin.get_hubs_admin_get_teams_by_team_id_hubs_by_identifier_policies",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Read a hub's TOS and privacy policy configuration",
        "tags": [
          "hubs-admin"
        ]
      },
      "patch": {
        "description": "Update a hub policy (Markdown). require_acceptance=true (TOS only) re-prompts members.",
        "operationId": "hubs_admin.patch_hubs_admin_patch_teams_by_team_id_hubs_by_identifier_policies",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PolicyUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update a hub TOS or privacy policy document",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}/policies/gate": {
      "patch": {
        "operationId": "hubs_admin.patch_hubs_admin_patch_teams_by_team_id_hubs_by_identifier_policies_gate",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubPolicyGateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HubPolicyGateResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Toggle the hub policy enforcement gate (settings.policies.enabled)",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/hubs/{identifier}/redirect-origins": {
      "get": {
        "description": "Return the current magic-link redirect-origin allowlist for a hub.\n\nOwner-only.  Returns the stored list (may be empty).  No portal/member\nequivalent \u2014 the allowlist is security-sensitive config.",
        "operationId": "hubs_admin.get_hubs_admin_get_teams_by_team_id_hubs_by_identifier_redirect_origins",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/RedirectOriginsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Read the magic-link redirect-origin allowlist for a hub",
        "tags": [
          "hubs-admin"
        ]
      },
      "put": {
        "description": "Full-replace the magic-link redirect-origin allowlist for a hub.\n\nOwner-only.  Validates every entry at write time (scheme, host, IPv6\nbrackets, no wildcards, etc.).  Returns a JSON:API 422 error ARRAY with\nper-index source pointers on invalid input \u2014 all entries are validated\nbefore any write (no partial persistence).  An empty list clears the\nallowlist (all magic-link redirects will be rejected at runtime).",
        "operationId": "hubs_admin.put_hubs_admin_put_teams_by_team_id_hubs_by_identifier_redirect_origins",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identifier",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "title": "Identifier",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/RedirectOriginsUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/RedirectOriginsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Full-replace the magic-link redirect-origin allowlist for a hub",
        "tags": [
          "hubs-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/media/{media_id}/transcript": {
      "get": {
        "operationId": "media_transcript.get_media_transcript_get_teams_by_team_id_media_by_media_id_transcript",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Transcript",
        "tags": [
          "media-transcript"
        ]
      },
      "patch": {
        "operationId": "media_transcript.patch_media_transcript_patch_teams_by_team_id_media_by_media_id_transcript",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/EditTranscriptBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Edit Transcript Route",
        "tags": [
          "media-transcript"
        ]
      }
    },
    "/api/v1/teams/{team_id}/media/{media_id}/transcript.vtt": {
      "get": {
        "operationId": "media_transcript.get_media_transcript_get_teams_by_team_id_media_by_media_id_transcript_vtt",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Transcript Vtt",
        "tags": [
          "media-transcript"
        ]
      }
    },
    "/api/v1/teams/{team_id}/media/{media_id}/transcript/content": {
      "get": {
        "operationId": "media_transcript.get_media_transcript_get_teams_by_team_id_media_by_media_id_transcript_content",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Transcript Content",
        "tags": [
          "media-transcript"
        ]
      }
    },
    "/api/v1/teams/{team_id}/media/{media_id}/transcript/revert": {
      "post": {
        "operationId": "media_transcript.post_media_transcript_post_teams_by_team_id_media_by_media_id_transcript_revert",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/RevertTranscriptBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Revert Transcript Route",
        "tags": [
          "media-transcript"
        ]
      }
    },
    "/api/v1/teams/{team_id}/media/{media_id}/transcript/versions": {
      "get": {
        "operationId": "media_transcript.get_media_transcript_get_teams_by_team_id_media_by_media_id_transcript_versions",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Transcript Versions",
        "tags": [
          "media-transcript"
        ]
      }
    },
    "/api/v1/teams/{team_id}/media/{media_id}/transcript/versions/{version}": {
      "get": {
        "operationId": "media_transcript.get_media_transcript_get_teams_by_team_id_media_by_media_id_transcript_versions_by_version",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "media_id",
            "required": true,
            "schema": {
              "title": "Media Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "version",
            "required": true,
            "schema": {
              "title": "Version",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Transcript Version",
        "tags": [
          "media-transcript"
        ]
      }
    },
    "/api/v1/teams/{team_id}/members": {
      "get": {
        "description": "List all members of a team.",
        "operationId": "teams.get_teams_get_teams_by_team_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_TeamMemberAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Members",
        "tags": [
          "teams"
        ]
      },
      "post": {
        "description": "Add a member to a team (owner only).",
        "operationId": "teams.post_teams_post_teams_by_team_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TeamMemberCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_TeamMemberAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add Member",
        "tags": [
          "teams"
        ]
      }
    },
    "/api/v1/teams/{team_id}/members/{user_id}": {
      "delete": {
        "description": "Remove a member from a team (owner only).",
        "operationId": "teams.delete_teams_delete_teams_by_team_id_members_by_user_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "title": "User Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Remove Member",
        "tags": [
          "teams"
        ]
      }
    },
    "/api/v1/teams/{team_id}/oauth-clients": {
      "get": {
        "description": "List all OAuth clients for the team (paginated, no secrets).\n\nManaging OAuth clients requires a real user (JWT) session.",
        "operationId": "oauth_clients.get_oauth_clients_get_teams_by_team_id_oauth_clients",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_OAuthClientAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Oauth Clients",
        "tags": [
          "oauth-clients"
        ]
      },
      "post": {
        "description": "Register a new OAuth client for a team hub.\n\nReturns the plaintext `client_secret` in `data.attributes.client_secret`\nfor confidential clients \u2014 this is the ONLY time it is returned; store it\nimmediately. Public (PKCE-only) clients receive `client_secret: null`.\n\nManaging OAuth clients requires a real user (JWT) session \u2014 an API key\ncannot register OAuth clients (potential persistence attack).",
        "operationId": "oauth_clients.post_oauth_clients_post_teams_by_team_id_oauth_clients",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthClientCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_OAuthClientCreateAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Oauth Client",
        "tags": [
          "oauth-clients"
        ]
      }
    },
    "/api/v1/teams/{team_id}/oauth-clients/{client_pk}": {
      "delete": {
        "description": "Delete an OAuth client and all associated consent grants. Returns 204.\n\nManaging OAuth clients requires a real user (JWT) session.",
        "operationId": "oauth_clients.delete_oauth_clients_delete_teams_by_team_id_oauth_clients_by_client_pk",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "client_pk",
            "required": true,
            "schema": {
              "title": "Client Pk",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Oauth Client",
        "tags": [
          "oauth-clients"
        ]
      },
      "get": {
        "description": "Retrieve a single OAuth client. No secret returned.\n\nManaging OAuth clients requires a real user (JWT) session.",
        "operationId": "oauth_clients.get_oauth_clients_get_teams_by_team_id_oauth_clients_by_client_pk",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "client_pk",
            "required": true,
            "schema": {
              "title": "Client Pk",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_OAuthClientAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve Oauth Client",
        "tags": [
          "oauth-clients"
        ]
      }
    },
    "/api/v1/teams/{team_id}/oauth-clients/{client_pk}/redirect-uris": {
      "post": {
        "description": "Add a redirect URI to an existing OAuth client. Returns 201.\n\nThe full URI is validated (https required, no fragment, no userinfo).\nManaging OAuth clients requires a real user (JWT) session.",
        "operationId": "oauth_clients.post_oauth_clients_post_teams_by_team_id_oauth_clients_by_client_pk_redirect_uris",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "client_pk",
            "required": true,
            "schema": {
              "title": "Client Pk",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthRedirectUriCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_OAuthRedirectUriAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Add Redirect Uri",
        "tags": [
          "oauth-clients"
        ]
      }
    },
    "/api/v1/teams/{team_id}/oauth-clients/{client_pk}/redirect-uris/{uri_id}": {
      "delete": {
        "description": "Delete a redirect URI by its ID. Returns 204.\n\nManaging OAuth clients requires a real user (JWT) session.",
        "operationId": "oauth_clients.delete_oauth_clients_delete_teams_by_team_id_oauth_clients_by_client_pk_redirect_uris_by_uri_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "client_pk",
            "required": true,
            "schema": {
              "title": "Client Pk",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "uri_id",
            "required": true,
            "schema": {
              "title": "Uri Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Redirect Uri",
        "tags": [
          "oauth-clients"
        ]
      }
    },
    "/api/v1/teams/{team_id}/page-section-attachments": {
      "post": {
        "description": "Create a page-section attachment. caller_module='pages' is hard-coded server-side.",
        "operationId": "media_admin_attachments.post_media_admin_attachments_post_teams_by_team_id_page_section_attachments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Page Section Attachment",
        "tags": [
          "media-admin-attachments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/payment-accounts": {
      "get": {
        "description": "List all payment accounts belonging to this team.",
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_payment_accounts",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List payment accounts for team",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/payment-accounts/onboarding-link": {
      "post": {
        "operationId": "checkout_admin.post_checkout_admin_post_teams_by_team_id_payment_accounts_onboarding_link",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardingLinkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Stripe Connect onboarding link",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/payment-accounts/onboarding-return": {
      "get": {
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_payment_accounts_onboarding_return",
        "parameters": [
          {
            "in": "query",
            "name": "code",
            "required": true,
            "schema": {
              "title": "Code",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": true,
            "schema": {
              "title": "State",
              "type": "string"
            }
          }
        ],
        "responses": {
          "307": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "summary": "Handle Stripe Connect OAuth return callback",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/payment-accounts/{account_id}": {
      "get": {
        "description": "Retrieve a single payment account. Returns 403 for foreign-team accounts.",
        "operationId": "checkout_admin.get_checkout_admin_get_teams_by_team_id_payment_accounts_by_account_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "title": "Account Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve payment account",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/playlist-cover-attachments": {
      "post": {
        "operationId": "media_admin_attachments.post_media_admin_attachments_post_teams_by_team_id_playlist_cover_attachments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Playlist Cover Attachment",
        "tags": [
          "media-admin-attachments"
        ]
      }
    },
    "/api/v1/teams/{team_id}/playlists": {
      "get": {
        "description": "List non-deleted playlists for a team, cursor-paginated.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_playlists",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaylistListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Playlists",
        "tags": [
          "media-admin"
        ]
      },
      "post": {
        "description": "Create a new playlist. Emits PlaylistCreated.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_playlists",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PlaylistCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaylistResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Playlist",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/playlists/{id}": {
      "delete": {
        "description": "Soft-delete a playlist. Emits PlaylistDeleted.",
        "operationId": "media_admin.delete_media_admin_delete_teams_by_team_id_playlists_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Playlist",
        "tags": [
          "media-admin"
        ]
      },
      "get": {
        "description": "Fetch a single non-deleted playlist.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_playlists_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaylistResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Show Playlist",
        "tags": [
          "media-admin"
        ]
      },
      "patch": {
        "description": "Partially update a playlist's metadata. Emits PlaylistUpdated when fields change.",
        "operationId": "media_admin.patch_media_admin_patch_teams_by_team_id_playlists_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PlaylistUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaylistResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Playlist",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/playlists/{id}/items": {
      "get": {
        "description": "List a playlist's items (admin), cursor-paginated by (position, id).\n\nPass ?include=files to sideload related files into top-level `included`.\nUnlike the public /playlist/{id}/files route, this admin route applies NO\nviewer-visibility gating: every item row for the team-scoped playlist is\nreturned. Soft-deleted/missing related files are omitted from `included`,\nbut their item still appears in `data`.",
        "operationId": "media_admin.get_media_admin_get_teams_by_team_id_playlists_by_id_items",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Include"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaylistItemListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Playlist Items",
        "tags": [
          "media-admin"
        ]
      },
      "post": {
        "description": "Add a file to a playlist at a given position. Emits PlaylistItemAdded.",
        "operationId": "media_admin.post_media_admin_post_teams_by_team_id_playlists_by_id_items",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PlaylistItemAttachRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Attach Playlist Item",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/playlists/{id}/items/{item_id}": {
      "delete": {
        "description": "Remove a file from a playlist (hard delete). Emits PlaylistItemRemoved.",
        "operationId": "media_admin.delete_media_admin_delete_teams_by_team_id_playlists_by_id_items_by_item_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Playlist Item",
        "tags": [
          "media-admin"
        ]
      },
      "patch": {
        "description": "Change the position of a playlist item. Emits PlaylistUpdated.\n\nIf `position` is omitted, returns the current item state unchanged (no event emitted).",
        "operationId": "media_admin.patch_media_admin_patch_teams_by_team_id_playlists_by_id_items_by_item_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "title": "Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PlaylistItemUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Playlist Item",
        "tags": [
          "media-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/products/": {
      "get": {
        "description": "Cursor-paginated list of products for the team.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_products",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Products",
        "tags": [
          "products-admin"
        ]
      },
      "post": {
        "description": "Create a new product for the team.",
        "operationId": "products_admin.post_products_admin_post_teams_by_team_id_products",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Product",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/products/adopt-from-stripe": {
      "post": {
        "operationId": "checkout_admin.post_checkout_admin_post_teams_by_team_id_products_adopt_from_stripe",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/AdoptProductRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Adopt an existing Stripe product into MIO management",
        "tags": [
          "checkout-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/products/{product_id}": {
      "delete": {
        "description": "Soft-delete a product with full cascade (see ProductService.delete_product).",
        "operationId": "products_admin.delete_products_admin_delete_teams_by_team_id_products_by_product_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Product",
        "tags": [
          "products-admin"
        ]
      },
      "get": {
        "description": "Fetch a single product by id.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_products_by_product_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Product",
        "tags": [
          "products-admin"
        ]
      },
      "patch": {
        "description": "Partially update a product. Only supplied fields are changed.",
        "operationId": "products_admin.patch_products_admin_patch_teams_by_team_id_products_by_product_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Product",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/products/{product_id}/deliverables/": {
      "get": {
        "description": "List all deliverables attached to a product.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_products_by_product_id_deliverables",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliverableListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Deliverables",
        "tags": [
          "products-admin"
        ]
      },
      "post": {
        "description": "Attach a deliverable to a product.",
        "operationId": "products_admin.post_products_admin_post_teams_by_team_id_products_by_product_id_deliverables",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DeliverableCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliverableResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Deliverable",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/products/{product_id}/deliverables/{deliverable_id}": {
      "delete": {
        "description": "Remove a deliverable from a product (hard-delete).",
        "operationId": "products_admin.delete_products_admin_delete_teams_by_team_id_products_by_product_id_deliverables_by_deliverable_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "deliverable_id",
            "required": true,
            "schema": {
              "title": "Deliverable Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Deliverable",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/products/{product_id}/prices/": {
      "get": {
        "description": "List all prices for a product (not paginated \u2014 small per-product set).",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_products_by_product_id_prices",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin List Prices",
        "tags": [
          "products-admin"
        ]
      },
      "post": {
        "description": "Create a new price on a product.",
        "operationId": "products_admin.post_products_admin_post_teams_by_team_id_products_by_product_id_prices",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Create Price",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/products/{product_id}/prices/{price_id}": {
      "delete": {
        "description": "Soft-delete a price.",
        "operationId": "products_admin.delete_products_admin_delete_teams_by_team_id_products_by_product_id_prices_by_price_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "price_id",
            "required": true,
            "schema": {
              "title": "Price Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Delete Price",
        "tags": [
          "products-admin"
        ]
      },
      "get": {
        "description": "Fetch a single price by id.",
        "operationId": "products_admin.get_products_admin_get_teams_by_team_id_products_by_product_id_prices_by_price_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "price_id",
            "required": true,
            "schema": {
              "title": "Price Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Get Price",
        "tags": [
          "products-admin"
        ]
      },
      "patch": {
        "description": "Update non-billing price fields (name, description, is_active, metadata).",
        "operationId": "products_admin.patch_products_admin_patch_teams_by_team_id_products_by_product_id_prices_by_price_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "price_id",
            "required": true,
            "schema": {
              "title": "Price Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Authentication required."
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden \u2014 caller is not the team owner."
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found."
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict \u2014 duplicate or already-attached resource."
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported Media Type \u2014 write routes require `Content-Type: application/vnd.api+json`."
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error or invalid query parameter."
          },
          "429": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Too many requests \u2014 rate limit exceeded."
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Update Price",
        "tags": [
          "products-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/search/media": {
      "get": {
        "description": "Hybrid (RRF) search over a team's media transcripts. Team-admin scope.",
        "operationId": "media_search.get_media_search_get_teams_by_team_id_search_media",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "description": "Search query string.",
            "in": "query",
            "name": "q",
            "required": true,
            "schema": {
              "description": "Search query string.",
              "minLength": 1,
              "title": "Q",
              "type": "string"
            }
          },
          {
            "description": "Optional hub filter.",
            "in": "query",
            "name": "hub_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional hub filter.",
              "title": "Hub Id"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaSearchListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Admin Search Media",
        "tags": [
          "media-search"
        ]
      }
    },
    "/api/v1/teams/{team_id}/segments": {
      "get": {
        "description": "Cursor-paginated list of segments. ``?only_invalid=true`` filters\nto segments whose ``validation_error`` column is populated \u2014 the\nadmin \"broken segments\" tail.",
        "operationId": "segments_admin.get_segments_admin_get_teams_by_team_id_segments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "only_invalid",
            "required": false,
            "schema": {
              "default": false,
              "title": "Only Invalid",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SegmentListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Segments",
        "tags": [
          "segments-admin"
        ]
      },
      "post": {
        "description": "Create a new segment for ``team_id``.\n\nCompiles the submitted condition tree (slug \u2192 FK ID, display\ndecoration, cross-team validation) before persisting. Slug\ncollisions are rejected with 409; compile failures with 422.",
        "operationId": "segments_admin.post_segments_admin_post_teams_by_team_id_segments",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SegmentCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SegmentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Segment",
        "tags": [
          "segments-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/segments/search": {
      "post": {
        "description": "Preview the members of an un-persisted condition tree.\n\nCompiles the tree through the same pipeline used on save (slug \u2192\nFK ID, display decoration, cross-team validation) but never writes\na ``segments`` row. 422 on compile failure; otherwise returns a\npage of team_contact references.",
        "operationId": "segments_admin.post_segments_admin_post_teams_by_team_id_segments_search",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SegmentSearchEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamContactRefListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Contacts Matching",
        "tags": [
          "segments-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/segments/{segment_id}": {
      "delete": {
        "description": "Soft-delete a segment. The slug becomes reusable (partial unique\nindex filters soft-deleted rows).\n\nBlocked with 409 if access rules reference this segment unless\n``?force=true`` is passed. Design \u00a78.1 symmetric integrity guard.",
        "operationId": "segments_admin.delete_segments_admin_delete_teams_by_team_id_segments_by_segment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "segment_id",
            "required": true,
            "schema": {
              "title": "Segment Id",
              "type": "string"
            }
          },
          {
            "description": "When true, delete the segment even if access rules reference it. Those rules' in_segment conditions will fail-close per design \u00a75.6.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "default": false,
              "description": "When true, delete the segment even if access rules reference it. Those rules' in_segment conditions will fail-close per design \u00a75.6.",
              "title": "Force",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Segment",
        "tags": [
          "segments-admin"
        ]
      },
      "get": {
        "description": "Retrieve a single segment by ID. 404 if missing, soft-deleted, or cross-team.",
        "operationId": "segments_admin.get_segments_admin_get_teams_by_team_id_segments_by_segment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "segment_id",
            "required": true,
            "schema": {
              "title": "Segment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SegmentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Segment",
        "tags": [
          "segments-admin"
        ]
      },
      "patch": {
        "description": "Partial-update a segment. No-op updates return 200 without\nemitting ``SegmentUpdated``. Supplying ``conditions`` triggers a\nrecompile and clears ``validation_error`` if the tree compiles\ncleanly (design \u00a78.1).",
        "operationId": "segments_admin.patch_segments_admin_patch_teams_by_team_id_segments_by_segment_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "segment_id",
            "required": true,
            "schema": {
              "title": "Segment Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/SegmentUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SegmentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Segment",
        "tags": [
          "segments-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/segments/{segment_id}/members": {
      "get": {
        "description": "Return one cursor-paginated page of matching ``team_contact`` IDs.\n\nInactive segments return an empty page. Deleted segments 404. The\nunderlying query is a single JOIN with one EXISTS subquery per\ncondition \u2014 no N+1.",
        "operationId": "segments_admin.get_segments_admin_get_teams_by_team_id_segments_by_segment_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "segment_id",
            "required": true,
            "schema": {
              "title": "Segment Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamContactRefListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Members",
        "tags": [
          "segments-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/segments/{segment_id}/members/count": {
      "get": {
        "operationId": "segments_admin.get_segments_admin_get_teams_by_team_id_segments_by_segment_id_members_count",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "segment_id",
            "required": true,
            "schema": {
              "title": "Segment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberCountResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug collision or referenced entities exist)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity (compile-time reference failures)"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Count Members",
        "tags": [
          "segments-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/settings/transcription-language": {
      "get": {
        "operationId": "media_transcript.get_media_transcript_get_teams_by_team_id_settings_transcription_language",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Team Transcription Language",
        "tags": [
          "media-transcript"
        ]
      },
      "put": {
        "operationId": "media_transcript.put_media_transcript_put_teams_by_team_id_settings_transcription_language",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TranscriptionLanguageBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Set Team Transcription Language",
        "tags": [
          "media-transcript"
        ]
      }
    },
    "/api/v1/teams/{team_id}/switch": {
      "post": {
        "description": "Switch active team context \u2014 verifies membership and returns team.",
        "operationId": "teams.post_teams_post_teams_by_team_id_switch",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_TeamAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Switch Team",
        "tags": [
          "teams"
        ]
      }
    },
    "/api/v1/teams/{team_id}/tags": {
      "get": {
        "description": "List active tags for a team with cursor pagination.",
        "operationId": "tags_admin.get_tags_admin_get_teams_by_team_id_tags",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Tags",
        "tags": [
          "tags-admin"
        ]
      },
      "post": {
        "description": "Create a new tag in this team.",
        "operationId": "tags_admin.post_tags_admin_post_teams_by_team_id_tags",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Tag",
        "tags": [
          "tags-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/tags/{tag_id}": {
      "delete": {
        "description": "Soft-delete a tag. Slug becomes reusable (per partial unique index).",
        "operationId": "tags_admin.delete_tags_admin_delete_teams_by_team_id_tags_by_tag_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "tag_id",
            "required": true,
            "schema": {
              "title": "Tag Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Tag",
        "tags": [
          "tags-admin"
        ]
      },
      "get": {
        "description": "Retrieve a single tag by ID. 404 if missing or cross-team.",
        "operationId": "tags_admin.get_tags_admin_get_teams_by_team_id_tags_by_tag_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "tag_id",
            "required": true,
            "schema": {
              "title": "Tag Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Tag",
        "tags": [
          "tags-admin"
        ]
      },
      "patch": {
        "description": "Apply a partial update. No-op updates return 200 without emitting events.",
        "operationId": "tags_admin.patch_tags_admin_patch_teams_by_team_id_tags_by_tag_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "tag_id",
            "required": true,
            "schema": {
              "title": "Tag Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/TagUpdateEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (slug or assignment already exists)"
          },
          "415": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unsupported media type (requires application/vnd.api+json)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update Tag",
        "tags": [
          "tags-admin"
        ]
      }
    },
    "/api/v1/teams/{team_id}/verified-domains": {
      "get": {
        "description": "List all verified-domain rows for the team (all statuses).",
        "operationId": "verified_domains.get_verified_domains_get_teams_by_team_id_verified_domains",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_VerifiedDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Domains",
        "tags": [
          "verified-domains"
        ]
      },
      "post": {
        "description": "Register a domain for DNS-TXT verification.\n\nReturns 201 with the row in ``status='pending'`` and the exact DNS TXT\nrecord the admin must publish (``txt_record_host`` + ``txt_record_value``).\nOnce published, call ``POST /{id}/verify`` to confirm ownership.",
        "operationId": "verified_domains.post_verified_domains_post_teams_by_team_id_verified_domains",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/VerifiedDomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_VerifiedDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Domain",
        "tags": [
          "verified-domains"
        ]
      }
    },
    "/api/v1/teams/{team_id}/verified-domains/{domain_id}": {
      "delete": {
        "description": "Soft-delete a verified-domain row. Returns 204 on success.",
        "operationId": "verified_domains.delete_verified_domains_delete_teams_by_team_id_verified_domains_by_domain_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain_id",
            "required": true,
            "schema": {
              "title": "Domain Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Domain",
        "tags": [
          "verified-domains"
        ]
      },
      "get": {
        "description": "Retrieve a single verified-domain row.",
        "operationId": "verified_domains.get_verified_domains_get_teams_by_team_id_verified_domains_by_domain_id",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain_id",
            "required": true,
            "schema": {
              "title": "Domain Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_VerifiedDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve Domain",
        "tags": [
          "verified-domains"
        ]
      }
    },
    "/api/v1/teams/{team_id}/verified-domains/{domain_id}/verify": {
      "post": {
        "description": "Trigger a DNS TXT challenge check for the given domain.\n\nThe caller must have already published the TXT record returned in the\ncreate response (``txt_record_host`` / ``txt_record_value``) before\ncalling this endpoint.\n\nSuccess (TXT present, exact match, no CNAME redirect) \u2192 200, status=verified.\nFailure (TXT absent or wrong) \u2192 422 not_yet_verified; row stays pending.\nConflict (another hub already owns this domain) \u2192 409.\nRate-limited to 5 attempts / 60 s per (team_id, IP).",
        "operationId": "verified_domains.post_verified_domains_post_teams_by_team_id_verified_domains_by_domain_id_verify",
        "parameters": [
          {
            "in": "path",
            "name": "team_id",
            "required": true,
            "schema": {
              "title": "Team Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain_id",
            "required": true,
            "schema": {
              "title": "Domain Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_VerifiedDomainAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Verify Domain",
        "tags": [
          "verified-domains"
        ]
      }
    },
    "/api/v1/users": {
      "get": {
        "operationId": "users.get_users_get_users",
        "parameters": [
          {
            "description": "Cursor \u2014 ID of the last item on the previous page.",
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cursor \u2014 ID of the last item on the previous page.",
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "header",
            "name": "X-Team-ID",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Team-Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_UserAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Users",
        "tags": [
          "users"
        ]
      }
    },
    "/api/v1/users/me": {
      "get": {
        "operationId": "users.get_users_get_users_me",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_UserAttributes_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Me",
        "tags": [
          "users"
        ]
      }
    },
    "/api/v1/users/{user_id}": {
      "get": {
        "operationId": "users.get_users_get_users_by_user_id",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "title": "User Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_UserAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get User",
        "tags": [
          "users"
        ]
      },
      "patch": {
        "operationId": "users.patch_users_patch_users_by_user_id",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "title": "User Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_UserAttributes_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Update User",
        "tags": [
          "users"
        ]
      }
    },
    "/m": {
      "get": {
        "operationId": "default.get_get_m",
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Magic Link Landing"
      }
    },
    "/me/billing-portal-links": {
      "get": {
        "operationId": "checkout_me.get_checkout_me_get_me_billing_portal_links",
        "parameters": [
          {
            "description": "Optional URL Stripe redirects the customer to after exiting the portal. Must match an origin in the hub's settings.auth.allowed_redirect_origins. Omit to use the platform default.",
            "in": "query",
            "name": "return_url",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional URL Stripe redirects the customer to after exiting the portal. Must match an origin in the hub's settings.auth.allowed_redirect_origins. Omit to use the platform default.",
              "title": "Return Url"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List billing portal links (one per hub with active sub)",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/me/orders": {
      "get": {
        "operationId": "checkout_me.get_checkout_me_get_me_orders",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all orders (all hubs)",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/me/orders/{order_id}": {
      "get": {
        "description": "Retrieve a single order. Returns 404 if it does not belong to the\ncontact.",
        "operationId": "checkout_me.get_checkout_me_get_me_orders_by_order_id",
        "parameters": [
          {
            "in": "path",
            "name": "order_id",
            "required": true,
            "schema": {
              "title": "Order Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve single order",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/me/subscriptions": {
      "get": {
        "operationId": "checkout_me.get_checkout_me_get_me_subscriptions",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List all subscriptions (all hubs)",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/me/subscriptions/{sub_id}": {
      "get": {
        "operationId": "checkout_me.get_checkout_me_get_me_subscriptions_by_sub_id",
        "parameters": [
          {
            "in": "path",
            "name": "sub_id",
            "required": true,
            "schema": {
              "title": "Sub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Retrieve single subscription",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/me/subscriptions/{sub_id}/cancel": {
      "post": {
        "operationId": "checkout_me.post_checkout_me_post_me_subscriptions_by_sub_id_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "sub_id",
            "required": true,
            "schema": {
              "title": "Sub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Conflict (duplicate)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          },
          "503": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Stripe unavailable"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Cancel subscription (at-period-end by default)",
        "tags": [
          "checkout-me"
        ]
      }
    },
    "/oauth/authorize": {
      "get": {
        "operationId": "oauth.get_oauth_get_oauth_authorize",
        "parameters": [
          {
            "in": "query",
            "name": "response_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Response Type"
            }
          },
          {
            "in": "query",
            "name": "client_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Client Id"
            }
          },
          {
            "in": "query",
            "name": "redirect_uri",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Redirect Uri"
            }
          },
          {
            "in": "query",
            "name": "scope",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Scope"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "State"
            }
          },
          {
            "in": "query",
            "name": "nonce",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Nonce"
            }
          },
          {
            "in": "query",
            "name": "code_challenge",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code Challenge"
            }
          },
          {
            "in": "query",
            "name": "code_challenge_method",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code Challenge Method"
            }
          },
          {
            "in": "query",
            "name": "prompt",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Prompt"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/_ConsentRequiredResponse"
                }
              }
            },
            "description": "Consent required \u2014 frontend must render the consent screen"
          },
          "302": {
            "description": "Error response; see `errors[0].code` where present."
          },
          "400": {
            "description": "OAuth error (unvalidated redirect_uri or missing client_id)"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Oauth Authorize",
        "tags": [
          "oauth"
        ]
      }
    },
    "/oauth/authorize/resume": {
      "get": {
        "description": "Resume a cold-start authorization request after the member logs in.\n\nSECURITY INVARIANTS:\n- The ONLY accepted parameters are the opaque single-use ``rid`` and the\n  non-secret hub slug ``h``.  This endpoint never accepts a redirect_uri,\n  return_to, next, client_id, scope, state, nonce, or PKCE value \u2014 there is\n  no client-controlled redirect target, so there is no open-redirect surface.\n  ``h`` is used ONLY as a percent-encoded path segment on the server-configured\n  HUB_FRONTEND_BASE_URL origin (app/hubs/urls.py:66), never as a host or a\n  full URL.\n- The rid is burned atomically (GET+DEL) on first read: it cannot be replayed.\n- Identity comes ONLY from the live session resolved at THIS request; the\n  stored context carries no contact_id, so a resume link cannot fixate a\n  contact.\n- The full /authorize validation ladder re-runs; nothing is trusted as\n  pre-validated.\n\nThis is an OAuth2/OIDC endpoint \u2014 NOT JSON:API.",
        "operationId": "oauth.get_oauth_get_oauth_authorize_resume",
        "parameters": [
          {
            "in": "query",
            "name": "rid",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Rid"
            }
          },
          {
            "in": "query",
            "name": "h",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "H"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "302": {
            "description": "Redirect: to the RP's redirect_uri with code/error, to the hub consent page, or to the hub login page when the link is dead"
          },
          "400": {
            "description": "Expired or already-used resume link with no recoverable hub"
          },
          "404": {
            "description": "Cold-start bounce is disabled (OAUTH_COLDSTART_BOUNCE_ENABLED=false) \u2014 this endpoint behaves as if it does not exist"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Oauth Authorize Resume",
        "tags": [
          "oauth"
        ]
      }
    },
    "/oauth/consent": {
      "post": {
        "description": "Consent submission endpoint.\n\nThe frontend submits the opaque ``consent_request_id`` obtained from\nGET /oauth/authorize (when consent_required=true) after the contact approves.\nThe server-side pending context is atomically burned (single-use), re-verified\n(contact match + redirect_uri still registered + scope still allowed), then the\ngrant is persisted and the authorization code redirect is issued.  The client\ncannot influence redirect_uri / scope / contact via this body.\n\nRequires an active contact session (Bearer token).\n\nThis is an OAuth2/OIDC standard endpoint \u2014 NOT JSON:API.",
        "operationId": "oauth.post_oauth_post_oauth_consent",
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/_ConsentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "302": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Oauth Consent",
        "tags": [
          "oauth"
        ]
      }
    },
    "/oauth/revoke": {
      "post": {
        "description": "Token Revocation Endpoint (RFC 7009).\n\nAccepts a token (access or refresh) via application/x-www-form-urlencoded.\nOptional token_type_hint is accepted but not required.\n\nSECURITY:\n- Confidential clients MUST authenticate via client_secret_basic (RFC 7009 \u00a72.1).\n  Missing or wrong secret \u2192 401 invalid_client.\n- The presented token's RS256 signature is VERIFIED before any revocation\n  state changes (a forged token can never blacklist a victim's jti). Token\n  ownership is enforced \u2014 a client may only revoke a token issued to IT.\n- For a valid, owned, unknown, or forged token the response is 200 with an\n  empty body (RFC 7009 \u00a72.2 \u2014 no info leak about token existence/ownership).\n- Revoking a refresh token also drops the entire Valkey refresh family so\n  sibling tokens (stolen copies) are immediately dead.\n- A genuine STORAGE/infra failure during the blacklist or family write is NOT\n  swallowed \u2014 it propagates as a 5xx so we never report a false \"revoked\" 200.\n\nThis is an OAuth2 standard endpoint \u2014 NOT JSON:API.",
        "operationId": "oauth.post_oauth_post_oauth_revoke",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Oauth Revoke",
        "tags": [
          "oauth"
        ]
      }
    },
    "/oauth/token": {
      "post": {
        "description": "OAuth2 Token Endpoint (RFC 6749 \u00a73.2).\n\nAccepts application/x-www-form-urlencoded. Supported grant types:\n  - authorization_code: requires code, redirect_uri, code_verifier, client_id.\n    Confidential clients must also present client_secret_basic.\n  - refresh_token: requires refresh_token, client_id.\n    Confidential clients must present client_secret_basic.\n\nThis is an OAuth2/OIDC standard endpoint \u2014 NOT JSON:API.\nErrors are plain OAuth JSON ({\"error\": ..., \"error_description\": ...}).\n\nSECURITY: rate-limited at the dependency level; client auth is enforced\ninside TokenService per \u00a74.3 requirements.",
        "operationId": "oauth.post_oauth_post_oauth_token",
        "parameters": [
          {
            "in": "query",
            "name": "grant_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Grant Type"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthTokenResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Oauth Token",
        "tags": [
          "oauth"
        ]
      }
    },
    "/oauth/userinfo": {
      "get": {
        "description": "OIDC UserInfo Endpoint (RFC 6749 \u00a73.1 / OIDC \u00a75.3).\n\nAccepts a Bearer access_token with aud=\"mio-oauth\". Returns identity claims\ngated by the granted scope:\n  - always: sub, hub_id\n  - \"email\" scope: email, email_verified\n  - \"profile\" scope: name, picture (when available)\n\nSECURITY:\n- Only accepts aud=mio-oauth tokens (contact, mio-api, and refresh tokens\n  all have wrong audiences and are rejected with 401).\n- Revoked (blacklisted jti) tokens return 401.\n- Errors follow RFC 6750 \u00a73.1: 401 + WWW-Authenticate: Bearer header.\n\nThis is an OIDC standard endpoint \u2014 NOT JSON:API.",
        "operationId": "oauth.get_oauth_get_oauth_userinfo",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfoResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Oauth Userinfo",
        "tags": [
          "oauth"
        ]
      }
    },
    "/unsubscribe": {
      "get": {
        "operationId": "email_unsubscribe.get_email_unsubscribe_get_unsubscribe",
        "parameters": [
          {
            "description": "Signed unsubscribe JWT token.",
            "in": "query",
            "name": "t",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Signed unsubscribe JWT token.",
              "title": "T"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unsubscribe via link (browser)",
        "tags": [
          "email-unsubscribe"
        ]
      },
      "post": {
        "description": "RFC 8058 one-click unsubscribe endpoint.\n\nMail clients (Gmail, Apple Mail) POST to this URL with the form body:\n  List-Unsubscribe=One-Click\n\nThe JWT token is accepted from either:\n  - ``t`` query parameter (standard form)\n  - Implicit in the original ``t`` query parameter on the URL\n\nReturns 200 with an EMPTY body on success. Gmail / Apple require either\n200 or 204 with no body content.\n\nStatus codes:\n  200 \u2014 success (empty body)\n  400 \u2014 invalid or expired token (empty body)",
        "operationId": "email_unsubscribe.post_email_unsubscribe_post_unsubscribe",
        "parameters": [
          {
            "description": "Signed unsubscribe JWT token.",
            "in": "query",
            "name": "t",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Signed unsubscribe JWT token.",
              "title": "T"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/post_unsubscribe"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "One-click unsubscribe (RFC 8058)",
        "tags": [
          "email-unsubscribe"
        ]
      }
    },
    "/v1/admin/email-suppressions": {
      "get": {
        "description": "List email suppressions with cursor pagination.\n\nSupports optional filters: scope, filter[team_id], filter[hub_id].\nReturns JSON:API collection with pagination links.",
        "operationId": "email_suppressions_admin.get_email_suppressions_admin_get_v1_admin_email_suppressions",
        "parameters": [
          {
            "description": "Filter by scope: platform | team | hub.",
            "in": "query",
            "name": "scope",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by scope: platform | team | hub.",
              "title": "Scope"
            }
          },
          {
            "in": "query",
            "name": "filter[team_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Team Id]"
            }
          },
          {
            "in": "query",
            "name": "filter[hub_id]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Filter[Hub Id]"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SuppressionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List email suppressions (platform-admin)",
        "tags": [
          "email-suppressions-admin"
        ]
      }
    },
    "/v1/admin/email-suppressions/{suppression_id}": {
      "delete": {
        "description": "Lift a suppression by id.\n\nSets is_active=FALSE, lifted_at=NOW(), lifted_by=current user sub.\nReturns 204 on success, 404 if the id does not exist or is already lifted.",
        "operationId": "email_suppressions_admin.delete_email_suppressions_admin_delete_v1_admin_email_suppressions_by_suppression_id",
        "parameters": [
          {
            "in": "path",
            "name": "suppression_id",
            "required": true,
            "schema": {
              "title": "Suppression Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Lift (un-suppress) an email suppression (platform-admin)",
        "tags": [
          "email-suppressions-admin"
        ]
      }
    },
    "/v1/contacts/{contact_id}/drip-enrollments": {
      "get": {
        "operationId": "drip_campaigns.get_drip_campaigns_get_v1_contacts_by_contact_id_drip_enrollments",
        "parameters": [
          {
            "in": "path",
            "name": "contact_id",
            "required": true,
            "schema": {
              "title": "Contact Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DripEnrollmentOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Contact Enrollments",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns": {
      "get": {
        "operationId": "drip_campaigns.get_drip_campaigns_get_v1_hubs_by_hub_id_drip_campaigns",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DripCampaignOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Drip Campaigns",
        "tags": [
          "drip-campaigns"
        ]
      },
      "post": {
        "description": "Create a drip campaign for `hub_id`.\n\nBranch C2 fix: team_id is sourced from hub.team_id (NOT payload['team_id']),\nso caller cannot spoof tenant. created_by uses dict-key access (TokenPayload\nis a TypedDict \u2014 attribute access silently fails).",
        "operationId": "drip_campaigns.post_drip_campaigns_post_v1_hubs_by_hub_id_drip_campaigns",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DripCampaignCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripCampaignOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Drip Campaign",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns/{campaign_id}": {
      "delete": {
        "operationId": "drip_campaigns.delete_drip_campaigns_delete_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Drip Campaign",
        "tags": [
          "drip-campaigns"
        ]
      },
      "get": {
        "operationId": "drip_campaigns.get_drip_campaigns_get_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripCampaignOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get Drip Campaign",
        "tags": [
          "drip-campaigns"
        ]
      },
      "patch": {
        "operationId": "drip_campaigns.patch_drip_campaigns_patch_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DripCampaignPatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripCampaignOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Drip Campaign",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns/{campaign_id}/activate": {
      "post": {
        "operationId": "drip_campaigns.post_drip_campaigns_post_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_activate",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripCampaignOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Activate Drip Campaign",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns/{campaign_id}/enrollments": {
      "get": {
        "operationId": "drip_campaigns.get_drip_campaigns_get_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_enrollments",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DripEnrollmentOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Campaign Enrollments",
        "tags": [
          "drip-campaigns"
        ]
      },
      "post": {
        "operationId": "drip_campaigns.post_drip_campaigns_post_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_enrollments",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DripEnrollCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripEnrollmentOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Enroll Contact In Campaign",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns/{campaign_id}/enrollments/{enrollment_id}": {
      "delete": {
        "operationId": "drip_campaigns.delete_drip_campaigns_delete_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_enrollments_by_enrollment_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "enrollment_id",
            "required": true,
            "schema": {
              "title": "Enrollment Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Exit Drip Enrollment",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns/{campaign_id}/pause": {
      "post": {
        "operationId": "drip_campaigns.post_drip_campaigns_post_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_pause",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripCampaignOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Pause Drip Campaign",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns/{campaign_id}/steps": {
      "get": {
        "operationId": "drip_campaigns.get_drip_campaigns_get_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_steps",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiListResponse_DripStepOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List Drip Steps",
        "tags": [
          "drip-campaigns"
        ]
      },
      "post": {
        "operationId": "drip_campaigns.post_drip_campaigns_post_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_steps",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DripStepCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripStepOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create Drip Step",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/drip-campaigns/{campaign_id}/steps/{step_id}": {
      "delete": {
        "operationId": "drip_campaigns.delete_drip_campaigns_delete_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_steps_by_step_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "step_id",
            "required": true,
            "schema": {
              "title": "Step Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Delete Drip Step",
        "tags": [
          "drip-campaigns"
        ]
      },
      "patch": {
        "operationId": "drip_campaigns.patch_drip_campaigns_patch_v1_hubs_by_hub_id_drip_campaigns_by_campaign_id_steps_by_step_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "step_id",
            "required": true,
            "schema": {
              "title": "Step Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/DripStepPatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_DripStepOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Patch Drip Step",
        "tags": [
          "drip-campaigns"
        ]
      }
    },
    "/v1/hubs/{hub_id}/email-config": {
      "delete": {
        "operationId": "email_config.delete_email_config_delete_v1_hubs_by_hub_id_email_config",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Soft-disable BYO-SMTP configuration for a hub",
        "tags": [
          "email-config"
        ]
      },
      "get": {
        "operationId": "email_config.get_email_config_get_v1_hubs_by_hub_id_email_config",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Fetch BYO-SMTP configuration for a hub",
        "tags": [
          "email-config"
        ]
      },
      "put": {
        "operationId": "email_config.put_email_config_put_v1_hubs_by_hub_id_email_config",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Upsert BYO-SMTP configuration for a hub",
        "tags": [
          "email-config"
        ]
      }
    },
    "/v1/hubs/{hub_id}/email-config/test": {
      "post": {
        "operationId": "email_config.post_email_config_post_v1_hubs_by_hub_id_email_config_test",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Re-test stored BYO-SMTP credentials for a hub",
        "tags": [
          "email-config"
        ]
      }
    },
    "/v1/hubs/{hub_id}/email-stats": {
      "get": {
        "operationId": "email_stats.get_email_stats_get_v1_hubs_by_hub_id_email_stats",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiResponse_HubEmailStatsOut_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Get deliverability stats for a hub (rolling 24h)",
        "tags": [
          "email-stats"
        ]
      }
    },
    "/v1/hubs/{hub_id}/email-suppressions": {
      "get": {
        "description": "List active suppressions scoped to this hub.\n\nOnly returns rows where hub_id matches the path parameter.\nPlatform-scope and other-hub rows are filtered out by hub_id filter.",
        "operationId": "email_suppressions_hub.get_email_suppressions_hub_get_v1_hubs_by_hub_id_email_suppressions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page[after]",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Page[After]"
            }
          },
          {
            "in": "query",
            "name": "page[size]",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Page[Size]",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SuppressionListResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "List email suppressions for a hub",
        "tags": [
          "email-suppressions-hub"
        ]
      },
      "post": {
        "description": "Create a manual admin_block suppression for a specific email address.\n\nScope is always 'hub'. reason is always 'admin_block'.\nhub_id comes from the URL path. source_event_type is 'manual'.\n\nteam_id is resolved from the hub row (CHECK constraint requires\nhub-scope rows to have team_id NOT NULL).  Returns 404 if the hub\ndoes not exist.\n\nReturns 201 with the created resource on success, 404 if hub unknown,\n422 on bad input.",
        "operationId": "email_suppressions_hub.post_email_suppressions_hub_post_v1_hubs_by_hub_id_email_suppressions",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/vnd.api+json": {
              "schema": {
                "$ref": "#/components/schemas/HubCreateSuppressionEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/SuppressionResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Create an admin_block suppression for a hub",
        "tags": [
          "email-suppressions-hub"
        ]
      }
    },
    "/v1/hubs/{hub_id}/email-suppressions/{suppression_id}": {
      "delete": {
        "description": "Lift a suppression for this hub.\n\nVerifies that the row's hub_id matches the path parameter before lifting.\nReturns 404 on id-not-found OR hub_id mismatch (existence is not leaked\nacross hubs \u2014 no 403 that would confirm a row exists in another hub).\n\nSets is_active=FALSE, lifted_at=NOW(), lifted_by=current user sub.",
        "operationId": "email_suppressions_hub.delete_email_suppressions_hub_delete_v1_hubs_by_hub_id_email_suppressions_by_suppression_id",
        "parameters": [
          {
            "in": "path",
            "name": "hub_id",
            "required": true,
            "schema": {
              "title": "Hub Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "suppression_id",
            "required": true,
            "schema": {
              "title": "Suppression Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "400": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Validation error"
          },
          "401": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Not authenticated"
          },
          "403": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Resource not found"
          },
          "422": {
            "content": {
              "application/vnd.api+json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiErrorResponse"
                }
              }
            },
            "description": "Unprocessable entity"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Lift (un-suppress) a hub-scoped suppression",
        "tags": [
          "email-suppressions-hub"
        ]
      }
    },
    "/version": {
      "get": {
        "description": "Returns the running build version, service name, and git SHA (when available). Unauthenticated. Plain JSON (not JSON:API).",
        "operationId": "meta.get_meta_get_version",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "API version info",
        "tags": [
          "meta"
        ]
      }
    },
    "/webhooks/mailgun/events": {
      "post": {
        "description": "Inbound Mailgun webhook handler.\n\nAuthenticated by HMAC-SHA256 signature verification (design \u00a79.1).\n\nStatus codes:\n  200 \u2014 event accepted (includes idempotent duplicates handled by dispatch)\n  400 \u2014 request body is not valid JSON\n  406 \u2014 HMAC signature invalid or timestamp outside \u00b15-minute window\n  503 \u2014 MAILGUN_WEBHOOK_SIGNING_KEY is not configured; refusing to operate\n\nDesign reference: \u00a76.7, \u00a79.1, \u00a79.3",
        "operationId": "email_webhooks.post_email_webhooks_post_webhooks_mailgun_events",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Mailgun inbound event webhook",
        "tags": [
          "email-webhooks"
        ]
      }
    },
    "/webhooks/stripe/connect": {
      "post": {
        "operationId": "checkout_webhooks.post_checkout_webhooks_post_webhooks_stripe_connect",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Stripe Connect webhook endpoint (connected-account events)",
        "tags": [
          "checkout-webhooks"
        ]
      }
    },
    "/webhooks/stripe/platform": {
      "post": {
        "operationId": "checkout_webhooks.post_checkout_webhooks_post_webhooks_stripe_platform",
        "responses": {
          "200": {
            "content": {
              "application/vnd.api+json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Stripe platform-level webhook endpoint",
        "tags": [
          "checkout-webhooks"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "description": "Production",
      "url": "https://api.member.dev"
    }
  ]
}
