basePath: /
definitions:
  consts.ContentStatus:
    enum:
    - draft
    - reviewing
    - published
    - unpublished
    - blocked
    type: string
    x-enum-varnames:
    - ContentStatusDraft
    - ContentStatusReviewing
    - ContentStatusPublished
    - ContentStatusUnpublished
    - ContentStatusBlocked
  consts.Currency:
    enum:
    - CNY
    type: string
    x-enum-varnames:
    - CurrencyCNY
  consts.Gender:
    enum:
    - male
    - female
    - secret
    type: string
    x-enum-varnames:
    - GenderMale
    - GenderFemale
    - GenderSecret
  consts.OrderStatus:
    enum:
    - created
    - paid
    - refunding
    - refunded
    - canceled
    - failed
    type: string
    x-enum-varnames:
    - OrderStatusCreated
    - OrderStatusPaid
    - OrderStatusRefunding
    - OrderStatusRefunded
    - OrderStatusCanceled
    - OrderStatusFailed
  consts.OrderType:
    enum:
    - content_purchase
    - recharge
    - withdrawal
    type: string
    x-enum-varnames:
    - OrderTypeContentPurchase
    - OrderTypeRecharge
    - OrderTypeWithdrawal
  consts.Role:
    enum:
    - user
    - super_admin
    - creator
    type: string
    x-enum-varnames:
    - RoleUser
    - RoleSuperAdmin
    - RoleCreator
  consts.TenantStatus:
    enum:
    - pending_verify
    - verified
    - banned
    type: string
    x-enum-varnames:
    - TenantStatusPendingVerify
    - TenantStatusVerified
    - TenantStatusBanned
  consts.TenantUserRole:
    enum:
    - member
    - tenant_admin
    type: string
    x-enum-varnames:
    - TenantUserRoleMember
    - TenantUserRoleTenantAdmin
  consts.UserStatus:
    enum:
    - active
    - inactive
    - pending_verify
    - verified
    - banned
    type: string
    x-enum-varnames:
    - UserStatusActive
    - UserStatusInactive
    - UserStatusPendingVerify
    - UserStatusVerified
    - UserStatusBanned
  dto.AdminContentItem:
    properties:
      content:
        allOf:
        - $ref: '#/definitions/dto.ContentItem'
        description: Content 内容摘要信息。
      owner:
        allOf:
        - $ref: '#/definitions/dto.AdminContentOwnerLite'
        description: Owner 内容作者用户信息。
      price:
        allOf:
        - $ref: '#/definitions/dto.ContentPrice'
        description: Price 内容价格信息。
      status_description:
        description: StatusDescription 状态描述（用于展示）。
        type: string
      tenant:
        allOf:
        - $ref: '#/definitions/dto.SuperContentTenantLite'
        description: Tenant 内容所属租户信息，用于超管列表展示与跳转。
      visibility_description:
        description: VisibilityDescription 可见性描述（用于展示）。
        type: string
    type: object
  dto.AdminContentOwnerLite:
    properties:
      id:
        description: ID 用户ID。
        type: integer
      roles:
        description: Roles 用户角色列表。
        items:
          $ref: '#/definitions/consts.Role'
        type: array
      status:
        allOf:
        - $ref: '#/definitions/consts.UserStatus'
        description: Status 用户状态。
      username:
        description: Username 用户名。
        type: string
    type: object
  dto.ApplyForm:
    properties:
      avatar:
        description: Avatar 头像URL。
        type: string
      bio:
        description: Bio 频道简介。
        type: string
      name:
        description: Name 频道/创作者名称。
        type: string
    type: object
  dto.AssetDTO:
    properties:
      id:
        description: ID 资源ID。
        type: integer
      name:
        description: Name 文件名。
        type: string
      role:
        description: Role 资源角色（cover/media/preview）。
        type: string
      size:
        description: Size 文件大小描述。
        type: string
      sort:
        description: Sort 排序权重。
        type: integer
      type:
        description: Type 资源类型（image/audio/video）。
        type: string
      url:
        description: URL 资源访问地址。
        type: string
    type: object
  dto.Comment:
    properties:
      content:
        description: Content 评论内容。
        type: string
      create_time:
        description: CreateTime 评论创建时间（RFC3339）。
        type: string
      id:
        description: ID 评论ID。
        type: integer
      is_liked:
        description: IsLiked 当前用户是否点赞该评论。
        type: boolean
      likes:
        description: Likes 评论点赞数。
        type: integer
      reply_to:
        description: ReplyTo 回复的评论ID（0 表示一级评论）。
        type: integer
      user_avatar:
        description: UserAvatar 评论用户头像。
        type: string
      user_id:
        description: UserID 评论用户ID。
        type: integer
      user_nickname:
        description: UserNickname 评论用户昵称。
        type: string
    type: object
  dto.CommentCreateForm:
    properties:
      content:
        description: Content 评论正文，不能为空。
        type: string
      reply_to:
        description: ReplyTo 被回复评论ID（0 表示一级评论）。
        type: integer
    type: object
  dto.ContentCreateForm:
    properties:
      cover_ids:
        description: CoverIDs 封面资源ID集合。
        items:
          type: integer
        type: array
      genre:
        description: Genre 内容分类/风格。
        type: string
      key:
        description: Key 音乐调性或主音。
        type: string
      media_ids:
        description: MediaIDs 媒体资源ID集合（音频/视频/图片）。
        items:
          type: integer
        type: array
      price:
        description: Price 价格（单位元）。
        type: number
      status:
        description: Status 内容状态（draft/published）。
        type: string
      title:
        description: Title 内容标题。
        type: string
    type: object
  dto.ContentDetail:
    properties:
      author_avatar:
        description: AuthorAvatar 作者头像URL。
        type: string
      author_id:
        description: AuthorID 作者用户ID。
        type: integer
      author_is_following:
        description: AuthorIsFollowing 当前用户是否关注作者（未登录默认 false）。
        type: boolean
      author_name:
        description: AuthorName 作者展示名（优先昵称）。
        type: string
      body:
        description: Body 详细正文/图文内容（文章类可为空）。
        type: string
      cover:
        description: Cover 封面URL（无封面时为空）。
        type: string
      created_at:
        description: CreatedAt 创建时间（RFC3339 格式）。
        type: string
      description:
        description: Description 内容描述（用于详情页摘要）。
        type: string
      genre:
        description: Genre 内容分类/风格标签。
        type: string
      id:
        description: ID 内容唯一ID。
        type: integer
      is_favorited:
        description: IsFavorited 当前用户是否收藏。
        type: boolean
      is_liked:
        description: IsLiked 当前用户是否点赞。
        type: boolean
      is_purchased:
        description: IsPurchased 是否已购买（用于内容列表快速判断）。
        type: boolean
      likes:
        description: Likes 点赞数统计。
        type: integer
      media_urls:
        description: MediaUrls 关联媒体资源（音频/视频/预览）。
        items:
          $ref: '#/definitions/dto.MediaURL'
        type: array
      meta:
        allOf:
        - $ref: '#/definitions/dto.Meta'
        description: Meta 内容元信息（曲风/调性/节拍等）。
      price:
        description: Price 价格（单位元，免费为 0）。
        type: number
      published_at:
        description: PublishedAt 发布时间，未发布为空。
        type: string
      status:
        description: Status 内容状态（如 published/unpublished）。
        type: string
      tenant_id:
        description: TenantID 内容所属租户ID。
        type: integer
      title:
        description: Title 内容标题。
        type: string
      type:
        description: Type 内容媒体类型（video/audio/article）。
        type: string
      user_id:
        description: UserID 内容作者用户ID（与 author_id 同义，便于后台展示）。
        type: integer
      views:
        description: Views 浏览量统计。
        type: integer
      visibility:
        description: Visibility 内容可见性（如 public/tenant_only/private）。
        type: string
    type: object
  dto.ContentEditDTO:
    properties:
      assets:
        description: Assets 资源列表（封面/媒体）。
        items:
          $ref: '#/definitions/dto.AssetDTO'
        type: array
      description:
        description: Description 内容简介。
        type: string
      enable_trial:
        description: EnableTrial 是否开启试读/试听。
        type: boolean
      genre:
        description: Genre 内容分类。
        type: string
      id:
        description: ID 内容ID。
        type: integer
      key:
        description: Key 音乐调性或主音。
        type: string
      preview_seconds:
        description: PreviewSeconds 试看/试听秒数。
        type: integer
      price:
        description: Price 价格（单位元）。
        type: number
      status:
        description: Status 内容状态。
        type: string
      title:
        description: Title 内容标题。
        type: string
    type: object
  dto.ContentItem:
    properties:
      author_avatar:
        description: AuthorAvatar 作者头像URL。
        type: string
      author_id:
        description: AuthorID 作者用户ID。
        type: integer
      author_is_following:
        description: AuthorIsFollowing 当前用户是否关注作者（未登录默认 false）。
        type: boolean
      author_name:
        description: AuthorName 作者展示名（优先昵称）。
        type: string
      cover:
        description: Cover 封面URL（无封面时为空）。
        type: string
      created_at:
        description: CreatedAt 创建时间（RFC3339 格式）。
        type: string
      genre:
        description: Genre 内容分类/风格标签。
        type: string
      id:
        description: ID 内容唯一ID。
        type: integer
      is_purchased:
        description: IsPurchased 是否已购买（用于内容列表快速判断）。
        type: boolean
      likes:
        description: Likes 点赞数统计。
        type: integer
      price:
        description: Price 价格（单位元，免费为 0）。
        type: number
      published_at:
        description: PublishedAt 发布时间，未发布为空。
        type: string
      status:
        description: Status 内容状态（如 published/unpublished）。
        type: string
      tenant_id:
        description: TenantID 内容所属租户ID。
        type: integer
      title:
        description: Title 内容标题。
        type: string
      type:
        description: Type 内容媒体类型（video/audio/article）。
        type: string
      user_id:
        description: UserID 内容作者用户ID（与 author_id 同义，便于后台展示）。
        type: integer
      views:
        description: Views 浏览量统计。
        type: integer
      visibility:
        description: Visibility 内容可见性（如 public/tenant_only/private）。
        type: string
    type: object
  dto.ContentPrice:
    properties:
      currency:
        description: Currency 币种（CNY 等）。
        type: string
      discount_end_at:
        description: DiscountEndAt 折扣结束时间（RFC3339）。
        type: string
      discount_start_at:
        description: DiscountStartAt 折扣开始时间（RFC3339）。
        type: string
      discount_type:
        description: DiscountType 折扣类型（amount/percent）。
        type: string
      discount_value:
        description: DiscountValue 折扣值（amount=元，percent=百分比）。
        type: number
      price_amount:
        description: PriceAmount 原价金额（单位元）。
        type: number
    type: object
  dto.ContentUpdateForm:
    properties:
      cover_ids:
        description: CoverIDs 封面资源ID集合。
        items:
          type: integer
        type: array
      genre:
        description: Genre 内容分类/风格。
        type: string
      is_pinned:
        description: IsPinned 是否置顶。
        type: boolean
      key:
        description: Key 音乐调性或主音。
        type: string
      media_ids:
        description: MediaIDs 媒体资源ID集合。
        items:
          type: integer
        type: array
      price:
        description: Price 价格（单位元，nil 表示不修改）。
        type: number
      status:
        description: Status 内容状态（draft/published）。
        type: string
      title:
        description: Title 内容标题（为空表示不修改）。
        type: string
    type: object
  dto.DashboardStats:
    properties:
      new_messages:
        description: NewMessages 新消息数量。
        type: integer
      pending_refunds:
        description: PendingRefunds 待处理退款数量。
        type: integer
      total_followers:
        allOf:
        - $ref: '#/definitions/dto.IntStatItem'
        description: TotalFollowers 粉丝总数统计。
      total_revenue:
        allOf:
        - $ref: '#/definitions/dto.FloatStatItem'
        description: TotalRevenue 累计收入统计（单位元）。
    type: object
  dto.FloatStatItem:
    properties:
      trend:
        description: Trend 环比/同比变化比例。
        type: number
      value:
        description: Value 统计数值（浮点）。
        type: number
    type: object
  dto.IntStatItem:
    properties:
      trend:
        description: Trend 环比/同比变化比例。
        type: number
      value:
        description: Value 统计数值。
        type: integer
    type: object
  dto.MediaURL:
    properties:
      duration:
        description: Duration 媒体时长（秒），无时长则为 0。
        type: integer
      type:
        description: Type 媒体类型（audio/video/image/preview）。
        type: string
      url:
        description: URL 媒体资源地址。
        type: string
    type: object
  dto.Meta:
    properties:
      beat:
        description: Beat 节拍信息（如 4/4）。
        type: string
      key:
        description: Key 音乐调性或主音。
        type: string
      role:
        description: Role 内容角色/定位（如 demo/主稿）。
        type: string
    type: object
  dto.Notification:
    properties:
      content:
        description: Content 通知内容。
        type: string
      id:
        description: ID 通知ID。
        type: integer
      read:
        description: Read 是否已读。
        type: boolean
      time:
        description: Time 发送时间（RFC3339）。
        type: string
      title:
        description: Title 通知标题。
        type: string
      type:
        description: Type 通知类型（system/order/interaction）。
        type: string
    type: object
  dto.OptionsResponse:
    properties:
      content_genre:
        description: ContentGenre 内容类型/分类选项。
        items:
          $ref: '#/definitions/requests.KV'
        type: array
      content_status:
        description: ContentStatus 内容状态选项。
        items:
          $ref: '#/definitions/requests.KV'
        type: array
    type: object
  dto.Order:
    properties:
      amount:
        description: Amount 实付金额（单位元）。
        type: number
      buyer_avatar:
        description: BuyerAvatar 买家头像URL。
        type: string
      buyer_name:
        description: BuyerName 买家昵称。
        type: string
      cover:
        description: Cover 订单封面图。
        type: string
      create_time:
        description: CreateTime 创建时间（RFC3339）。
        type: string
      id:
        description: ID 订单ID。
        type: integer
      is_virtual:
        description: IsVirtual 是否虚拟订单。
        type: boolean
      items:
        description: Items 订单内容明细。
        items:
          $ref: '#/definitions/dto.ContentItem'
        type: array
      pay_time:
        description: PayTime 支付时间（RFC3339）。
        type: string
      quantity:
        description: Quantity 内容数量。
        type: integer
      status:
        description: Status 订单状态。
        type: string
      status_description:
        description: StatusDescription 订单状态描述。
        type: string
      tenant_id:
        description: TenantID 内容所属租户ID。
        type: integer
      tenant_name:
        description: TenantName 租户名称。
        type: string
      title:
        description: Title 订单标题（用于列表展示）。
        type: string
      type:
        description: Type 订单类型（内容购买/充值等）。
        type: string
      type_description:
        description: TypeDescription 订单类型描述。
        type: string
    type: object
  dto.OrderBuyerLite:
    properties:
      id:
        description: ID 买家用户ID。
        type: integer
      username:
        description: Username 买家用户名。
        type: string
    type: object
  dto.OrderCreateForm:
    properties:
      content_id:
        description: ContentID 内容ID。
        type: integer
      idempotency_key:
        description: IdempotencyKey 幂等键（同一业务请求需保持一致）。
        type: string
      quantity:
        description: Quantity 购买数量（默认 1）。
        type: integer
      sku:
        description: Sku 规格标识（可选）。
        type: string
      user_coupon_id:
        description: UserCouponID 用户券ID（可选）。
        type: integer
    type: object
  dto.OrderCreateResponse:
    properties:
      order_id:
        description: OrderID 创建成功的订单ID。
        type: integer
    type: object
  dto.OrderPayForm:
    properties:
      method:
        description: Method 支付方式（wechat/alipay/balance）。
        type: string
    type: object
  dto.OrderPayResponse:
    properties:
      pay_params:
        description: PayParams 支付参数（透传给前端）。
        type: string
    type: object
  dto.OrderStatisticsResponse:
    properties:
      by_status:
        description: ByStatus 按状态聚合统计。
        items:
          $ref: '#/definitions/dto.OrderStatisticsRow'
        type: array
      total_amount_paid_sum:
        description: TotalAmountPaidSum 实付总额（分）。
        type: integer
      total_count:
        description: TotalCount 订单总数。
        type: integer
    type: object
  dto.OrderStatisticsRow:
    properties:
      amount_paid_sum:
        description: AmountPaidSum 该状态实付总额（分）。
        type: integer
      count:
        description: Count 该状态订单数量。
        type: integer
      status:
        allOf:
        - $ref: '#/definitions/consts.OrderStatus'
        description: Status 订单状态。
      status_description:
        description: StatusDescription 状态描述（用于展示）。
        type: string
    type: object
  dto.OrderStatusResponse:
    properties:
      status:
        description: Status 订单状态（unpaid/paid/completed 等）。
        type: string
    type: object
  dto.OrderTenantLite:
    properties:
      code:
        description: Code 租户编码。
        type: string
      id:
        description: ID 租户ID。
        type: integer
      name:
        description: Name 租户名称。
        type: string
    type: object
  dto.PayoutAccount:
    properties:
      account:
        description: Account 收款账号。
        type: string
      id:
        description: ID 收款账户ID。
        type: integer
      name:
        description: Name 账户名称/开户行。
        type: string
      realname:
        description: Realname 收款人姓名。
        type: string
      type:
        description: Type 账户类型（bank/alipay）。
        type: string
    type: object
  dto.RealNameForm:
    properties:
      id_card:
        description: IDCard 身份证号。
        type: string
      realname:
        description: Realname 真实姓名。
        type: string
    type: object
  dto.RechargeForm:
    properties:
      amount:
        description: Amount 充值金额（单位元）。
        type: number
      method:
        description: Method 充值方式（wechat/alipay）。
        type: string
    type: object
  dto.RechargeResponse:
    properties:
      order_id:
        description: OrderID 充值订单ID。
        type: integer
      pay_params:
        description: PayParams 支付参数（透传给前端）。
        type: string
    type: object
  dto.RefundForm:
    properties:
      action:
        description: Action 处理动作（accept/reject）。
        type: string
      reason:
        description: Reason 退款原因/备注。
        type: string
    type: object
  dto.Settings:
    properties:
      avatar:
        description: Avatar 头像URL。
        type: string
      bio:
        description: Bio 频道简介。
        type: string
      cover:
        description: Cover 封面图URL。
        type: string
      description:
        description: Description 详细描述。
        type: string
      id:
        description: ID 租户/频道ID。
        type: integer
      name:
        description: Name 频道名称。
        type: string
    type: object
  dto.Stats:
    properties:
      contents:
        description: Contents 内容数。
        type: integer
      followers:
        description: Followers 粉丝数。
        type: integer
      likes:
        description: Likes 累计点赞数。
        type: integer
    type: object
  dto.SuperContentTenantLite:
    properties:
      code:
        description: Code 租户编码。
        type: string
      id:
        description: ID 租户ID。
        type: integer
      name:
        description: Name 租户名称。
        type: string
    type: object
  dto.SuperOrderDetail:
    properties:
      buyer:
        allOf:
        - $ref: '#/definitions/dto.OrderBuyerLite'
        description: Buyer 订单买家信息。
      order:
        allOf:
        - $ref: '#/definitions/dto.SuperOrderItem'
        description: Order 订单详细信息。
      tenant:
        allOf:
        - $ref: '#/definitions/dto.OrderTenantLite'
        description: Tenant 订单所属租户信息。
    type: object
  dto.SuperOrderItem:
    properties:
      amount_discount:
        description: AmountDiscount 优惠金额（分）。
        type: integer
      amount_original:
        description: AmountOriginal 原价金额（分）。
        type: integer
      amount_paid:
        description: AmountPaid 实付金额（分）。
        type: integer
      buyer:
        allOf:
        - $ref: '#/definitions/dto.OrderBuyerLite'
        description: Buyer 订单买家信息。
      created_at:
        description: CreatedAt 创建时间（RFC3339）。
        type: string
      currency:
        allOf:
        - $ref: '#/definitions/consts.Currency'
        description: Currency 币种。
      id:
        description: ID 订单ID。
        type: integer
      items:
        description: Items 订单明细行，用于展示具体内容与金额拆分。
        items:
          $ref: '#/definitions/dto.SuperOrderItemLine'
        type: array
      paid_at:
        description: PaidAt 支付时间（RFC3339）。
        type: string
      refunded_at:
        description: RefundedAt 退款时间（RFC3339）。
        type: string
      snapshot:
        description: Snapshot 订单快照，包含下单时的关键参数与定价信息，便于审计回溯。
      status:
        allOf:
        - $ref: '#/definitions/consts.OrderStatus'
        description: Status 订单状态。
      status_description:
        description: StatusDescription 状态描述（用于展示）。
        type: string
      tenant:
        allOf:
        - $ref: '#/definitions/dto.OrderTenantLite'
        description: Tenant 订单所属租户信息。
      type:
        allOf:
        - $ref: '#/definitions/consts.OrderType'
        description: Type 订单类型。
      updated_at:
        description: UpdatedAt 更新时间（RFC3339）。
        type: string
    type: object
  dto.SuperOrderItemLine:
    properties:
      amount_paid:
        description: AmountPaid 该明细实付金额（分）。
        type: integer
      content_id:
        description: ContentID 购买的内容ID。
        type: integer
      id:
        description: ID 订单明细ID。
        type: integer
      snapshot:
        description: Snapshot 明细快照，用于展示内容标题等历史信息。
    type: object
  dto.SuperOrderRefundForm:
    properties:
      force:
        description: Force 是否强制退款（忽略部分约束）。
        type: boolean
      idempotency_key:
        description: IdempotencyKey 幂等键（防止重复提交）。
        type: string
      reason:
        description: Reason 退款原因说明。
        type: string
    type: object
  dto.SuperTenantContentStatusUpdateForm:
    properties:
      status:
        allOf:
        - $ref: '#/definitions/consts.ContentStatus'
        description: Status 目标内容状态。
        enum:
        - unpublished
        - blocked
    required:
    - status
    type: object
  dto.SuperTenantUserItem:
    properties:
      tenant_user:
        allOf:
        - $ref: '#/definitions/dto.TenantUser'
        description: TenantUser 租户成员关系信息。
      user:
        allOf:
        - $ref: '#/definitions/dto.SuperUserLite'
        description: User 用户信息。
    type: object
  dto.SuperUserLite:
    properties:
      created_at:
        description: CreatedAt 创建时间（RFC3339）。
        type: string
      id:
        description: ID 用户ID。
        type: integer
      roles:
        description: Roles 用户角色列表。
        items:
          $ref: '#/definitions/consts.Role'
        type: array
      status:
        allOf:
        - $ref: '#/definitions/consts.UserStatus'
        description: Status 用户状态。
      status_description:
        description: StatusDescription 状态描述（用于展示）。
        type: string
      updated_at:
        description: UpdatedAt 更新时间（RFC3339）。
        type: string
      username:
        description: Username 用户名（用于识别/展示）。
        type: string
      verified_at:
        description: VerifiedAt 实名认证时间（RFC3339）。
        type: string
    type: object
  dto.TenantAdminUserLite:
    properties:
      id:
        description: ID 用户ID。
        type: integer
      username:
        description: Username 用户名。
        type: string
    type: object
  dto.TenantCreateForm:
    properties:
      admin_user_id:
        description: AdminUserID 租户管理员用户ID。
        type: integer
      code:
        description: Code 租户编码（唯一）。
        maxLength: 64
        type: string
      duration:
        description: Duration 租户有效期（天）。
        enum:
        - 7
        - 30
        - 90
        - 180
        - 365
        type: integer
      name:
        description: Name 租户名称。
        maxLength: 128
        type: string
    required:
    - admin_user_id
    - code
    - duration
    - name
    type: object
  dto.TenantExpireUpdateForm:
    properties:
      duration:
        description: Duration 延长有效期（天）。
        enum:
        - 7
        - 30
        - 90
        - 180
        - 365
        type: integer
    required:
    - duration
    type: object
  dto.TenantInviteAcceptForm:
    properties:
      code:
        description: Code 邀请码（必填）。
        type: string
    type: object
  dto.TenantInviteCreateForm:
    properties:
      expires_at:
        description: ExpiresAt 过期时间（RFC3339，可选，空值使用默认过期时间）。
        type: string
      max_uses:
        description: MaxUses 最大可使用次数（<=0 默认 1）。
        type: integer
      remark:
        description: Remark 备注说明（可选）。
        type: string
    type: object
  dto.TenantInviteItem:
    properties:
      code:
        description: Code 邀请码。
        type: string
      created_at:
        description: CreatedAt 创建时间（RFC3339）。
        type: string
      expires_at:
        description: ExpiresAt 过期时间（RFC3339，空字符串表示不限制）。
        type: string
      id:
        description: ID 邀请记录ID。
        type: integer
      max_uses:
        description: MaxUses 最大可使用次数。
        type: integer
      remark:
        description: Remark 备注说明。
        type: string
      status:
        description: Status 邀请状态（active/disabled/expired）。
        type: string
      used_count:
        description: UsedCount 已使用次数。
        type: integer
    type: object
  dto.TenantItem:
    properties:
      admin_users:
        description: AdminUsers 租户管理员列表。
        items:
          $ref: '#/definitions/dto.TenantAdminUserLite'
        type: array
      code:
        description: Code 租户编码。
        type: string
      config:
        description: Config 租户配置项（占位/需要结构化时替换）。
        items:
          type: integer
        type: array
      created_at:
        description: CreatedAt 创建时间（RFC3339）。
        type: string
      expired_at:
        description: ExpiredAt 租户过期时间（RFC3339）。
        type: string
      id:
        description: ID 租户ID。
        type: integer
      income_amount_paid_sum:
        description: IncomeAmountPaidSum 累计实收金额（分）。
        type: integer
      name:
        description: Name 租户名称。
        type: string
      owner:
        allOf:
        - $ref: '#/definitions/dto.TenantOwnerUserLite'
        description: Owner 租户所有者信息。
      status:
        allOf:
        - $ref: '#/definitions/consts.TenantStatus'
        description: Status 租户状态。
      status_description:
        description: StatusDescription 租户状态描述。
        type: string
      updated_at:
        description: UpdatedAt 更新时间（RFC3339）。
        type: string
      user_count:
        description: UserCount 租户成员数量。
        type: integer
      user_id:
        description: UserID 创建者用户ID。
        type: integer
      users:
        description: Users 租户成员列表（用于详情展示）。
        items:
          $ref: '#/definitions/dto.SuperUserLite'
        type: array
      uuid:
        description: UUID 租户UUID。
        type: string
    type: object
  dto.TenantJoinApplyForm:
    properties:
      reason:
        description: Reason 申请加入原因（可选，空值会使用默认文案）。
        type: string
    type: object
  dto.TenantJoinReviewForm:
    properties:
      action:
        description: Action 审核动作（approve/reject）。
        type: string
      reason:
        description: Reason 审核说明（可选，用于展示驳回原因或备注）。
        type: string
    type: object
  dto.TenantOwnerUserLite:
    properties:
      id:
        description: ID 用户ID。
        type: integer
      username:
        description: Username 用户名。
        type: string
    type: object
  dto.TenantProfile:
    properties:
      avatar:
        description: Avatar 头像URL。
        type: string
      bio:
        description: Bio 简短简介。
        type: string
      cert_type:
        description: CertType 认证类型（personal/enterprise）。
        type: string
      cover:
        description: Cover 封面图URL。
        type: string
      description:
        description: Description 详细描述。
        type: string
      id:
        description: ID 租户ID。
        type: integer
      is_following:
        description: IsFollowing 当前用户是否关注。
        type: boolean
      name:
        description: Name 租户名称。
        type: string
      stats:
        allOf:
        - $ref: '#/definitions/dto.Stats'
        description: Stats 统计信息。
    type: object
  dto.TenantStatusUpdateForm:
    properties:
      status:
        allOf:
        - $ref: '#/definitions/consts.TenantStatus'
        description: Status 目标租户状态。
    required:
    - status
    type: object
  dto.TenantUser:
    properties:
      created_at:
        description: CreatedAt 创建时间（RFC3339）。
        type: string
      id:
        description: ID 成员记录ID。
        type: integer
      role:
        description: Role 成员角色列表。
        items:
          $ref: '#/definitions/consts.TenantUserRole'
        type: array
      status:
        allOf:
        - $ref: '#/definitions/consts.UserStatus'
        description: Status 成员状态。
      tenant_id:
        description: TenantID 租户ID。
        type: integer
      updated_at:
        description: UpdatedAt 更新时间（RFC3339）。
        type: string
      user_id:
        description: UserID 用户ID。
        type: integer
    type: object
  dto.Topic:
    properties:
      count:
        description: Count 专题内内容数量。
        type: integer
      cover:
        description: Cover 专题封面图。
        type: string
      id:
        description: ID 专题ID。
        type: integer
      tag:
        description: Tag 专题标签（用于筛选/展示）。
        type: string
      title:
        description: Title 专题标题。
        type: string
    type: object
  dto.Transaction:
    properties:
      amount:
        description: Amount 发生金额（单位元）。
        type: number
      date:
        description: Date 发生时间（RFC3339）。
        type: string
      id:
        description: ID 流水ID。
        type: integer
      title:
        description: Title 流水标题/描述。
        type: string
      type:
        description: Type 流水类型（income/expense）。
        type: string
    type: object
  dto.UploadCompleteForm:
    properties:
      upload_id:
        description: UploadID 分片上传ID。
        type: string
    type: object
  dto.UploadInitForm:
    properties:
      filename:
        description: Filename 原始文件名。
        type: string
      hash:
        description: Hash 文件 MD5 哈希（用于秒传校验）。
        type: string
      mime_type:
        description: MimeType 文件类型（如 image/png）。
        type: string
      size:
        description: Size 文件大小（字节）。
        type: integer
      type:
        description: Type 业务类型（如 cover/media/avatar）。
        type: string
    type: object
  dto.UploadInitResponse:
    properties:
      chunk_size:
        description: ChunkSize 分片大小（字节）。
        type: integer
      key:
        description: Key 对象存储Key（S3 直传使用）。
        type: string
      upload_id:
        description: UploadID 分片上传ID。
        type: string
    type: object
  dto.UploadResult:
    properties:
      filename:
        description: Filename 原始文件名。
        type: string
      id:
        description: ID 媒体资源ID。
        type: integer
      mime_type:
        description: MimeType 文件类型（如 image/png）。
        type: string
      size:
        description: Size 文件大小（字节）。
        type: integer
      url:
        description: URL 访问地址（包含签名或公共URL）。
        type: string
    type: object
  dto.UserCouponItem:
    properties:
      coupon_id:
        description: CouponID 券模板ID。
        type: integer
      description:
        description: Description 券描述。
        type: string
      end_at:
        description: EndAt 过期时间（RFC3339）。
        type: string
      id:
        description: ID 用户券ID。
        type: integer
      min_order_amount:
        description: MinOrderAmount 使用门槛金额（分）。
        type: integer
      start_at:
        description: StartAt 生效时间（RFC3339）。
        type: string
      status:
        description: Status 当前状态（可用/已用/过期）。
        type: string
      title:
        description: Title 券标题。
        type: string
      type:
        description: Type 券类型（满减/折扣）。
        type: string
      value:
        description: Value 券面值（分/百分比）。
        type: integer
    type: object
  dto.UserItem:
    properties:
      balance:
        description: Balance 账户可用余额（分）。
        type: integer
      balance_frozen:
        description: BalanceFrozen 账户冻结余额（分）。
        type: integer
      created_at:
        description: CreatedAt 创建时间（RFC3339）。
        type: string
      id:
        description: ID 用户ID。
        type: integer
      joined_tenant_count:
        description: JoinedTenantCount 加入的租户数量。
        type: integer
      owned_tenant_count:
        description: OwnedTenantCount 拥有的租户数量。
        type: integer
      roles:
        description: Roles 用户角色列表。
        items:
          $ref: '#/definitions/consts.Role'
        type: array
      status:
        allOf:
        - $ref: '#/definitions/consts.UserStatus'
        description: Status 用户状态。
      status_description:
        description: StatusDescription 状态描述（用于展示）。
        type: string
      updated_at:
        description: UpdatedAt 更新时间（RFC3339）。
        type: string
      username:
        description: Username 用户名（用于识别/展示）。
        type: string
      verified_at:
        description: VerifiedAt 实名认证时间（RFC3339）。
        type: string
    type: object
  dto.UserRolesUpdateForm:
    properties:
      roles:
        description: Roles 目标角色列表（至少包含 1 个）。
        items:
          $ref: '#/definitions/consts.Role'
        minItems: 1
        type: array
    required:
    - roles
    type: object
  dto.UserStatistics:
    properties:
      count:
        description: Count 该状态用户数量。
        type: integer
      status:
        allOf:
        - $ref: '#/definitions/consts.UserStatus'
        description: Status 用户状态枚举。
      status_description:
        description: StatusDescription 状态描述（用于展示）。
        type: string
    type: object
  dto.UserStatusUpdateForm:
    properties:
      status:
        allOf:
        - $ref: '#/definitions/consts.UserStatus'
        description: Status 目标用户状态。
    required:
    - status
    type: object
  dto.UserTenantItem:
    properties:
      code:
        description: Code 租户编码。
        type: string
      expired_at:
        description: ExpiredAt 租户过期时间（RFC3339）。
        type: string
      joined_at:
        description: JoinedAt 加入时间（RFC3339）。
        type: string
      member_status:
        allOf:
        - $ref: '#/definitions/consts.UserStatus'
        description: MemberStatus 成员状态。
      member_status_description:
        description: MemberStatusDescription 成员状态描述。
        type: string
      name:
        description: Name 租户名称。
        type: string
      owner:
        allOf:
        - $ref: '#/definitions/dto.TenantOwnerUserLite'
        description: Owner 租户所有者用户信息。
      role:
        description: Role 用户在该租户内的角色列表。
        items:
          $ref: '#/definitions/consts.TenantUserRole'
        type: array
      tenant_id:
        description: TenantID 租户ID。
        type: integer
      tenant_status:
        allOf:
        - $ref: '#/definitions/consts.TenantStatus'
        description: TenantStatus 租户状态。
      tenant_status_description:
        description: TenantStatusDescription 租户状态描述。
        type: string
    type: object
  dto.UserUpdate:
    properties:
      avatar:
        description: Avatar 头像URL。
        type: string
      bio:
        description: Bio 个人简介。
        type: string
      birthday:
        description: Birthday 生日（YYYY-MM-DD）。
        type: string
      gender:
        allOf:
        - $ref: '#/definitions/consts.Gender'
        description: Gender 性别（枚举）。
      location:
        allOf:
        - $ref: '#/definitions/quyun_v2_app_http_v1_dto.Location'
        description: Location 地区信息（省/市）。
      nickname:
        description: Nickname 昵称。
        type: string
    type: object
  dto.WalletResponse:
    properties:
      balance:
        description: Balance 账户余额（单位元）。
        type: number
      transactions:
        description: Transactions 交易流水列表。
        items:
          $ref: '#/definitions/dto.Transaction'
        type: array
    type: object
  dto.WithdrawForm:
    properties:
      account_id:
        description: AccountID 收款账户ID。
        type: integer
      amount:
        description: Amount 提现金额（单位元）。
        type: number
      method:
        description: Method 提现方式（wallet/external）。
        type: string
    type: object
  quyun_v2_app_http_super_v1_dto.Location:
    properties:
      city:
        description: City 城市名称。
        type: string
      province:
        description: Province 省份名称。
        type: string
    type: object
  quyun_v2_app_http_super_v1_dto.LoginForm:
    properties:
      password:
        description: Password 登录密码（加密传输）。
        type: string
      username:
        description: Username 登录用户名。
        type: string
    type: object
  quyun_v2_app_http_super_v1_dto.LoginResponse:
    properties:
      token:
        description: Token 登录后签发的 JWT。
        type: string
      user:
        allOf:
        - $ref: '#/definitions/quyun_v2_app_http_super_v1_dto.User'
        description: User 当前登录用户信息。
    type: object
  quyun_v2_app_http_super_v1_dto.User:
    properties:
      avatar:
        description: Avatar 头像URL。
        type: string
      balance:
        description: Balance 账户余额（元）。
        type: number
      bio:
        description: Bio 用户简介。
        type: string
      birthday:
        description: Birthday 生日（YYYY-MM-DD）。
        type: string
      gender:
        allOf:
        - $ref: '#/definitions/consts.Gender'
        description: Gender 性别（male/female/secret）。
      id:
        description: ID 用户ID。
        type: integer
      is_real_name_verified:
        description: IsRealNameVerified 是否已实名认证。
        type: boolean
      location:
        allOf:
        - $ref: '#/definitions/quyun_v2_app_http_super_v1_dto.Location'
        description: Location 所在地（省/市）。
      nickname:
        description: Nickname 用户昵称。
        type: string
      phone:
        description: Phone 手机号。
        type: string
      points:
        description: Points 用户积分。
        type: integer
    type: object
  quyun_v2_app_http_v1_dto.Location:
    properties:
      city:
        description: City 城市名称。
        type: string
      province:
        description: Province 省份名称。
        type: string
    type: object
  quyun_v2_app_http_v1_dto.LoginForm:
    properties:
      otp:
        description: OTP 短信验证码。
        type: string
      phone:
        description: Phone 手机号（登录账号）。
        type: string
    type: object
  quyun_v2_app_http_v1_dto.LoginResponse:
    properties:
      token:
        description: Token 登录成功后的 JWT。
        type: string
      user:
        allOf:
        - $ref: '#/definitions/quyun_v2_app_http_v1_dto.User'
        description: User 当前登录用户信息。
    type: object
  quyun_v2_app_http_v1_dto.SendOTPForm:
    properties:
      phone:
        description: Phone 手机号（用于发送验证码）。
        type: string
    type: object
  quyun_v2_app_http_v1_dto.User:
    properties:
      avatar:
        description: Avatar 头像URL。
        type: string
      balance:
        description: Balance 余额（单位元）。
        type: number
      bio:
        description: Bio 个人简介。
        type: string
      birthday:
        description: Birthday 生日（YYYY-MM-DD）。
        type: string
      gender:
        allOf:
        - $ref: '#/definitions/consts.Gender'
        description: Gender 性别（枚举）。
      id:
        description: ID 用户ID。
        type: integer
      is_real_name_verified:
        description: IsRealNameVerified 是否完成实名认证。
        type: boolean
      location:
        allOf:
        - $ref: '#/definitions/quyun_v2_app_http_v1_dto.Location'
        description: Location 地区信息（省/市）。
      nickname:
        description: Nickname 昵称。
        type: string
      phone:
        description: Phone 绑定手机号。
        type: string
      points:
        description: Points 积分余额。
        type: integer
    type: object
  requests.KV:
    properties:
      key:
        description: Key is a machine-readable value, usually an enum string.
        type: string
      value:
        description: Value is the label payload, often a human-readable string.
    type: object
  requests.Pager:
    properties:
      items:
        description: Items is the paged result list; concrete type depends on endpoint.
      limit:
        description: Limit is page size; only values in {10,20,50,100} are accepted
          (otherwise defaults to 10).
        type: integer
      page:
        description: Page is 1-based page index; values <= 0 are normalized to 1.
        type: integer
      total:
        description: Total is the total number of items matching current filter (before
          paging).
        type: integer
    type: object
  v1.WebhookForm:
    properties:
      external_id:
        type: string
      order_id:
        type: integer
    type: object
