Skip to content

说明

采用RESTFul 风格API

  • Request

    • Method: 表示对资源操作.

    • Path:表示资源.

    • Headers公共请求头:

      • Content-Type: 表示发送的payload的类型,默认为: application/json

      • span_token: 请求追踪ID,客户端传入方便追踪用户操作,从而定位问题,如果不传,后端则会生成。

      • password: 访问令牌,由 获取会话 接口提供

      • terminal: 用户设备数据上报,格式为json字符串,包含以下字段:

      json5
        {
          "package_id": "com.example.myapp", // 包名
          "version": "1.0.0", // 应用版本
          "ip": "192.168.1.1", // ip地址
          "country": "US", // 国家
          "language": "en", // 语言
          "vpn_user": true, // 是否vpn用户
          "dev_type": "Android",// 设备类型 ios android
          "os_version": "Android 13", // 操作系统版本
          "device_model": "Samsung Galaxy S22",// 设备型号
          "network_type": "WIFI", // 网络类型
          "client_time": "2025-06-20 13:38:28", // 客户端时间
        }
      • venue: 平台,ios或者android

      • trigger_sort: 来源类型,用于归因

  • Response: 采用Http状态码+自定义错误响应来表示

    • 100-199协议层面,无需处理

    • 200-299表示成功,部分无需返回结果的业务以返回的http状态码作为依据

    • 300-399相关跳转

    • 400-499500-599响应错误:

      • 返回给客户端错误信息结构如下:
        json5
        {
          "timestamp": 1747312781642, // 时间戳
          "status": 503, // http code
          "trace_id": "T-OrCEGtFR5fsM", // 追踪id
          "code": 10, // 业务code
          "path": "/accounts:invite", // 路径
          "error": "服务异常"  // 错误信息
        }

API列表

获取页面布局(根据语言)

  • Request

    • Path: /marquees/:layout_type/sectors/:place

    • Method: get

    • PathVariable:

      • layout_type:页面类型,home(首页),ranking(排行榜),playbill(剧单页)

      • place:语言

  • Response

    • Body
    json5
    {
      "marquee": "${@body._embedded.poster}" // 详见页面布局新数据接口
    }

    示例值:

    json5
    {
      "marquee": []
    }

获取建议配置

  • Request

    • Path: /persona/pointers

    • Method: get

  • Response

    • Body
    json5
    {
      "proposal_prefs": "${@body._embedded.advice_setting}" // 配置的建议词
    }

    示例值:

    json5
    {
      "proposal_prefs": ["x","xx"]
    }

上报用户建议

  • Request

    • Path: /persona/pointers/elevate

    • Method: post

    • Body:

    json5
    {
      "pointers": "${@body.advices}", // 建议
      "bonus_hints": "${@body.more_advice}" // 更多建议
    }

    示例值:

    json5
    {
      "pointers": ["x","xx"],
      "bonus_hints": ""
    }
  • Response

    • Status: 200

批量删除观看

  • Request

    • Path: /persona/chunks/seen

    • Method: delete

    • Body:

    json5
    [
      {
        "portion_token": "${@$.episode_id}", // 剧id
        "place": "${@$.language}" // 语言
      }
    ]

    示例值:

    json5
    [
      {
        "portion_token": 0,
        "place": ""
      }
    ]
  • Response

    • Status: 200

批量删除收藏

  • Request

    • Path: /persona/chunks/preferred

    • Method: delete

    • Body:

    json5
    [
      {
        "portion_token": "${@$.episode_id}", // 剧id
        "place": "${@$.language}" // 语言
      }
    ]

    示例值:

    json5
    [
      {
        "portion_token": 0,
        "place": ""
      }
    ]
  • Response

    • Status: 200

获取用户某个短剧的收藏情况

  • Request

    • Path: /persona/chunks/:portion_token/sectors/:place/preferred

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • place:语言

  • Response

    • Body
    json5
    {
      "portion_token": "${@body.episode_id}", // 剧id
      "place": "${@body.language}", // 语言
      "endorsed": "${@body.is_favored}", // 是否收藏
      "prev_visit_time": "${@body.user_watched_last}" // 最新观看时间
    }

    示例值:

    json5
    {
      "portion_token": 1,
      "place": "en",
      "endorsed": true,
      "prev_visit_time": 123
    }

