Sensors Data Web API

The Web API from Sensors Data — 12 operation(s) for web.

Operations 12

POST /web/plan/list 获取计划列表 #
GET /web/plan/get 获取单个计划 #
POST /web/old-canvas/list 获取老画布列表 #
GET /web/old-canvas/get 获取单个老画布 #
POST /web/canvas/list 获取新画布列表 #
GET /web/canvas/get 获取单个新画布 #
POST /web/canvas/deliver 发布新画布草稿 #
POST /web/canvas/terminate 终止新画布 #
POST /web/canvas/delete 删除新画布 #
POST /web/canvas/update-time 修改草稿状态(DRAFT)/暂停中驳回状态(SUSPEND AUDIT_BACK)/待运行驳回(PENDING AUDIT_BACK)的新画布开始结束时间 #
GET /web/user-groups/list 获取单个计划、老画布、新画布的受众列表 #
POST /web/metrics/query 查询指标 #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sensors-data-web-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sensors-data-web-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 计划、老画布、新画布相关接口
  title: 神策智能运营 Web API
  version: ''
servers:
- url: /api/v3/focus/v1
tags:
- name: Web
paths:
  /web/plan/list:
    post:
      description: 获取计划列表
      operationId: WebListPlan
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      - description: 通道实例ID
        in: query
        name: channel_instance_id
        schema:
          format: int32
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.WebListPlanRequestBody'
        description: 请求计划列表的请求体
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  page_filter: {}
                  plans:
                  - entry: {}
                    action:
                      strategies:
                      - msg_content:
                          webhook:
                            plan_params:
                            - {}
                    created_by: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.WebListPlanResponseHttpApiResult'
          description: sensorsdata.focus.v1.WebListPlanResponse
      summary: 获取计划列表
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.WebListPlanResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.WebListPlanRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: WebListPlanRequestBody
      tags:
      - Web
  /web/plan/get:
    get:
      description: 获取单个计划
      operationId: WebGetPlan
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      - in: query
        name: id
        schema:
          format: int32
          type: integer
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  plan:
                    entry: {}
                    action:
                      strategies:
                      - msg_content:
                          webhook:
                            plan_params:
                            - {}
                    created_by: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.WebGetPlanResponseHttpApiResult'
          description: sensorsdata.focus.v1.WebGetPlanResponse
      summary: 获取单个计划
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.WebGetPlanResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.WebGetPlanRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      tags:
      - Web
  /web/old-canvas/list:
    post:
      description: 获取老画布列表
      operationId: WebListOldCanvas
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.WebListOldCanvasRequestBody'
        description: 请求画布列表的请求体
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  page_filter: {}
                  old_canvases:
                  - entry: {}
                    strategy_relations:
                    - {}
                    strategies:
                    - msg_content:
                        webhook:
                          plan_params:
                          - {}
                    updated_by: {}
                    created_by: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.WebListOldCanvasResponseHttpApiResult'
          description: sensorsdata.focus.v1.WebListOldCanvasResponse
      summary: 获取老画布列表
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.WebListOldCanvasResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.WebListOldCanvasRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: WebListOldCanvasRequestBody
      tags:
      - Web
  /web/old-canvas/get:
    get:
      description: 获取单个老画布
      operationId: WebGetOldCanvas
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      - in: query
        name: id
        schema:
          format: int32
          type: integer
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  old_canvas:
                    entry: {}
                    strategy_relations:
                    - {}
                    strategies:
                    - msg_content:
                        webhook:
                          plan_params:
                          - {}
                    updated_by: {}
                    created_by: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.WebGetOldCanvasResponseHttpApiResult'
          description: sensorsdata.focus.v1.WebGetOldCanvasResponse
      summary: 获取单个老画布
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.WebGetOldCanvasResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.WebGetOldCanvasRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      tags:
      - Web
  /web/canvas/list:
    post:
      description: 获取新画布列表
      operationId: WebListCanvas
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.WebListCanvasRequestBody'
        description: 请求画布列表的请求体
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  page_filter: {}
                  canvases:
                  - entry:
                      entry_component:
                        rule: {}
                        event:
                          event_do:
                            match_lists:
                            - {}
                      action_component:
                        msg_content:
                          webhook:
                            plan_params:
                            - {}
                          push: {}
                          edm: {}
                      control_component: {}
                      condition_component: {}
                    component_relations:
                    - {}
                    updated_by: {}
                    created_by: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.WebListCanvasResponseHttpApiResult'
          description: sensorsdata.focus.v1.WebListCanvasResponse
      summary: 获取新画布列表
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.WebListCanvasResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.WebListCanvasRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: WebListCanvasRequestBody
      tags:
      - Web
  /web/canvas/get:
    get:
      description: 获取单个新画布
      operationId: WebGetCanvas
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      - in: query
        name: id
        schema:
          format: int32
          type: integer
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  canvas:
                    entry:
                      entry_component:
                        rule: {}
                        event:
                          event_do:
                            match_lists:
                            - {}
                      action_component:
                        msg_content:
                          webhook:
                            plan_params:
                            - {}
                          push: {}
                          edm: {}
                      control_component: {}
                      condition_component: {}
                    component_relations:
                    - {}
                    updated_by: {}
                    created_by: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.WebGetCanvasResponseHttpApiResult'
          description: sensorsdata.focus.v1.WebGetCanvasResponse
      summary: 获取单个新画布
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.WebGetCanvasResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.WebGetCanvasRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      tags:
      - Web
  /web/canvas/deliver:
    post:
      description: 发布status=DRAFT状态的新画布, 进入待审批状态
      operationId: CanvasDeliver
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasDeliverRequest'
        description: 发布新画布
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasDeliverResponseHttpApiResult'
          description: sensorsdata.focus.v1.CanvasDeliverResponse
      summary: 发布新画布草稿
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.CanvasDeliverResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.CanvasDeliverRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: CanvasDeliverRequest
      tags:
      - Web
  /web/canvas/terminate:
    post:
      description: 终止新画布, 只能终止以下状态的新画布:待运行-审批中(PENDING-子状态为AUDITING)、运行中(ACTIVE)、暂停中(SUSPEND)
      operationId: CanvasTerminate
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasTerminateRequest'
        description: 终止新画布
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasTerminateResponseHttpApiResult'
          description: sensorsdata.focus.v1.CanvasTerminateResponse
      summary: 终止新画布
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.CanvasTerminateResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.CanvasTerminateRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: CanvasTerminateRequest
      tags:
      - Web
  /web/canvas/delete:
    post:
      description: 删除新画布, 只能删除以下状态的新画布:草稿(DRAFT)、待运行-审批驳回(PENDING-子状态为AUDIT_BACK)、已终止(FINISHED)
      operationId: CanvasDelete
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasDeleteRequest'
        description: 删除新画布
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasDeleteResponseHttpApiResult'
          description: sensorsdata.focus.v1.CanvasDeleteResponse
      summary: 删除新画布
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.CanvasDeleteResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.CanvasDeleteRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: CanvasDeleteRequest
      tags:
      - Web
  /web/canvas/update-time:
    post:
      description: 修改草稿状态(DRAFT)/暂停中驳回状态(SUSPEND AUDIT_BACK)/待运行驳回(PENDING AUDIT_BACK)的新画布开始结束时间
      operationId: CanvasUpdateTime
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasUpdateTimeRequest'
        description: 修改草稿状态的新画布开始结束时间
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data: {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.CanvasUpdateTimeResponseHttpApiResult'
          description: sensorsdata.focus.v1.CanvasUpdateTimeResponse
      summary: 修改草稿状态(DRAFT)/暂停中驳回状态(SUSPEND AUDIT_BACK)/待运行驳回(PENDING AUDIT_BACK)的新画布开始结束时间
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.CanvasUpdateTimeResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.CanvasUpdateTimeRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: CanvasUpdateTimeRequest
      tags:
      - Web
  /web/user-groups/list:
    get:
      description: 获取单个计划、老画布、新画布的受众列表
      operationId: ListUserGroups
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      - description: 计划、画布、新画布 id
        in: query
        name: id
        schema:
          format: int32
          type: integer
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  user_groups:
                  - {}
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.express.GetUserGroupsResponseHttpApiResult'
          description: sensorsdata.focus.v1.express.GetUserGroupsResponse
      summary: 获取单个计划、老画布、新画布的受众列表
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.express.GetUserGroupsResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.express.GetUserGroupsRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      tags:
      - Web
  /web/metrics/query:
    post:
      description: 根据传入条件查询指标信息
      operationId: ListMetrics
      parameters:
      - description: 全局唯一的密钥,用于验证和授权访问 API 接口
        in: header
        name: api-key
        required: true
        schema:
          type: string
      - description: 项目名, 指定请求所属项目
        in: header
        name: sensorsdata-project
        required: true
        schema:
          type: string
      - description: 租户 ID, 用于请求所属租户
        in: header
        name: X-Organization-Id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sensorsdata.focus.v1.MetricsRequest'
        required: false
      responses:
        default:
          content:
            application/json:
              example:
                code: SUCCESS
                data:
                  metrics_responses:
                  - phase: AUDIENCE
                    create_time: '2023-07-29T18:00:00.000Z'
                    from_component: 1
                    count: 100
                    current_day: '2023-07-29T18:00:00.000Z'
                    convert_id: 1
                    last_update_time: '2023-07-29T18:00:00.000Z'
                    plan_version: 1
                    strategy_id: -1
                    current_component: 2
                    strategy_unit_id: 100
                    day: '2023-07-29T18:00:00.000Z'
                    plan_id: 123
                request_id: '1'
              schema:
                $ref: '#/components/schemas/sensorsdata.focus.v1.ListMetricsResponseHttpApiResult'
          description: sensorsdata.focus.v1.ListMetricsResponse
      summary: 查询指标
      x-sd-openapi:
        responseClass: com.sensorsdata.focus.v1.ListMetricsResponse
        isServerStreaming: false
        requestClass: com.sensorsdata.focus.v1.MetricsRequest
        grpcServiceBase: com.sensorsdata.focus.v1.WebServiceGrpc.WebServiceImplBase
        internalDesc: classes in template for grpc service dynamic invoking
        isClientStreaming: false
      x-codegen-request-body-name: MetricsRequest
      tags:
      - Web
components:
  schemas:
    sensorsdata.focus.v1.WebListCanvasRequestBody:
      description: 请求画布列表的请求体
      properties:
        page_filter:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.PageFilter'
      title: WebListCanvasRequest
      type: object
    sensorsdata.focus.v1.web.canvas.WebCanvas:
      description: 新画布的配置信息
      properties:
        id:
          description: ID,集群唯一
          format: int32
          type: integer
        cname:
          description: 中文名称
          type: string
        project_id:
          description: 项目ID
          format: int32
          type: integer
        type:
          description: 新画布类型,固定值
          enum:
          - UNSPECIFIED
          - SIMPLE
          - RICH
          - CANVAS
          type: string
        entry:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.canvas.WebComponent'
        status:
          description: 状态
          enum:
          - UNSPECIFIED
          - DRAFT
          - PENDING
          - ACTIVE
          - SUSPEND
          - CLOSED
          - FINISHED
          - ARCHIVE
          - RETURN_SUBMITTER
          type: string
        sub_status:
          description: 子状态
          enum:
          - UNSPECIFIED
          - AUDITING
          - AUDIT_REJECT
          - AUDIT_BACK
          - AUDIT_PASS
          - MANUAL_STOP
          - ERROR
          type: string
        components:
          description: 组件信息,不包含进入组件
          items:
            $ref: '#/components/schemas/sensorsdata.focus.v1.web.canvas.WebComponent'
          type: array
        component_relations:
          description: 组件直接之间的连接关心
          items:
            $ref: '#/components/schemas/sensorsdata.focus.v1.web.canvas.WebComponentEdge'
          type: array
        created_by:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.AccountInfo'
        updated_by:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.AccountInfo'
        create_time:
          description: 画布创建时间
          type: string
        last_update_time:
          description: 最近一次计划更新时间
          type: string
        group_id:
          description: 组 ID
          format: int32
          type: integer
        convert_rule_list:
          description: 转化规则
          type: string
        convert_relevance_field_enabled:
          description: 转化规则的关联属性开关
          type: boolean
        quiet_hour:
          description: 静默时间
          type: string
        global_msg_limit_enabled:
          description: 是否开启全局消息推送配置
          type: boolean
        re_enter:
          description: 计划参与限制
          type: string
      title: WebCanvas
      type: object
    sensorsdata.focus.v1.CanvasUpdateTimeResponse:
      description: 修改草稿状态的新画布开始结束时间的响应
      title: CanvasUpdateTimeResponse
      type: object
    sensorsdata.focus.v1.web.canvas.EntryComponent:
      description: ''
      properties:
        schedule_type:
          description: 类型
          enum:
          - UNSPECIFIED
          - FIXED_TIME
          - ROUTINE
          - TRIGGER_ONLY_A
          - TRIGGER_A_NOT_B
          type: string
        fixed_time:
          description: 触发类型为 FIXED_TIME 存在,定时运行时间
          type: string
        cron:
          description: 触发类型为 ROUTINE 存在,定时周期 cron 表达式
          type: string
        schedule_start:
          description: 触发类型为 ROUTINE、TRIGGER_ONLY_A、TRIGGER_A_NOT_B 存在,开始时间
          type: string
        schedule_end:
          description: 触发类型为 ROUTINE、TRIGGER_ONLY_A、TRIGGER_A_NOT_B 存在,结束时间
          type: string
        finished_time:
          description: ''
          type: string
        event:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.canvas.EventComponent'
        rule:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.canvas.AudienceRule'
      title: EntryComponent
      type: object
    sensorsdata.focus.v1.WebListPlanResponse:
      description: 请求计划列表的响应体
      properties:
        page_filter:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.PageFilter'
        plans:
          description: 计划信息
          items:
            $ref: '#/components/schemas/sensorsdata.focus.v1.web.plan.WebPlan'
          type: array
      title: WebListPlanResponse
      type: object
    sensorsdata.focus.v1.web.plan.StrategyInfo:
      description: AB Test 配置信息
      properties:
        strategy_id:
          description: id
          format: int32
          type: integer
        strategy_name:
          description: 组名
          type: string
        strategy_type:
          description: 组类别
          enum:
          - UNSPECIFIED
          - EXPERIENCE_GROUP
          - CONTROL_GROUP
          type: string
        strategy_ratio:
          description: 流量分配比例,用 integer 表示,取值范围 [1~100] ,一个计划中的流量分配总和 100
          format: int32
          type: integer
        msg_content:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.plan.MsgContentWithStyle'
        is_trigger:
          description: 是否触发
          type: boolean
      title: StrategyInfo
      type: object
    sensorsdata.focus.v1.ListMetricsResponse:
      description: ''
      properties:
        metrics_responses:
          description: 返回指标数据
          items:
            $ref: '#/components/schemas/sensorsdata.focus.v1.MetricsResponse'
          type: array
        udtf_error:
          description: ''
          format: int32
          type: integer
      title: ListMetricsResponse
      type: object
    sensorsdata.focus.v1.WebListPlanRequestBody:
      description: 请求计划列表的请求体
      properties:
        page_filter:
          $ref: '#/components/schemas/sensorsdata.focus.v1.web.PageFilter'
      title: WebListPlanRequest
      type: object
    sensorsdata.focus.v1.WebGetPlanResponseHttpApiResult:
      properties:
        code:
          type: string
        message:
          type: string
        request_id:
          type: string
        data:
          $ref: '#/components/schemas/sensorsdata.focus.v1.WebGetPlanResponse'
        error_info:
          $ref: '#/components/schemas/sensorsdata.common.ErrorInfo'
      title: sensorsdata.focus.v1.WebGetPlanResponseHttpApiResult
      type: object
    sensorsdata.focus.v1.web.PageFilter:
      description: 分页信息
      properties:
        limit:
          description: 每页大小
          format: int32
          type: integer
        offset:
          description: 偏移量
          format: int32
          type: integer
        total:
          description: 总数
          format: int32
          type: integer
      title: PageFilter
      type: object
    sensorsdata.focus.v1.web.plan.MsgContentWithStyle4OldCanvas:
      description: 旧画布推送消息配置
      properties:
        channel_instance_id:
          description: 通道实例 id
          format: int32
          type: integer
        style:
          description: 通道类型
          enum:
          - UNSPECIFIED
          - WEBHOOK
          - EMAIL
          - TEXT_MSG
          - WECHAT_SERVICE_TEMPLATE_MSG
          - WECHAT_ACTIVE_PUSH
          - WECHAT_BROADCAST
          - POPUP
          - CUSTOM_PO

# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sensors-data/refs/heads/main/openapi/sensors-data-web-api-openapi.yml