externalDocs:
  description: OpenAPI
  url: https://swagger.io/resources/open-api/
host: localhost:8080
info:
  contact:
    email: support@swagger.io
    name: UserName
    url: http://www.swagger.io/support
  description: Multi-tenant media platform backend API.
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: http://swagger.io/terms/
  title: ApiDoc
  version: "1.0"
paths:
  /super/v1/auth/login:
    post:
      consumes:
      - application/json
      description: Login
      parameters:
      - description: Login form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/quyun_v2_app_http_super_v1_dto.LoginForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/quyun_v2_app_http_super_v1_dto.LoginResponse'
      summary: Login
      tags:
      - Auth
  /super/v1/auth/token:
    get:
      consumes:
      - application/json
      description: Check token
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/quyun_v2_app_http_super_v1_dto.LoginResponse'
      summary: Check token
      tags:
      - Auth
  /super/v1/contents:
    get:
      consumes:
      - application/json
      description: List contents
      parameters:
      - description: Page number
        in: query
        name: page
        type: integer
      - description: Page size
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.AdminContentItem'
                  type: array
              type: object
      summary: List contents
      tags:
      - Content
  /super/v1/orders:
    get:
      consumes:
      - application/json
      description: List orders
      parameters:
      - description: Page number
        in: query
        name: page
        type: integer
      - description: Page size
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.SuperOrderItem'
                  type: array
              type: object
      summary: List orders
      tags:
      - Order
  /super/v1/orders/{id}:
    get:
      consumes:
      - application/json
      description: Get order
      parameters:
      - description: Order ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.SuperOrderDetail'
      summary: Get order
      tags:
      - Order
  /super/v1/orders/{id}/refund:
    post:
      consumes:
      - application/json
      description: Refund order
      parameters:
      - description: Order ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Refund form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.SuperOrderRefundForm'
      produces:
      - application/json
      responses:
        "200":
          description: Refunded
          schema:
            type: string
      summary: Refund order
      tags:
      - Order
  /super/v1/orders/statistics:
    get:
      consumes:
      - application/json
      description: Order statistics
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.OrderStatisticsResponse'
      summary: Order statistics
      tags:
      - Order
  /super/v1/tenants:
    get:
      consumes:
      - application/json
      description: List tenants
      parameters:
      - description: Page number
        in: query
        name: page
        type: integer
      - description: Page size
        in: query
        name: limit
        type: integer
      - description: Name
        in: query
        name: name
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.TenantItem'
                  type: array
              type: object
      summary: List tenants
      tags:
      - Tenant
    post:
      consumes:
      - application/json
      description: Create tenant
      parameters:
      - description: Create form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.TenantCreateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Created
          schema:
            type: string
      summary: Create tenant
      tags:
      - Tenant
  /super/v1/tenants/{id}:
    get:
      consumes:
      - application/json
      description: Get tenant
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.TenantItem'
      summary: Get tenant
      tags:
      - Tenant
    patch:
      consumes:
      - application/json
      description: Update tenant expire
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Update form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.TenantExpireUpdateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update tenant expire
      tags:
      - Tenant
  /super/v1/tenants/{id}/status:
    patch:
      consumes:
      - application/json
      description: Update tenant status
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Update form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.TenantStatusUpdateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update tenant status
      tags:
      - Tenant
  /super/v1/tenants/{tenantID}/contents:
    get:
      consumes:
      - application/json
      description: List contents by tenant
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: tenantID
        required: true
        type: integer
      - description: Page number
        in: query
        name: page
        type: integer
      - description: Page size
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.AdminContentItem'
                  type: array
              type: object
      summary: List tenant contents
      tags:
      - Content
  /super/v1/tenants/{tenantID}/contents/{contentID}/status:
    patch:
      consumes:
      - application/json
      description: Update content status
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: tenantID
        required: true
        type: integer
      - description: Content ID
        format: int64
        in: path
        name: contentID
        required: true
        type: integer
      - description: Update form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.SuperTenantContentStatusUpdateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update content status
      tags:
      - Content
  /super/v1/tenants/{tenantID}/users:
    get:
      consumes:
      - application/json
      description: List tenant users
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: tenantID
        required: true
        type: integer
      - description: Page number
        in: query
        name: page
        type: integer
      - description: Page size
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.SuperTenantUserItem'
                  type: array
              type: object
      summary: List tenant users
      tags:
      - Tenant
  /super/v1/tenants/statuses:
    get:
      consumes:
      - application/json
      description: Tenant statuses
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/requests.KV'
            type: array
      summary: Tenant statuses
      tags:
      - Tenant
  /super/v1/users:
    get:
      consumes:
      - application/json
      description: List users
      parameters:
      - description: Page number
        in: query
        name: page
        type: integer
      - description: Page size
        in: query
        name: limit
        type: integer
      - description: Username
        in: query
        name: username
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.UserItem'
                  type: array
              type: object
      summary: List users
      tags:
      - User
  /super/v1/users/{id}:
    get:
      consumes:
      - application/json
      description: Get user
      parameters:
      - description: User ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.UserItem'
      summary: Get user
      tags:
      - User
  /super/v1/users/{id}/roles:
    patch:
      consumes:
      - application/json
      description: Update user roles
      parameters:
      - description: User ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Update form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.UserRolesUpdateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update user roles
      tags:
      - User
  /super/v1/users/{id}/status:
    patch:
      consumes:
      - application/json
      description: Update user status
      parameters:
      - description: User ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Update form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.UserStatusUpdateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update user status
      tags:
      - User
  /super/v1/users/{id}/tenants:
    get:
      consumes:
      - application/json
      description: List tenants joined by user
      parameters:
      - description: User ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Page number
        in: query
        name: page
        type: integer
      - description: Page size
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.UserTenantItem'
                  type: array
              type: object
      summary: List user tenants
      tags:
      - User
  /super/v1/users/statistics:
    get:
      consumes:
      - application/json
      description: User statistics
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.UserStatistics'
            type: array
      summary: User statistics
      tags:
      - User
  /super/v1/users/statuses:
    get:
      consumes:
      - application/json
      description: User statuses
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/requests.KV'
            type: array
      summary: User statuses
      tags:
      - User
  /t/{tenantCode}/v1/auth/login:
    post:
      consumes:
      - application/json
      description: Login or register user using phone number and OTP
      parameters:
      - description: Login form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/quyun_v2_app_http_v1_dto.LoginForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/quyun_v2_app_http_v1_dto.LoginResponse'
      summary: Login or Register with OTP
      tags:
      - Auth
  /t/{tenantCode}/v1/auth/otp:
    post:
      consumes:
      - application/json
      description: Send OTP to phone number
      parameters:
      - description: Phone number
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/quyun_v2_app_http_v1_dto.SendOTPForm'
      produces:
      - application/json
      responses:
        "200":
          description: OTP sent
          schema:
            type: string
      summary: Send OTP
      tags:
      - Auth
  /t/{tenantCode}/v1/comments/{id}/like:
    post:
      consumes:
      - application/json
      description: Like a comment
      parameters:
      - description: Comment ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Liked
          schema:
            type: string
      summary: Like comment
      tags:
      - Content
  /t/{tenantCode}/v1/common/options:
    get:
      consumes:
      - application/json
      description: Get global options (enums)
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.OptionsResponse'
      summary: Get options
      tags:
      - Common
  /t/{tenantCode}/v1/contents:
    get:
      consumes:
      - application/json
      description: List contents with filtering and pagination
      parameters:
      - description: Search keyword
        in: query
        name: keyword
        type: string
      - description: Genre
        in: query
        name: genre
        type: string
      - description: Filter by creator
        format: int64
        in: query
        name: tenant_id
        type: integer
      - description: Sort order
        enum:
        - latest
        - hot
        - price_asc
        in: query
        name: sort
        type: string
      - description: Page number
        in: query
        name: page
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.ContentItem'
                  type: array
              type: object
      summary: List contents
      tags:
      - Content
  /t/{tenantCode}/v1/contents/{id}:
    get:
      consumes:
      - application/json
      description: Get content detail by ID
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.ContentDetail'
      summary: Get content detail
      tags:
      - Content
  /t/{tenantCode}/v1/contents/{id}/comments:
    get:
      consumes:
      - application/json
      description: Get comments for a content
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Page number
        in: query
        name: page
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.Comment'
                  type: array
              type: object
      summary: Get comments
      tags:
      - Content
    post:
      consumes:
      - application/json
      description: Post a comment to a content
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Comment form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.CommentCreateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Comment created
          schema:
            type: string
      summary: Post comment
      tags:
      - Content
  /t/{tenantCode}/v1/contents/{id}/favorite:
    delete:
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      responses:
        "200":
          description: Unfavorited
          schema:
            type: string
      summary: Remove favorite
      tags:
      - Content
    post:
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      responses:
        "200":
          description: Favorited
          schema:
            type: string
      summary: Add favorite
      tags:
      - Content
  /t/{tenantCode}/v1/contents/{id}/like:
    delete:
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      responses:
        "200":
          description: Unliked
          schema:
            type: string
      summary: Remove like
      tags:
      - Content
    post:
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      responses:
        "200":
          description: Liked
          schema:
            type: string
      summary: Add like
      tags:
      - Content
  /t/{tenantCode}/v1/creator/apply:
    post:
      consumes:
      - application/json
      description: Apply to become a creator
      parameters:
      - description: Apply form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.ApplyForm'
      produces:
      - application/json
      responses:
        "200":
          description: Application submitted
          schema:
            type: string
      summary: Apply creator
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/contents:
    get:
      consumes:
      - application/json
      description: List creator contents
      parameters:
      - description: Status
        in: query
        name: status
        type: string
      - description: Genre
        in: query
        name: genre
        type: string
      - description: Keyword
        in: query
        name: keyword
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.ContentItem'
            type: array
      summary: List contents
      tags:
      - CreatorCenter
    post:
      consumes:
      - application/json
      description: Create/Publish content
      parameters:
      - description: Content form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.ContentCreateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Created
          schema:
            type: string
      summary: Create content
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/contents/{id}:
    delete:
      consumes:
      - application/json
      description: Delete content
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Deleted
          schema:
            type: string
      summary: Delete content
      tags:
      - CreatorCenter
    get:
      consumes:
      - application/json
      description: Get content details for edit
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.ContentEditDTO'
      summary: Get content
      tags:
      - CreatorCenter
    put:
      consumes:
      - application/json
      description: Update content
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Update form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.ContentUpdateForm'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update content
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/dashboard:
    get:
      consumes:
      - application/json
      description: Get creator dashboard stats
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.DashboardStats'
      summary: Dashboard stats
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/members/{id}/review:
    post:
      consumes:
      - application/json
      description: Approve or reject a tenant join request
      parameters:
      - description: Join request ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Review form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.TenantJoinReviewForm'
      produces:
      - application/json
      responses:
        "200":
          description: Reviewed
          schema:
            type: string
      summary: Review join request
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/members/invite:
    post:
      consumes:
      - application/json
      description: Create an invite for tenant members
      parameters:
      - description: Invite form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.TenantInviteCreateForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.TenantInviteItem'
      summary: Create member invite
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/orders:
    get:
      consumes:
      - application/json
      description: List sales orders
      parameters:
      - description: Status
        in: query
        name: status
        type: string
      - description: Keyword
        in: query
        name: keyword
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.Order'
            type: array
      summary: List sales orders
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/orders/{id}/refund:
    post:
      consumes:
      - application/json
      description: Process refund
      parameters:
      - description: Order ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Refund form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.RefundForm'
      produces:
      - application/json
      responses:
        "200":
          description: Processed
          schema:
            type: string
      summary: Process refund
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/payout-accounts:
    delete:
      consumes:
      - application/json
      description: Remove payout account
      parameters:
      - description: Account ID
        format: int64
        in: query
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Removed
          schema:
            type: string
      summary: Remove payout account
      tags:
      - CreatorCenter
    get:
      consumes:
      - application/json
      description: List payout accounts
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.PayoutAccount'
            type: array
      summary: List payout accounts
      tags:
      - CreatorCenter
    post:
      consumes:
      - application/json
      description: Add payout account
      parameters:
      - description: Account form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.PayoutAccount'
      produces:
      - application/json
      responses:
        "200":
          description: Added
          schema:
            type: string
      summary: Add payout account
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/settings:
    get:
      consumes:
      - application/json
      description: Get channel settings
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.Settings'
      summary: Get settings
      tags:
      - CreatorCenter
    put:
      consumes:
      - application/json
      description: Update channel settings
      parameters:
      - description: Settings form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.Settings'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update settings
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creator/withdraw:
    post:
      consumes:
      - application/json
      description: Request withdrawal
      parameters:
      - description: Withdraw form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.WithdrawForm'
      produces:
      - application/json
      responses:
        "200":
          description: Withdrawal requested
          schema:
            type: string
      summary: Request withdrawal
      tags:
      - CreatorCenter
  /t/{tenantCode}/v1/creators/{id}/contents:
    get:
      consumes:
      - application/json
      description: List contents of a specific creator
      parameters:
      - description: Creator User ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Page
        in: query
        name: page
        type: integer
      - description: Limit
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/requests.Pager'
      summary: List creator contents
      tags:
      - TenantPublic
  /t/{tenantCode}/v1/me:
    get:
      consumes:
      - application/json
      description: Get current user profile
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/quyun_v2_app_http_v1_dto.User'
      summary: Get user profile
      tags:
      - UserCenter
    put:
      consumes:
      - application/json
      description: Update user profile
      parameters:
      - description: Update form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.UserUpdate'
      produces:
      - application/json
      responses:
        "200":
          description: Updated
          schema:
            type: string
      summary: Update user profile
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/coupons:
    get:
      consumes:
      - application/json
      description: List my coupons
      parameters:
      - description: Status (unused, used, expired)
        in: query
        name: status
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.UserCouponItem'
            type: array
      summary: List coupons
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/favorites:
    get:
      consumes:
      - application/json
      description: Get favorites
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.ContentItem'
            type: array
      summary: Get favorites
      tags:
      - UserCenter
    post:
      consumes:
      - application/json
      description: Add to favorites
      parameters:
      - description: Content ID
        format: int64
        in: query
        name: contentId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Added
          schema:
            type: string
      summary: Add favorite
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/favorites/{contentId}:
    delete:
      consumes:
      - application/json
      description: Remove from favorites
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: contentId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Removed
          schema:
            type: string
      summary: Remove favorite
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/following:
    get:
      consumes:
      - application/json
      description: Get following tenants
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.TenantProfile'
            type: array
      summary: Get following
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/library:
    get:
      consumes:
      - application/json
      description: Get purchased content
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.ContentItem'
            type: array
      summary: Get library
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/likes:
    get:
      consumes:
      - application/json
      description: Get liked contents
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.ContentItem'
            type: array
      summary: Get likes
      tags:
      - UserCenter
    post:
      consumes:
      - application/json
      description: Like content
      parameters:
      - description: Content ID
        format: int64
        in: query
        name: contentId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Liked
          schema:
            type: string
      summary: Like content
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/likes/{contentId}:
    delete:
      consumes:
      - application/json
      description: Unlike content
      parameters:
      - description: Content ID
        format: int64
        in: path
        name: contentId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Unliked
          schema:
            type: string
      summary: Unlike content
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/notifications:
    get:
      consumes:
      - application/json
      description: Get notifications
      parameters:
      - description: Type enum(all, system, order, audit, interaction)
        in: query
        name: type
        type: string
      - description: Page number
        in: query
        name: page
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/requests.Pager'
            - properties:
                items:
                  items:
                    $ref: '#/definitions/dto.Notification'
                  type: array
              type: object
      summary: Get notifications
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/notifications/{id}/read:
    post:
      consumes:
      - application/json
      parameters:
      - description: Notification ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            type: string
      summary: Mark as read
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/notifications/read-all:
    post:
      consumes:
      - application/json
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            type: string
      summary: Mark all as read
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/orders:
    get:
      consumes:
      - application/json
      description: List user orders
      parameters:
      - description: Status enum(all, unpaid, completed, refund)
        in: query
        name: status
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.Order'
            type: array
      summary: List orders
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/orders/{id}:
    get:
      consumes:
      - application/json
      description: Get user order detail
      parameters:
      - description: Order ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.Order'
      summary: Get order detail
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/realname:
    post:
      consumes:
      - application/json
      description: Submit real-name authentication
      parameters:
      - description: Realname form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.RealNameForm'
      produces:
      - application/json
      responses:
        "200":
          description: Submitted
          schema:
            type: string
      summary: Realname auth
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/wallet:
    get:
      consumes:
      - application/json
      description: Get wallet balance and transactions
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.WalletResponse'
      summary: Get wallet
      tags:
      - UserCenter
  /t/{tenantCode}/v1/me/wallet/recharge:
    post:
      consumes:
      - application/json
      description: Recharge wallet
      parameters:
      - description: Recharge form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.RechargeForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.RechargeResponse'
      summary: Recharge wallet
      tags:
      - UserCenter
  /t/{tenantCode}/v1/media-assets/{id}:
    delete:
      consumes:
      - application/json
      description: Delete media asset
      parameters:
      - description: Asset ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            type: string
      summary: Delete media asset
      tags:
      - Common
  /t/{tenantCode}/v1/orders:
    post:
      consumes:
      - application/json
      description: Create Order
      parameters:
      - description: Create form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.OrderCreateForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.OrderCreateResponse'
      summary: Create Order
      tags:
      - Transaction
  /t/{tenantCode}/v1/orders/{id}/pay:
    post:
      consumes:
      - application/json
      description: Pay for order
      parameters:
      - description: Order ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Pay form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.OrderPayForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.OrderPayResponse'
      summary: Pay for order
      tags:
      - Transaction
  /t/{tenantCode}/v1/orders/{id}/status:
    get:
      consumes:
      - application/json
      description: Check order payment status
      parameters:
      - description: Order ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.OrderStatusResponse'
      summary: Check order status
      tags:
      - Transaction
  /t/{tenantCode}/v1/storage/{any}:
    get:
      consumes:
      - application/json
      parameters:
      - description: any path
        in: path
        name: any
        type: string
      - description: Expiry
        in: query
        name: expires
        required: true
        type: string
      - description: Signature
        in: query
        name: sign
        required: true
        type: string
      produces:
      - application/octet-stream
      responses:
        "200":
          description: OK
          schema:
            type: file
      summary: Download file
      tags:
      - Storage
    put:
      consumes:
      - application/octet-stream
      parameters:
      - description: any path
        in: path
        name: any
        type: string
      - description: Expiry
        in: query
        name: expires
        required: true
        type: string
      - description: Signature
        in: query
        name: sign
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: success
          schema:
            type: string
      summary: Upload file
      tags:
      - Storage
  /t/{tenantCode}/v1/tenants:
    get:
      consumes:
      - application/json
      description: Search tenants
      parameters:
      - description: Keyword
        in: query
        name: keyword
        type: string
      - description: Page
        in: query
        name: page
        type: integer
      - description: Limit
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/requests.Pager'
      summary: List tenants
      tags:
      - TenantPublic
  /t/{tenantCode}/v1/tenants/{id}:
    get:
      consumes:
      - application/json
      description: Get tenant public profile
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.TenantProfile'
      summary: Get tenant profile
      tags:
      - TenantPublic
  /t/{tenantCode}/v1/tenants/{id}/follow:
    delete:
      consumes:
      - application/json
      description: Unfollow a tenant
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Unfollowed
          schema:
            type: string
      summary: Unfollow tenant
      tags:
      - TenantPublic
    post:
      consumes:
      - application/json
      description: Follow a tenant
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Followed
          schema:
            type: string
      summary: Follow tenant
      tags:
      - TenantPublic
  /t/{tenantCode}/v1/tenants/{id}/invites/accept:
    post:
      consumes:
      - application/json
      description: Accept a tenant invite by code
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Invite form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.TenantInviteAcceptForm'
      produces:
      - application/json
      responses:
        "200":
          description: Accepted
          schema:
            type: string
      summary: Accept tenant invite
      tags:
      - TenantPublic
  /t/{tenantCode}/v1/tenants/{id}/join:
    delete:
      consumes:
      - application/json
      description: Cancel join request for a tenant
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Canceled
          schema:
            type: string
      summary: Cancel join request
      tags:
      - TenantPublic
    post:
      consumes:
      - application/json
      description: Submit join request for a tenant
      parameters:
      - description: Tenant ID
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: Join form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.TenantJoinApplyForm'
      produces:
      - application/json
      responses:
        "200":
          description: Applied
          schema:
            type: string
      summary: Apply to join tenant
      tags:
      - TenantPublic
  /t/{tenantCode}/v1/topics:
    get:
      consumes:
      - application/json
      description: List curated topics
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.Topic'
            type: array
      summary: List topics
      tags:
      - Content
  /t/{tenantCode}/v1/upload:
    post:
      consumes:
      - multipart/form-data
      description: Upload file
      parameters:
      - description: File
        in: formData
        name: file
        required: true
        type: file
      - description: Type 上传资源类型（如 cover/media/avatar）。
        in: formData
        name: type
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.UploadResult'
      summary: Upload file
      tags:
      - Common
  /t/{tenantCode}/v1/upload/{uploadId}:
    delete:
      consumes:
      - application/json
      description: Abort multipart upload
      parameters:
      - description: Upload ID
        in: path
        name: uploadId
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            type: string
      summary: Abort upload
      tags:
      - Common
  /t/{tenantCode}/v1/upload/check:
    get:
      consumes:
      - application/json
      description: Check if file hash exists
      parameters:
      - description: File MD5 Hash
        in: query
        name: hash
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.UploadResult'
      summary: Check hash
      tags:
      - Common
  /t/{tenantCode}/v1/upload/complete:
    post:
      consumes:
      - application/json
      description: Complete multipart upload
      parameters:
      - description: Complete form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.UploadCompleteForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.UploadResult'
      summary: Complete upload
      tags:
      - Common
  /t/{tenantCode}/v1/upload/init:
    post:
      consumes:
      - application/json
      description: Initialize multipart upload
      parameters:
      - description: Init form
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/dto.UploadInitForm'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.UploadInitResponse'
      summary: Init multipart upload
      tags:
      - Common
  /t/{tenantCode}/v1/upload/part:
    post:
      consumes:
      - multipart/form-data
      description: Upload a part
      parameters:
      - description: Part File
        in: formData
        name: file
        required: true
        type: file
      - description: PartNumber 分片序号（从 1 开始）。
        in: formData
        name: part_number
        type: integer
      - description: UploadID 分片上传ID。
        in: formData
        name: upload_id
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            type: string
      summary: Upload part
      tags:
      - Common
  /t/{tenantCode}/v1/webhook/payment/notify:
    post:
      consumes:
      - application/json
      description: Payment Webhook
      parameters:
      - description: Webhook Data
        in: body
        name: form
        required: true
        schema:
          $ref: '#/definitions/v1.WebhookForm'
      produces:
      - application/json
      responses:
        "200":
          description: success
          schema:
            type: string
      summary: Payment Webhook
      tags:
      - Transaction
securityDefinitions:
  BasicAuth:
    type: basic
swagger: "2.0"