获取收藏记录

  • Request

    • Path: /persona/preferred

    • Method: get

    • QueryParams:

      • sheet:页码

      • article_amount:页大小

      • place:语言

  • Response

    • Body
    json5
    {
      "sheet": "${@body.page}", // 页码
      "article_amount": "${@body.page_size}", // 页大小
      "preferred": [ // _embedded.favored
        {
          "portion_token": "${@$.episode_id}", // 剧id
          "place": "${@$.language}", // 语言
          "episode_num": "${@$.part_index}", // 集数
          "full_duration": "${@$.total_duration}", // 总时长
          "fragment_amount": "${@$.episode_count}", // 总集数
          "index_pic": "${@$.cover}", // 封面
          "property": "${@$.feature}", // 特征
          "modes": "${@$.categories}", // 分类
          "preamble": "${@$.title}", // 标题
          "abridgment": "${@$.intro}", // 简介
          "specifics": "${@$.description}", // 详情
          "tickets": "${@$.tags}" // 标签
        }
      ]
    }

    示例值:

    json5
    {
      "sheet": 1,
      "article_amount": 12,
      "preferred": [
        {
          "portion_token": 1,
          "place": "",
          "episode_num": 1,
          "full_duration": 1.1,
          "fragment_amount": 10,
          "index_pic": "",
          "property": "",
          "modes": ["",""],
          "preamble": "",
          "abridgment": "",
          "specifics": "x",
          "tickets": ["",""]
        }
      ]
    }

获取用户某个短剧的观看情况

  • Request

    • Path: /persona/seen/chunks/:portion_token/sectors/:place

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • place:语言

  • Response

    • Body
    json5
    {
      "portion_token": "${@body.episode_id}", // 剧id
      "episode_num": "${@body.part_index}", // 集数
      "place": "${@body.language}", // 语言
      "flux_qty": "${@body.play_times}", // 播放次数
      "debut_time": "${@body.started_at}", // 开始播放时间
      "ended_timestamp": "${@body.finished_at}" // 观看完成时间
    }

    示例值:

    json5
    {
      "portion_token": 1,
      "episode_num": 1,
      "place": "en",
      "flux_qty": 1,
      "debut_time": 123,
      "ended_timestamp": 122
    }

获取观看记录

  • Request

    • Path: /persona/seen

    • Method: get

    • QueryParams:

      • sheet:页码

      • article_amount:页大小

      • place:语言

  • Response

    • Body
    json5
    {
      "sheet": "${@body.page}", // 页码
      "article_amount": "${@body.page_size}", // 页大小
      "seen": [ // _embedded.watched
        {
          "portion_token": "${@$.episode_id}", // 剧id
          "place": "${@$.language}", // 语言
          "episode_num": "${@$.part_index}", // 集数
          "debut_time": "${@$.started_at}", // 开始播放时间
          "full_duration": "${@$.total_duration}", // 总时长
          "fragment_amount": "${@$.episode_count}", // 总集数
          "property": "${@$.feature}", // 特征
          "endorsed": "${@$.is_favored}", // 是否收藏
          "index_pic": "${@$.cover}", // 封面
          "modes": "${@$.categories}", // 分类
          "preamble": "${@$.title}", // 标题
          "abridgment": "${@$.intro}", // 简介
          "flux_qty": "${@$.play_times}", // 播放次数
          "tickets": "${@$.tags}" // 标签
        }
      ]
    }

    示例值:

    json5
    {
      "sheet": 1,
      "article_amount": 12,
      "seen": [
        {
          "portion_token": 1,
          "place": "",
          "episode_num": 1,
          "debut_time": 12,
          "full_duration": 1.1,
          "fragment_amount": 1,
          "property": "",
          "endorsed": true,
          "index_pic": "",
          "modes": ["",""],
          "preamble": "xx",
          "abridgment": "x",
          "flux_qty": 11,
          "tickets": ["",""]
        }
      ]
    }

获取短剧剧集

  • Request

    • Path: /chunks/:portion_token/sectors/:place/set

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • place:语言

  • Response

    • Body
    json5
    {
      "portion_token": "${@body.episode_id}", // 剧id
      "place": "${@body.language}", // 语言
      "preamble": "${@body.title}", // 标题
      "abridgment": "${@body.intro}", // 简介 
      "endorsed": "${@body.is_favored}", // 是否收藏
      "prev_visit_time": "${@body.user_watched_last}", // 最新观看时间
      "permission_rules": { // unlock_setting 全局解锁配置
        "currency_each_entry": "${@body.unlock_setting.coins_single_consume}", // 解锁需要的金币
        "added_for_view": "${@body.unlock_setting.bonus_single_consume}" // 解锁需要的代币
      },
      "set": [ // _embedded.playlist
        {
          "identity_code": "${@$.id}", // id
          "portion_token": "${@$.episode_id}", // 剧id
          "episode_num": "${@$.part_index}", // 集数
          "place": "${@$.language}", // 语言
          "agree_figure": "${@$.likes}", // 喜欢数
          "allowance": "${@$.coins}", // 解锁需要的金币数
          "premiums": "${@$.bonus}", // 解锁需要的代币数
          "range": "${@$.duration}", // 时长
          "abridgment": "${@$.intro}", // 简介
          "specifics": "${@$.description}", // 详情
          "snippet": "${@$.thumbnail}", // 缩略图
          "film_flow": "${@$.stream_hls}", // hls播放地址
          "chunk_torrent": "${@$.stream_dash}", // dash播放地址
          "gaze_sum": "${@$.watch_times}", // 观看次数
          "admission": "${@$.unlock}" // 是否解锁
        }
      ]
    }

    示例值:

    json5
    {
      "portion_token": 1,
      "place": "x",
      "preamble": "xx",
      "abridgment": "xx",
      "endorsed": true,
      "prev_visit_time": 122,
      "permission_rules": {
        "currency_each_entry": 100,
        "added_for_view": 100
      },
      "set": [
        {
          "identity_code": 3,
          "portion_token": 2,
          "episode_num": 1,
          "place": "en",
          "agree_figure": 11,
          "allowance": 100,
          "premiums": 100,
          "range": 1.1,
          "abridgment": "xx",
          "specifics": "xxx",
          "snippet": "xx",
          "film_flow": "xxx",
          "chunk_torrent": "xxx",
          "gaze_sum": 11,
          "admission": true
        }
      ]
    }

获取用户推荐剧列表

  • Request

    • Path: /persona/chunks/sectors/:place/propose

    • Method: get

    • PathVariable:

      • place:语言
    • QueryParams:

      • computation:数量
  • Response

    • Body
    json5
    {
      "pick_list": [ // _embedded.recommend_list
        {
          "portion_token": "${@$.episode_id}", // 剧集ID
          "place": "${@$.language}", // 语言
          "preamble": "${@$.title}",
          "abridgment": "${@$.intro}",
          "endorsed": "${@$.is_favored}", // 是否收藏
          "prev_visit_time": "${@$.user_watched_last}", // 最近观看
          "permission_rules": {
            "currency_each_entry": "${@$.unlock_setting.coins_single_consume}", // 解锁需要的金币
            "added_for_view": "${@$.unlock_setting.bonus_single_consume}" // 解锁需要的代币
          },
          "set": [ // _embedded.playlist
            {
              "identity_code": "${@$.id}", // ID
              "portion_token": "${@$.episode_id}", // 剧集ID
              "episode_num": "${@$.part_index}", // 集数
              "place": "${@$.language}", // 语言
              "allowance": "${@$.coins}", // 解锁需要的金币数
              "premiums": "${@$.bonus}", // 解锁需要的代币数
              "agree_figure": "${@$.likes}", // 点赞数
              "range": "${@$.duration}", // 时长
              "abridgment": "${@$.intro}", // 简介
              "specifics": "${@$.description}", // 描述
              "snippet": "${@$.thumbnail}", // 缩略图
              "film_flow": "${@$.stream_hls}", // HLS流
              "chunk_torrent": "${@$.stream_dash}", // DASH流
              "gaze_sum": "${@$.watch_times}", // 观看次数
              "admission": "${@$.unlock}" // 是否解锁
            }
          ]
        }
      ]
    }

    示例值:

    json5
    {
      "pick_list": [
        {
          "portion_token": 0,
          "place": "",
          "preamble": "",
          "abridgment": "",
          "endorsed": true,
          "prev_visit_time": 0,
          "permission_rules": {
            "currency_each_entry": 0,
            "added_for_view": 0
          },
          "set": [
            {
              "identity_code": 0,
              "portion_token": 0,
              "episode_num": 0,
              "place": "en",
              "allowance": 0,
              "premiums": 0,
              "agree_figure": 0,
              "range": 0.0,
              "abridgment": "",
              "specifics": "",
              "snippet": "",
              "film_flow": "",
              "chunk_torrent": "",
              "gaze_sum": 0,
              "admission": true
            }
          ]
        }
      ]
    }

获取短剧详情

  • Request

    • Path: /chunks/:portion_token/sectors/:place/specifics

    • PathVariable:

      • portion_token:剧id

      • place:语言

    • Method: get

  • Response

    • Body
    json5
    {
      "portion_token": "${@body.episode_id}", // 剧id
      "place": "${@body.language}", // 语言
      "preamble": "${@body.title}", // 标题
      "full_duration": "${@body.total_duration}", // 总时长
      "fragment_amount": "${@body.episode_count}", // 总集数
      "pro_bono_calc": "${@body.free_count}", // 免费集数
      "abridgment": "${@body.intro}", // 简介
      "specifics": "${@body.description}", // 详情
      "aux_title": "${@body.subtitle}", // 副标题
      "tickets": "${@body.tags}", // 标签
      "sector_complete": "${@body.is_episode_end}" // 是否完结
    }

    示例值:

    json5
    {
      "portion_token": 1,
      "place": "en",
      "preamble": "",
      "full_duration": 1.1,
      "fragment_amount": 1,
      "pro_bono_calc": 1,
      "abridgment": "",
      "specifics": "",
      "aux_title": "",
      "tickets": ["x","xx"],
      "sector_complete": true
    }

获取短剧

  • Request

    • Path: /chunks/:portion_token

    • PathVariable:

      • portion_token:剧id
    • Method: get

  • Response

    • Body
    json5
    {
      "identity_code": "${@body.id}", // id
      "index_pic": "${@body.cover}", // 封面
      "saves_sum": "${@body.bookmarks_count}",  // 收藏数
      "standing": "${@body.grade}", // 评分
      "modes": "${@body.categories}", // 分类
      "native_zone": "${@body.default_lang}", // 语言
      "launch_timestamp": "${@body.released_at}" // 更新时间
    }

    示例值:

    json5
    {
      "identity_code": 1,
      "index_pic": "xxx",
      "saves_sum": 10,
      "standing": 1.0,
      "modes": ["x","xx"],
      "native_zone": "en",
      "launch_timestamp": 123
    }

结束播放短剧

  • Request

    • Path: /chunks/:portion_token/sectors/:place/sections/:episode_num/flux/finished

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • episode_num:第几集

      • place:语言

  • Response

    • Status: 200

开始播放短剧

  • Request

    • Path: /chunks/:portion_token/sectors/:place/sections/:episode_num/flux/functioning

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • episode_num:第几集

      • place:语言

  • Response

    • Status: 200

用户取消收藏短剧

  • Request

    • Path: /persona/chunks/:portion_token/sectors/:place/unsave

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • place:语言

  • Response

    • Status: 200

用户收藏短剧

  • Request

    • Path: /persona/chunks/:portion_token/sectors/:place/shortcut

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • place:语言

  • Response

    • Status: 200

用户分享短剧

  • Request

    • Path: /persona/chunks/:portion_token/sectors/:place/dispersed

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • place:语言

  • Response

    • Status: 200

获取年龄

  • Request

    • Path: /maturity_levels

    • Method: get

  • Response

    • Body
    json5
    {
      "participant_history": "${@body._embedded.ages}" // 词典数据列表
    }

    示例值:

    json5
    {
      "participant_history": []
    }

修改个人详情

  • Request

    • Path: /account_bio/vary

    • Method: patch

    • Body:

    json5
    {
      "nickname": "${@body.nickname}", // 昵称
      "user_pic": "${@body.avatar}", // 头像
      "era_argument": "${@body.age}", // 年龄
      "identity_group": "${@body.sex}" // 性别
    }

    示例值:

    json5
    {
      "nickname": "",
      "user_pic": "",
      "era_argument": "",
      "identity_group": ""
    }
  • Response

    • Status: 200

获取个人详情

  • Request

    • Path: /account_bio

    • Method: get

  • Response

    • Body
    json5
    {
      "member_tag": "${@body.user_id}", // 用户id
      "nickname": "${@body.nickname}", // 昵称
      "user_pic": "${@body.avatar}", // 头像
      "era_argument": "${@body.age}", // 年龄
      "identity_group": "${@body.sex}", // 性别
      "provenance_mode": "${@body.source_type}", // 归因类型
      "extraordinary": "${@body.special}", // 特殊用户
      "reachable": "${@body.is_access}", // 是否白名单用户
      "program_facade": "${@body.app_side}", // A、B 面
      "private_scan": "${@body.check_vpn}", // 是否开启vpn检测
      "account_service_level": { // user_subscription
        "deal_type": "${@body.user_subscription.payment_method}", // 支付方式(google: 谷歌内购,apple: 苹果内购)
        "rotation_nature": "${@body.user_subscription.bicycle_type}", // 订阅扣款类型 (weekly,monthly, yearly,用于商品类型为vip和coins_package的)
        "period_end_date": "${@body.user_subscription.expiration_time}", // 订阅过期时间(时间戳)
        "noble_mode": "${@body.user_subscription.is_vip}", // 是否为vip
        "recurring_ok": "${@body.user_subscription.is_subscribed}" // 是否已订阅
      },
      "rookie_subs": [ // new_user_subscriptions
        {
          "deal_type": "${@$.payment_method}", // 支付方式(google: 谷歌内购,apple: 苹果内购)
          "rotation_nature": "${@$.bicycle_type}", // 订阅扣款类型 (weekly,monthly, yearly,用于商品类型为vip和coins_package的)
          "period_end_date": "${@$.expiration_time}", // 订阅过期时间(时间戳)
          "noble_mode": "${@$.is_vip}", // 是否为vip 
          "recurring_ok": "${@$.is_subscribed}", // 是否已订阅
          "specie_bit_ref": "${@$.coins_item_id}", // Coins物品id(用于商品类型为coins_package)
          "gold_aggregate": "${@$.coins_count}", // Coins数量(用于商品类型为coins_package)
          "added_good_marker": "${@$.bonus_item_id}", // Bonus物品id(用于商品类型为coins_package)
          "plus_entirety": "${@$.bonus_count}", // Bonus数量(用于商品类型为coins_package)
          "entry_token": "${@$.sign_item_id}", // 签到赠送Bonus物品id(用于商品类型为coins_package)
          "signin_sum": "${@$.sign_count}", // 签到赠送Bonus数量(用于商品类型为coins_package)
          "visit_days": "${@$.sign_days}", // 签到赠送Bonus数量(用于商品类型为coins_package)
          "outward_pid": "${@$.outer_platform_product_id}" // 外部平台商品id
        }
      ],
      "difference": { // wallet
        "allowance": "${@body.wallet.coins}", // 金币
        "premiums": "${@body.wallet.bonus}" // 代币
      },
      "nexus": { // _links
        "platform_subscriber": "${@body._links.app_user.href}", // 用户协议
        "sys_private_mode": "${@body._links.app_privacy.href}", // 隐私协议
        "code_cost": "${@body._links.app_payment.href}", //支付协议
        "program_eu_rights": "${@body._links.app_gdpr.href}", // gdpr
        "platform_statute": "${@body._links.app_ccpa.href}", //ccpa
        "conditions": "${@body._links.terms_of_service.href}", // trems
        "community_app_v": "${@body._links.fb_page_ios.href}", // fb page ios
        "likes_page_net": "${@body._links.fb_page_web.href}" // fb page web
      }
    }

    示例值:

    json5
    {
      "member_tag": "",
      "nickname": "",
      "user_pic": "",
      "era_argument": "",
      "identity_group": "",
      "provenance_mode": "",
      "extraordinary": "",
      "reachable": "",
      "program_facade": "",
      "private_scan": "",
      "account_service_level": {
        "deal_type": "",
        "rotation_nature": "",
        "period_end_date": 1231,
        "noble_mode": true,
        "recurring_ok": true
      },
      "rookie_subs": [
        {
          "deal_type": "",
          "rotation_nature": "",
          "period_end_date": 123,
          "noble_mode": true,
          "recurring_ok": true,
          "specie_bit_ref": 1,
          "gold_aggregate": 0,
          "added_good_marker": 2,
          "plus_entirety": 0,
          "entry_token": 2,
          "signin_sum": 0,
          "visit_days": 0,
          "outward_pid": ""
        }
      ],
      "difference": {
        "allowance": 100,
        "premiums": 100
      },
      "nexus": {
        "platform_subscriber": "x",
        "sys_private_mode": "x",
        "code_cost": "xx",
        "program_eu_rights": "xx",
        "platform_statute": "xx",
        "conditions": "xx",
        "community_app_v": "x",
        "likes_page_net": "x"
      }
    }

修改用户自动解锁配置

  • Request

    • Path: /persona/difference/instant_connect_props

    • Method: patch

  • Response

    • Status: 200

获取会话

  • Request

    • Path: /couplings

    • Method: get

    • QueryParams:

      • commodity_cast:产品组
  • Response

    • Body
    json5
    {
      "signin_proof": "${@body.access_token}", // token
      "dead_time": "${@body.expires_at}", // 过期时间
      "virgin_record": "${@body.is_new_user}", // 是否新用户
      "transient_usr": "${@body.is_anonymous}", // 是否匿名用户
      "auto_login_prefs": "${@body.auto_unlock_setting}" // 是否开启自动解锁
    }

    示例值:

    json5
    {
      "signin_proof": "",
      "dead_time": 123,
      "virgin_record": true,
      "transient_usr": true,
      "auto_login_prefs": false
    }

获取指定语言的词典数据

  • Request

    • Path: /wordbooks/sectors/:place

    • Method: get

    • PathVariable:

      • place:语言
  • Response

    • Body
    json5
    {
      "wordbooks": [ // 词典数据列表,_embedded.dict_item_vo_lis
        {
          "phrase": "${@$.word}", // 词汇
          "transl": "${@$.trans}" // 翻译
        }
      ]
    }

    示例值:

    json5
    {
      "wordbooks": [
        {
          "phrase": "For You",
          "transl": "Para Você"
        },
        {
          "phrase": "Home",
          "transl": "Início"
        }
      ]
    }

获取支持的语言列表

  • Request

    • Path: /wordbooks/sectors

    • Method: get

  • Response

    • Body
    json5
    {
      "sectors": "${@body._embedded.languages}" // 支持的语言列表
    }

    示例值:

    json5
    {
      "sectors": ["pt", "en"]
    }

获取首页短剧推送列表

  • Request

    • Path: /index_nudge/sectors/:place

    • Method: get

    • PathVariable:

      • place:语言
  • Response

    • Body
    json5
    {
      "topic_core": [ // body
        {
           "portion_token": "${@$.episode_id}", // 剧id
           "preamble": "${@$.title}", // 标题
           "index_pic": "${@$.cover}", // 封面
           "abridgment": "${@$.intro}" // 详情
        }
      ]
    }

    示例值:

    json5
    {
      "topic_core": [
        {
           "portion_token": 1,
           "preamble": "x",
           "index_pic": "xx",
           "abridgment": "xxx"
        }
      ]
    }

上报事件

  • Request

    • Path: /proceedings/:event_label

    • Method: post

    • PathVariable:

      • event_label:事件名
  • Response

    • Status: 200

    • Body

      json5
      {
        "xxx": "xxx", //事件参数
        "xxx": "xxx"
      }

      示例值:

      json5
      {
        "xxx": "xxx"
      }

更新FCM访问令牌

  • Request

    • Path: /account_bio/cloud_notify_id

    • Method: patch

    • Body:

      json5
      {
        "device_reg_id": "${@body.fcm_token}" // fcm令牌
      }

      示例值:

      json5
      {
        "device_reg_id": "xxxxx"
      }
  • Response

    • Status: 200

解锁剧集

  • Request

    • Path: /chunks/:portion_token/sectors/:place/sections/:episode_num/admission

    • Method: get

    • PathVariable:

      • portion_token:剧id

      • episode_num:第几集

      • place:语言

    • QueryParams:

      • access_direction:解锁方式 item 物品解锁 ad 广告解锁
  • Response

    • Body

      json5
      {
        "identity_code": "${@body.id}", // id
        "portion_token": "${@body.episode_id}", // 剧id
        "episode_num": "${@body.part_index}", // 第几集
        "place": "${@body.language}", // 语言
        "range": "${@body.duration}", // 时长
        "snippet": "${@body.thumbnail}", // 首帧图
        "film_flow": "${@body.stream_hls}", // hls播放地址
        "chunk_torrent": "${@body.stream_dash}" // dash播放地址
      }

      示例值:

      json5
      {
        "identity_code": 1,
        "portion_token": 1,
        "episode_num": 1,
        "place": "en",
        "range": 1.1,
        "snippet": "xx",
        "film_flow": "xx",
        "chunk_torrent": "xx"
      }

上报用户设备信息

  • Request

    • Path: /couplings/gear

    • Method: post

    • Body:

      json5
      {
        "implement_uid": "${@body.device_id}", //设备id
        "software_platform": "${@body.os}", // 系统
        "patch_level": "${@body.os_version}", // 系统版本
        "modify_key": "${@body.adid}", // adjust id
        "ad_tracking_g": "${@body.google_ad_id}", // google ad id
        "g_traffic_src": "${@body.google_attribution}", // google 归因信息
        "adapt_source": "${@body.adjust_attribution}", // adjust 归因信息
        "ad_tracking_i": "${@body.ios_ad_id}", // ios id
        "intent_path": "${@body.deep_link}" // 深度链接
      }

      示例值:

      json5
      {
        "implement_uid": "",
        "software_platform": "",
        "patch_level": "",
        "modify_key": "",
        "ad_tracking_g": "",
        "g_traffic_src": "",
        "adapt_source": "",
        "ad_tracking_i": "",
        "intent_path": ""
      }
  • Response

    • Body

      json5
      {
        "venue_key": "${@body.theatre_id}" // 剧id
      }

      示例值:

      json5
      {
        "venue_key": 19
      }

获取用户奖励记录

  • Request

    • Path: /persona/difference/conferred_notes

    • Method: get

    • QueryParams:

      • present:游标

      • computation:大小

  • Response

    • Body

      json5
      {
        "dossier_awards": [ // _embedded.user_rewarded_histories
          {
            "identity_code": "${@$.id}", // id
            "grant_token": "${@$.item_id}", // 物品id
            "perk_number": "${@$.item_num}", // 物品数量
            "reason": "${@$.reason}", // 原因
            "produced_moment": "${@$.created_at}" // 创建时间
          }
        ]
      }

      示例值:

      json5
      {
        "dossier_awards": [
          {
            "identity_code": 1,
            "grant_token": 2,
            "perk_number": 100,
            "reason": "",
            "produced_moment": 12333
          }
        ]
      }

获取用户解锁记录

  • Request

    • Path: /persona/difference/entry_logs

    • Method: get

    • QueryParams:

      • present:游标

      • computation:大小

  • Response

    • Body

      json5
      {
        "member_signins": [ // _embedded.user_unlock_histories
          {
            "identity_code": "${@$.id}", // id
            "portion_token": "${@$.episode_id}", // 剧id
            "place": "${@$.language}", // 语言
            "preamble": "${@$.title}", // 标题
            "episode_num": "${@$.part_index}", // 第几集
            "access_function": { // unlock_way
              "premiums": [ // items
                {
                  "grant_token": "${@$.item_id}", // 物品id
                  "perk_number": "${@$.item_num}" // 物品数量
                }
              ],
              "permission_level": "${@$.unlock_way.unlock_type}" // 解锁方式 itme 物品 ad 广告
            },
            "produced_moment": "${@$.created_at}" // 创建时间
          }
        ]
      }

      示例值:

      json5
      {
        "member_signins": [
          {
            "identity_code": 1,
            "portion_token": 2,
            "place": "en",
            "preamble": "xx",
            "episode_num": 3,
            "access_function": {
              "premiums": [
                {
                  "grant_token": 1,
                  "perk_number": 100
                }
              ],
              "permission_level": "item"
            },
            "produced_moment": 123
          }
        ]
      }

获取用户钱包

  • Request

    • Path: /persona/difference

    • Method: get

  • Response

    • Body

      json5
      {
        "allowance": "${@body.coins}", // 金币
        "premiums": "${@body.bonus}", // 代币
        "auto_login_prefs": "${@body.auto_unlock_setting}" // 是否自动解锁
      }

      示例值:

      json5
      {
        "allowance": 100,
        "premiums": 100,
        "auto_login_prefs": true
      }

内购创建订单V2

  • Request

    • Path: /sequel_patch/persona/inquiries/spawn

    • Method: post

    • Body:

    json5
    {
      "ware_uuid": "${@body.product_id}", // 商品ID
      "deal_type": "${@body.payment_method}", // 支付方式(google: 谷歌内购,apple: 苹果内购)
      "portion_token": "${@body.episode_id}" // 剧库id,用于数数上报
    }

    示例值:

    json5
    {
      "ware_uuid": "",
      "deal_type": "",
      "portion_token": ""
    }
  • Response

    • Body
    json5
    {
      "profile_query_id": "${@body.user_order_no}", // 订单号(uuid)
      "outward_pid": "${@body.outer_platform_product_id}", // 外部平台商品id
      "alien_base": "${@body.outer_platform}", // 外部商品平台(google: 谷歌,apple: 苹果)
      "ware_uuid": "${@body.product_id}", // 商品ID
      "deal_type": "${@body.payment_method}" // 支付方式(google: 谷歌内购,apple: 苹果内购)
    }

    示例值:

    json5
    {
      "profile_query_id": "",
      "outward_pid": "",
      "alien_base": "",
      "ware_uuid": 0,
      "deal_type": "apple"
    }

获取所有上架商品V2

  • Request

    • Path: /sequel_patch/commercial_obj

    • Method: get

    • QueryParams:

      • sheet:分页

      • article_amount:分页大小

      • division:商品类型,vip(VIP订阅)、coins_package(金币包订阅)、gift_radio(充值赠币)

  • Response

    • Body
    json5
    {
      "sheet": "${@body.page}", // 页码
      "article_amount": "${@body.page_size}", // 分页大小
      "commercial_obj": [ // _embedded.products
        {
          "identity_code": "${@$.id}", // 商品ID
          "caption": "${@$.name}", // 商品名
          "tariff": "${@$.price}", // 商品原单价
          "lower_price": "${@$.discount_price}", // 商品优惠价格
          "specie_bit_ref": "${@$.coins_item_id}", // Coins物品id(用于商品类型为gift_radio)
          "gold_aggregate": "${@$.coins_count}", // Coins数量(用于商品类型为gift_radio)
          "plus_entirety": "${@$.bonus_count}", // Bonus数量(用于商品类型为gift_radio)
          "added_good_marker": "${@$.bonus_item_id}", // Bonus物品id(用于商品类型为gift_radio)
          "bounty_pace": "${@$.gift_ratio}", // 赠送比例(买金币赠送代币的比例,用于商品类型为gift_radio)
          "rotation_nature": "${@$.sub_bicycle_type}", // 订阅扣款类型 (weekly,monthly,用于商品类型为vip和coins_package的)
          "alien_base": "${@$.outer_platform}", // 外部商品平台(google: 谷歌,apple: 苹果)
          "outward_pid": "${@$.outer_platform_product_id}", // 外部平台商品id
          "imported_lbl": "${@$.outer_platform_product_name}", // 外部平台商品名
          "rebate_timer": "${@$.duration_discount_minutes}", // 限时优惠倒计时(单位分钟)
          "reduced_bool": "${@$.is_discount}", // 是否为限时优惠
          "division": "${@$.type}", // 商品类型,vip(VIP订阅)、coins_package(金币包订阅)、gift_radio(充值赠币)
          "specifics": "${@$.description}" // 商品详情描述
        }
      ]
    }

    示例值:

    json5
    {
      "sheet": 1,
      "article_amount": 10,
      "commercial_obj": [
        {
          "identity_code": 1,
          "caption": "Week Subscription",
          "tariff": 29.9,
          "lower_price": 9.9,
          "specie_bit_ref": 1,
          "gold_aggregate": 0,
          "plus_entirety": 0,
          "added_good_marker": 2,
          "bounty_pace": 0.0,
          "rotation_nature": "weekly",
          "alien_base": "",
          "outward_pid": "",
          "imported_lbl": "",
          "rebate_timer": 0,
          "reduced_bool": false,
          "division": "vip",
          "specifics": "Week Subscription"
        }
      ]
    }

未支付订单取消V2

  • Request

    • Path: /sequel_patch/persona/inquiries/:call_tag/scrap

    • Method: patch

    • PathVariable:

      • call_tag:订单号(uuid)
  • Response

    • Status: 200

苹果订阅恢复

  • Request

    • Path: /icloud/persona/reclamation/:hash

    • Method: post

    • PathVariable:

      • hash:苹果交易ID
  • Response

    • Body
    json5
    {
      "hash": "${@body.transaction_id}", // 苹果交易ID
      "member_tag": "${@body.user_id}", // 用户ID
      "signin_proof": "${@body.access_token}" // 恢复后的用户访问令牌
    }

    示例值:

    json5
    {
      "hash": "xxx",
      "member_tag": "xxxx",
      "signin_proof": "xxxx"
    }

获取订单列表V2

  • Request

    • Path: /sequel_patch/persona/inquiries

    • Method: get

    • QueryParams:

      • sheet:分页

      • article_amount:分页大小

  • Response

    • Body
    json5
    {
      "sheet": "${@body.page}", // 页码
      "article_amount": "${@body.page_size}", // 分页大小
      "inquiries": [ // _embedded.orders
        {
          "call_tag": "${@$.order_no}", // 订单号(uuid)
          "rotation_nature": "${@$.sub_bicycle_type}", // 订阅扣款类型(weekly: 周订阅,monthly: 月订阅,用于商品类型为 vip 和 coins_package)
          "specie_bit_ref": "${@$.coins_item_id}", // Coins 物品 id(用于商品类型为 gift_radio 和 coins_package)
          "gold_aggregate": "${@$.coins_count}", // Coins 数量(用于商品类型为 gift_radio 和 coins_package)
          "plus_entirety": "${@$.bonus_count}", // Bonus 数量(用于商品类型为 gift_radio 和 coins_package)
          "added_good_marker": "${@$.bonus_item_id}", // Bonus物品id(用于商品类型为gift_radio)
          "bounty_pace": "${@$.gift_ratio}", // 赠送比例(买金币赠送代币的比例,用于商品类型为 gift_radio 和 coins_package)
          "merch_caption": "${@$.product_name}", // 商品名
          "stock_division": "${@$.product_type}", // 商品类型,vip(VIP订阅)、coins_package(金币包订阅)、gift_radio(充值赠币)
          "terminal_bill": "${@$.actual_amount}", // 商品实付金额
          "period_end_date": "${@$.subscription_expiration_time}", // 订阅失效截止时间(用于商品类型为 vip 和 coins_package,单位:秒)
          "stage": "${@$.status}", // 订单状态(processing: 处理中,success: 成功,failed: 失败,refunded: 已退款)
          "exchange_point": "${@$.payment_time}", // 支付时间(单位:秒)
          "deal_type": "${@$.payment_method}", // 支付方式(google: 谷歌内购,apple: 苹果内购)
          "crash_root": "${@$.failed_reason}", // 订单失败原因
          "produced_moment": "${@$.created_at}" // 创建时间,时间戳秒
        }
      ]
    }

    示例值:

    json5
    {
      "sheet": 1,
      "article_amount": 10,
      "inquiries": [
        {
          "call_tag": "",
          "rotation_nature": "weekly",
          "specie_bit_ref": 1,
          "gold_aggregate": 0,
          "plus_entirety": 0,
          "added_good_marker": 2,
          "bounty_pace": 0.5,
          "merch_caption": "",
          "stock_division": "gift_radio",
          "terminal_bill": 9.9,
          "period_end_date": 1697059200,
          "stage": "success",
          "exchange_point": 1696972800,
          "deal_type": "google",
          "crash_root": "",
          "produced_moment": 1696972800
        }
      ]
    }

谷歌订阅恢复

  • Request

    • Path: /android/persona/reclamation/:hash

    • Method: post

    • PathVariable:

      • hash:谷歌订单id
  • Response

    • Body
    json5
    {
      "hash": "${@body.transaction_id}", // 谷歌交易ID
      "member_tag": "${@body.user_id}", // 用户ID
      "signin_proof": "${@body.access_token}" // 恢复后的用户访问令牌
    }

    示例值:

    json5
    {
      "hash": "xxx",
      "member_tag": "xxxx",
      "signin_proof": "xxxx"
    }

Released under the MIT License.