Docker 运行swagger-editor实现在线接口文档维护与调试

文章目录

  • 一、序
  • 二, Docker部署准备
    • 1. 编辑docker-compose.yml
    • 2. 新增启动、停止脚本
    • 3. 样例 swagger.yaml
  • 三, 启动swagger-editor
    • 1. 使用说明
    • 2. 完整代码备份

一、序

因工作需要,需要搭建python运行环境,项目中python基于flask实现了swagger在线文档以及接口测试,前后端对接开发时需要使用。项目比较庞大,完全部署的话,只使用swagger在线文档功能的话,太浪费资源了。

Swagger Editor是一个开源的编辑器,并且它也是一个基于Angular的成功案例。在Swagger Editor中,我们可以基于YAML等语法定义我们的RESTful API,然后它会自动生成一篇排版优美的API文档,并且提供实时预览。简单说就是可以边编写API 边预览边测试。

这么看来swagger-editor可以基于swagger yaml文件实现在线接口文档生成,完全符合我们的需求。

二, Docker部署准备

docker、docker-compose环境安装就不介绍了。

1. 编辑docker-compose.yml

docker-compose实现了如下功能:

  1. 指定镜像、文件映射、端口映射、日志配置、重启策略
  2. 指定资源占有限制
  3. 通过环境变量指定默认加载的swagger配置文件

docker-compose.yml

version: '3'
services:
  swagger-editor:
    image: swaggerapi/swagger-editor
    container_name: swagger-editor
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 20M
        reservations:
          memory: 10M
    volumes:
      - ./swagger.yaml:/swagger.yaml
    ports:
      - 80:8080
    environment:
      SWAGGER_FILE: /swagger.yaml
    restart: on-failure
    logging:
      driver: 'json-file'
      options:
        max-size: '30m'
        max-file: '1'

2. 新增启动、停止脚本

start.sh

#!/bin/bash
docker-compose up -d

stop.sh

#!/bin/bash
docker-compose down

3. 样例 swagger.yaml

https://gitee.com/WeBankOS/FATE-Flow/blob/feature-1.10.0-update-doc/doc/swagger/swagger.yaml

openapi: 3.0.3
info:
  version: '1.8.0'
  title: Fate Flow

paths:
  '/data/upload':
    post:
      summary: upload
      tags:
        - data-access
      parameters:
        - in: query
          name: id_delimiter
          description: data delimiter
          required: false
          schema:
            type: string
            example: ","
        - in: query
          name: head
          description: data head
          required: true
          schema:
            type: integer
            example: 0, 1
        - in: query
          name: partition
          description: compoting table partitions
          required: true
          schema:
            type: integer
            example: 16, ...
        - in: query
          name: table_name
          description: fate table name
          required: true
          schema:
            type: string
            example: breast_hetero_guest
        - in: query
          name: namespace
          description: fate table namespace
          required: true
          schema:
            type: string
            example: experiment
        - in: query
          name: storage_engine
          description: data storage engin
          required: false
          schema:
            type: string
            example: eggroll, localfs, hdfs, ...
        - in: query
          name: destory
          description: destory old table and upload new table
          required: false
          schema:
            type: integer
            example: 0, 1
        - in: query
          name: extend_sid
          description: extend sid to first column
          required: false
          schema:
            type: integer
            example: 0, 1
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
      responses:
        '200':
          description: upload success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "board_url": "http://xxx:8080/index.html#/dashboard?job_id=xxx&role=local&party_id=0",
                        "code": 0,
                        "dsl_path": "/data/projects/fate/fateflow/jobs/xxx/job_dsl.json",
                        "job_id": xxx,
                        "logs_directory": "/data/projects/fate/fateflow/logs/xxx",
                        "message": "success",
                        "model_info": {
                          "model_id": "local-0#model",
                          "model_version": xxx
                        },
                        "namespace": "experiment",
                        "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/xxx/pipeline_dsl.json",
                        "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/xxx/local/0/job_runtime_on_party_conf.json",
                        "runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/job_runtime_conf.json",
                        "table_name": "breast_hetero_guest",
                        "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/train_runtime_conf.json"
                      }
        '404':
          description: upload failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: required parameters are missing

  '/data/download':
    post:
      summary: download data
      tags:
        - data-access
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
                - output_path
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
                output_path:
                  type: string
                  example: /data/projects/fate/fateflow/experiment_download_breast_guest.csv
                delimiter:
                  type: string
                  example: ","
      responses:
        '200':
          description: download success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "board_url": "http://xxx:8080/index.html#/dashboard?job_id=xxx&role=local&party_id=0",
                        "code": 0,
                        "dsl_path": "/data/projects/fate/fateflow/jobs/xxx/job_dsl.json",
                        "job_id": xxx,
                        "logs_directory": "/data/projects/fate/fateflow/logs/xxx",
                        "message": "success",
                        "model_info": {
                          "model_id": "local-0#model",
                          "model_version": xxx
                        },
                        "namespace": "experiment",
                        "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/xxx/pipeline_dsl.json",
                        "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/xxx/local/0/job_runtime_on_party_conf.json",
                        "runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/job_runtime_conf.json",
                        "table_name": "breast_hetero_guest",
                        "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/train_runtime_conf.json"
                      }
        '404':
          description: download failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: required parameters are missing

  '/data/upload/history':
    post:
      summary: history of upload job info
      tags:
        - data-access
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                job_id:
                  type: string
                  example: 202103241706521313480
                limit:
                  type: integer
                  description: limit output
                  example: 1
      responses:
        '200':
          description: get success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "202103241706521313480": {
                            "notes": "",
                            "schema": {
                                "header": "y,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9",
                                "sid": "id"
                            },
                            "upload_info": {
                              "namespace": "experiment",
                              "partition": 4,
                              "table_name": "breast_hetero_guest",
                              "upload_count": 569
                            }
                          }
                        }
        '404':
          description: get failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 100
                  retmsg:
                    type: string
                    example: server error

  '/table/bind':
    post:
      summary: bind a storage address to fate table
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - engine
                - address
                - namespace
                - name
                - head
                - id_delimiter
                - partitions
              properties:
                engine:
                  type: string
                  example: mysql
                name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
                address:
                  type: object
                  description: storage address
                  example:
                    user: fate
                    passwd: fate
                    host: 127.0.0.1
                    port: 3306
                    db: xxx
                    name: xxx
                partitions:
                  type: integer
                  description: fate computing table partitions
                  example: 16
                head:
                  type: integer
                  description: 1 means data have head
                  example: 0,1
                id_delimiter:
                  type: string
                  description: data table or intermediate storage table delimiter
                  example: ","
                in_serialized:
                  type: integer
                  description: data serialized, standlone/eggroll/mysql/path storage default 1, others default 0
                  example: 0, 1
                drop:
                  type: integer
                  description: if table is exist, will delete it
                  example: 0,1
                id_column:
                  type: string
                  example: "id"
                feature_column:
                  type: string
                  description: delimited by ","
                  example: x1,x2,x3
      responses:
        '200':
          description: bind table success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      table_name:
                        type: string
                        example: breast_hetero_guest
                      namespace:
                        type: string
                        example: experiment
        '404':
          description: bind table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 100
                  retmsg:
                    type: string
                    example: engine xxx address xxx check failed

  '/table/delete':
    post:
      summary: delete fate table
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: delete table success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      table_name:
                        type: string
                        example: breast_hetero_guest
                      namespace:
                        type: string
                        example: experiment
        '404':
          description: delete table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/list':
    post:
      summary: get job all tables
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
                - role
                - party_id
              properties:
                job_id:
                  type: string
                  example: 202101251515021092240
                role:
                  type: string
                  example: guest
                party_id:
                  type: string
                  example: 10000
      responses:
        '200':
          description: get tables success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "DataIO_0":
                        {
                          "input":
                          {
                            "Reader_0.data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          },
                          "output":
                          {
                            "data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          }
                        },
                        "Intersection_0":
                        {
                          "input":
                          {
                            "DataIO_0.data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          },
                          "output":
                          {
                            "data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          }
                        },
                        "Reader_0":
                        {
                          "input":
                          {
                            "table":
                            {
                              "name": xxx,
                              "namespace": "xxxx"
                            }
                          },
                          "output":
                          {
                            "data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          }
                        }
                      }
        '404':
          description: delete table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/table_info':
    post:
      summary: query table info
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: get tables success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "address":
                        {},
                        "count": 569,
                        "exist": 1,
                        "namespace": "experiment",
                        "partition": 16,
                        "schema":
                        {
                          "header": "id,y,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9",
                          "sid": "id"
                        },
                        "table_name": "breast_hetero_guest"
                      }
        '404':
          description: query table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/tracking/source':
    post:
      summary: tracking table source
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: tracking success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "parent_table_name": xxx,
                          "parent_table_namespace": xxx,
                          "source_table_name": xxx,
                          "source_table_namespace": xxx
                        }
        '404':
          description: tracking failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/tracking/job':
    post:
      summary: tracking using table job
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: tracking success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "count": 5,
                          "job":
                          [
                            "202104212104472450460",
                            "202104212127150470680",
                            "202104220937051579910",
                            "202104212038599210200",
                            "202104212131462630720"
                          ]
                        }
        '404':
          description: tracking failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/job/submit':
    post:
      summary: submit job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - dsl
                - runtime_conf
              properties:
                dsl:
                  type: object
                  example:
                    {
                      "components":
                      {
                        "dataio_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "reader_0.table"
                              ]
                            }
                          },
                          "module": "DataIO",
                          "need_deploy": true,
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "dataio"
                            ]
                          }
                        },
                        "evaluation_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "hetero_lr_0.train"
                              ]
                            }
                          },
                          "module": "Evaluation",
                          "output":
                          {
                            "data":
                            [
                              "evaluate"
                            ]
                          }
                        },
                        "hetero_feature_binning_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "intersection_0.train"
                              ]
                            }
                          },
                          "module": "HeteroFeatureBinning",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "hetero_feature_binning"
                            ]
                          }
                        },
                        "hetero_feature_selection_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "hetero_feature_binning_0.train"
                              ]
                            },
                            "isometric_model":
                            [
                              "hetero_feature_binning_0.hetero_feature_binning"
                            ]
                          },
                          "module": "HeteroFeatureSelection",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "selected"
                            ]
                          }
                        },
                        "hetero_lr_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "train_data":
                              [
                                "hetero_feature_selection_0.train"
                              ]
                            }
                          },
                          "module": "HeteroLR",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "hetero_lr"
                            ]
                          }
                        },
                        "intersection_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "dataio_0.train"
                              ]
                            }
                          },
                          "module": "Intersection",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ]
                          }
                        },
                        "reader_0":
                        {
                          "module": "Reader",
                          "output":
                          {
                            "data":
                            [
                              "table"
                            ]
                          }
                        }
                      }
                    }
                runtime_conf:
                  type: object
                  example:
                    {
                      "component_parameters":
                      {
                        "common":
                        {
                          "hetero_lr_0":
                          {
                            "alpha": 0.01,
                            "batch_size": 320,
                            "init_param":
                            {
                              "init_method": "random_uniform"
                            },
                            "learning_rate": 0.15,
                            "max_iter": 3,
                            "optimizer": "rmsprop",
                            "penalty": "L2"
                          },
                          "intersection_0":
                          {
                            "intersect_method": "raw",
                            "only_output_key": false,
                            "sync_intersect_ids": true
                          }
                        },
                        "role":
                        {
                          "guest":
                          {
                            "0":
                            {
                              "dataio_0":
                              {
                                "label_name": "y",
                                "label_type": "int",
                                "output_format": "dense",
                                "with_label": true
                              },
                              "reader_0":
                              {
                                "table":
                                {
                                  "name": "breast_hetero_guest",
                                  "namespace": "experiment"
                                }
                              }
                            }
                          },
                          "host":
                          {
                            "0":
                            {
                              "dataio_0":
                              {
                                "output_format": "dense",
                                "with_label": false
                              },
                              "evaluation_0":
                              {
                                "need_run": false
                              },
                              "reader_0":
                              {
                                "table":
                                {
                                  "name": "breast_hetero_host",
                                  "namespace": "experiment"
                                }
                              }
                            }
                          }
                        }
                      },
                      "dsl_version": "2",
                      "initiator":
                      {
                        "party_id": 9999,
                        "role": "guest"
                      },
                      "job_parameters":
                      {
                        "common":
                        {
                          "auto_retries": 1,
                          "computing_partitions": 8,
                          "task_cores": 4,
                          "task_parallelism": 2
                        }
                      },
                      "role":
                      {
                        "arbiter":
                        [
                          10000
                        ],
                        "guest":
                        [
                          9999
                        ],
                        "host":
                        [
                          10000
                        ]
                      }
                    }
      responses:
        '200':
          description: submit job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "board_url": xxx,
                        "code": 0,
                        "dsl_path": xxx,
                        "job_id": xxx,
                        "logs_directory": xxx,
                        "message": "success",
                        "model_info":
                        {
                          "model_id": xxx,
                          "model_version": xxx
                        },
                        "pipeline_dsl_path": xxx,
                        "runtime_conf_on_party_path": xxx,
                        "runtime_conf_path": xxx,
                        "train_runtime_conf_path": xxx
                      }
        '404':
          description: submit job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: "config error"

  '/job/stop':
    post:
      summary: stop job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: 202103231958539401540
                stop_status:
                  type: string
                  default: cancel
                  example: "failed"
                  description: "failed or cancel"
      responses:
        '200':
          description: stop job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: stop job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/rerun':
    post:
      summary: rerun job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: 202103231958539401540
      responses:
        '200':
          description: rerun job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: rerun job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/query':
    post:
      summary: query job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
      responses:
        '200':
          description: query job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "f_apply_resource_time": xxx,
                          "f_cancel_signal": false,
                          "f_cancel_time": xxx,
                          "f_cores": 8,
                          "f_create_date": xxx,
                          "f_create_time": xxx,
                          "f_description": "",
                          "f_dsl": {},
                          "f_elapsed": 14380,
                          "f_end_date": xxx,
                          "f_end_scheduling_updates": 1,
                          "f_end_time": xxx,
                          "f_engine_name": "EGGROLL",
                          "f_engine_type": "computing",
                          "f_initiator_party_id": "20001",
                          "f_initiator_role": "guest",
                          "f_is_initiator": true,
                          "f_job_id": xxx,
                          "f_memory": 0,
                          "f_name": "",
                          "f_party_id": "20001",
                          "f_progress": 14,
                          "f_ready_signal": false,
                          "f_ready_time": null,
                          "f_remaining_cores": 8,
                          "f_remaining_memory": 0,
                          "f_rerun_signal": false,
                          "f_resource_in_use": false,
                          "f_return_resource_time": xxx,
                          "f_role": "guest",
                          "f_roles": {},
                          "f_runtime_conf": {},
                          "f_runtime_conf_on_party": {},
                          "f_start_date": xxx,
                          "f_start_time": xxx,
                          "f_status": "failed",
                          "f_status_code": null,
                          "f_tag": "job_end",
                          "f_train_runtime_conf": {},
                          "f_update_date": xxx,
                          "f_update_time": xxx,
                          "f_user": {},
                          "f_user_id": ""
                        }
        '404':
          description: query job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/list/job':
    post:
      summary: list jobs
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  type: integer
                  description: '`0` means no limit'
                  example: 20
                page:
                  type: integer
                  example: 1
                job_id:
                  type: string
                  example: '202112020129140220090'
                party_id:
                  type: integer
                  example: 9999
                role:
                  type: array
                  items:
                    type: string
                    enum:
                      - guest
                      - host
                      - arbiter
                      - local
                status:
                  type: array
                  items:
                    type: string
                    enum:
                      - success
                      - running
                      - waiting
                      - failed
                      - canceled
                description:
                  type: string
                  description: '`notes` on front-end'
                order_by:
                  type: string
                  description: 'defaults `create_time`'
                  enum:
                      - create_time
                      - start_time
                      - end_time
                      - elapsed
                order:
                  type: string
                  description: 'defaults `desc`'
                  enum:
                      - asc
                      - desc
      responses:
        '200':
          description: jobs list
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      count:
                        type: integer
                        example: 1
                      jobs:
                        type: array
                        items:
                          type: object
                          example:
                            apply_resource_time: 1638379762883
                            cancel_signal: false
                            cancel_time:
                            cores: 4
                            create_date: '2021-12-02 01:29:18'
                            create_time: 1638379758581
                            description: ''
                            dsl:
                              components:
                                dataio_0:
                                  input:
                                    data:
                                      data:
                                        - reader_0.data
                                  module: DataIO
                                  output:
                                    data:
                                      - data
                                    model:
                                      - model
                                hetero_feature_binning_0:
                                  input:
                                    data:
                                      data:
                                        - intersection_0.data
                                  module: HeteroFeatureBinning
                                  output:
                                    data:
                                      - data
                                    model:
                                      - model
                                intersection_0:
                                  input:
                                    data:
                                      data:
                                        - dataio_0.data
                                  module: Intersection
                                  output:
                                    cache:
                                      - cache
                                    data:
                                      - data
                                reader_0:
                                  module: Reader
                                  output:
                                    data:
                                      - data
                                  provider: [email protected]
                            elapsed: 116548
                            end_date: '2021-12-02 01:31:19'
                            end_scheduling_updates: 1
                            end_time: 1638379879547
                            engine_name: STANDALONE
                            engine_type: computing
                            initiator_party_id: '10000'
                            initiator_role: guest
                            is_initiator: true
                            job_id: '202112020129140220090'
                            memory: 0
                            name: ''
                            partners:
                              - 9999
                            party_id: 10000
                            progress: 100
                            ready_signal: false
                            ready_time:
                            remaining_cores: 4
                            remaining_memory: 0
                            rerun_signal: false
                            resource_in_use: false
                            return_resource_time: 1638379879568
                            role: guest
                            roles:
                              guest:
                                - 10000
                              host:
                                - 9999
                            runtime_conf:
                              component_parameters:
                                common:
                                  hetero_feature_binning_0:
                                    adjustment_factor: 0.5
                                    bin_indexes: -1
                                    bin_names:
                                    bin_num: 10
                                    category_indexes:
                                    category_names:
                                    compress_thres: 10000
                                    error: 0.001
                                    head_size: 10000
                                    local_only: false
                                    method: quantile
                                    transform_param:
                                      transform_cols:
                                        - 0
                                        - 1
                                        - 2
                                      transform_names:
                                      transform_type: woe
                                role:
                                  guest:
                                    '0':
                                      dataio_0:
                                        with_label: true
                                      reader_0:
                                        table:
                                          name: breast_hetero_guest
                                          namespace: experiment
                                  host:
                                    '0':
                                      dataio_0:
                                        with_label: false
                                      hetero_feature_binning_0:
                                        transform_param:
                                          transform_type:
                                      reader_0:
                                        table:
                                          name: breast_hetero_host
                                          namespace: experiment
                              conf_path: "/tmp/tmp2zc5tf8b/job_runtime_conf.json"
                              dsl_path: "/tmp/tmp2zc5tf8b/job_dsl.json"
                              dsl_version: 2
                              initiator:
                                party_id: 10000
                                role: guest
                              job_parameters:
                                common:
                                  adaptation_parameters:
                                    if_initiator_baseline: true
                                    request_task_cores: 4
                                    task_cores_per_node: 4
                                    task_memory_per_node: 0
                                    task_nodes: 1
                                  auto_retries: 0
                                  auto_retry_delay: 1
                                  computing_engine: STANDALONE
                                  computing_partitions: 4
                                  eggroll_run: { }
                                  engines_address: { }
                                  federated_mode: SINGLE
                                  federated_status_collect_type: PUSH
                                  federation_engine: STANDALONE
                                  job_type: train
                                  model_id: guest-10000#host-9999#model
                                  model_version: '202112020129140220090'
                                  pulsar_run: { }
                                  rabbitmq_run: { }
                                  spark_run: { }
                                  storage_engine: STANDALONE
                                  task_parallelism: 1
                              role:
                                guest:
                                  - 10000
                                host:
                                  - 9999
                            runtime_conf_on_party:
                              component_parameters:
                                common:
                                  hetero_feature_binning_0:
                                    adjustment_factor: 0.5
                                    bin_indexes: -1
                                    bin_names:
                                    bin_num: 10
                                    category_indexes:
                                    category_names:
                                    compress_thres: 10000
                                    error: 0.001
                                    head_size: 10000
                                    local_only: false
                                    method: quantile
                                    transform_param:
                                      transform_cols:
                                        - 0
                                        - 1
                                        - 2
                                      transform_names:
                                      transform_type: woe
                                role:
                                  guest:
                                    '0':
                                      dataio_0:
                                        with_label: true
                                      reader_0:
                                        table:
                                          name: breast_hetero_guest
                                          namespace: experiment
                                  host:
                                    '0':
                                      dataio_0:
                                        with_label: false
                                      hetero_feature_binning_0:
                                        transform_param:
                                          transform_type:
                                      reader_0:
                                        table:
                                          name: breast_hetero_host
                                          namespace: experiment
                              conf_path: "/tmp/tmp2zc5tf8b/job_runtime_conf.json"
                              dsl_path: "/tmp/tmp2zc5tf8b/job_dsl.json"
                              dsl_version: 2
                              initiator:
                                party_id: 10000
                                role: guest
                              job_parameters:
                                adaptation_parameters:
                                  if_initiator_baseline: false
                                  request_task_cores: 4
                                  task_cores_per_node: 4
                                  task_memory_per_node: 0
                                  task_nodes: 1
                                auto_retries: 0
                                auto_retry_delay: 1
                                computing_engine: STANDALONE
                                computing_partitions: 4
                                eggroll_run:
                                  eggroll.session.processors.per.node: 4
                                engines_address:
                                  computing:
                                    cores_per_node: 20
                                    nodes: 1
                                  federation:
                                    cores_per_node: 20
                                    nodes: 1
                                  storage:
                                    cores_per_node: 20
                                    nodes: 1
                                federated_mode: SINGLE
                                federated_status_collect_type: PUSH
                                federation_engine: STANDALONE
                                job_type: train
                                model_id: guest-10000#host-9999#model
                                model_version: '202112020129140220090'
                                pulsar_run: { }
                                rabbitmq_run: { }
                                spark_run: { }
                                storage_engine: STANDALONE
                                task_parallelism: 1
                              role:
                                guest:
                                  - 10000
                                host:
                                  - 9999
                            start_date: '2021-12-02 01:29:22'
                            start_time: 1638379762999
                            status: success
                            status_code:
                            tag: job_end
                            train_runtime_conf: { }
                            update_date: '2021-12-02 01:32:04'
                            update_time: 1638379924749
                            user:
                              guest:
                                '10000': ''
                              host:
                                '9999': ''
                            user_id: ''

  '/job/list/task':
    post:
      summary: list tasks
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  type: integer
                  description: '`0` means no limit'
                  example: 20
                page:
                  type: integer
                  example: 1
                job_id:
                  type: string
                  example: '202112020129140220090'
                party_id:
                  type: integer
                  example: 9999
                role:
                  type: string
                  enum:
                    - guest
                    - host
                    - arbiter
                    - local
                component_name:
                  type: string
                  example: upload_0
                order_by:
                  type: string
                  description: 'defaults `create_time`'
                  enum:
                      - create_time
                      - start_time
                      - end_time
                      - elapsed
                order:
                  type: string
                  description: 'defaults `asc`'
                  enum:
                      - asc
                      - desc
      responses:
        '200':
          description: jobs list
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      count:
                        type: integer
                        example: 1
                      tasks:
                        type: array
                        items:
                          type: object
                          example:
                            auto_retries: 0
                            auto_retry_delay: 1
                            cmd:
                              - "/root/Codes/FATE/venv/bin/python3.6"
                              - "/root/Codes/FATE/fateflow/python/fate_flow/worker/task_executor.py"
                              - "--job_id"
                              - '202112020129140220090'
                              - "--component_name"
                              - hetero_feature_binning_0
                              - "--task_id"
                              - 202112020129140220090_hetero_feature_binning_0
                              - "--task_version"
                              - 0
                              - "--role"
                              - guest
                              - "--party_id"
                              - '10000'
                              - "--config"
                              - "/root/Codes/FATE/fateflow/jobs/202112020129140220090/guest/10000/hetero_feature_binning_0/202112020129140220090_hetero_feature_binning_0/0/task_executor/6b6f4b1852cc11ec8a8700155d13c16c/config.json"
                              - "--result"
                              - "/root/Codes/FATE/fateflow/jobs/202112020129140220090/guest/10000/hetero_feature_binning_0/202112020129140220090_hetero_feature_binning_0/0/task_executor/6b6f4b1852cc11ec8a8700155d13c16c/result.json"
                              - "--log_dir"
                              - "/root/Codes/FATE/fateflow/logs/202112020129140220090/guest/10000/hetero_feature_binning_0"
                              - "--parent_log_dir"
                              - "/root/Codes/FATE/fateflow/logs/202112020129140220090/guest/10000"
                              - "--worker_id"
                              - 6b6f4b1852cc11ec8a8700155d13c16c
                              - "--run_ip"
                              - 127.0.0.1
                              - "--job_server"
                              - 127.0.0.1:9380
                              - "--session_id"
                              - 202112020129140220090_hetero_feature_binning_0_0_guest_10000
                              - "--federation_session_id"
                              - 202112020129140220090_hetero_feature_binning_0_0
                            component_module: HeteroFeatureBinning
                            component_name: hetero_feature_binning_0
                            component_parameters:
                              CodePath: HeteroFeatureBinningGuest
                              ComponentParam:
                                _feeded_deprecated_params: [ ]
                                _is_raw_conf: false
                                _name: HeteroFeatureBinning#hetero_feature_binning_0
                                _user_feeded_params:
                                  - head_size
                                  - category_names
                                  - bin_num
                                  - transform_param.transform_names
                                  - transform_param
                                  - compress_thres
                                  - error
                                  - method
                                  - bin_indexes
                                  - transform_param.transform_type
                                  - bin_names
                                  - category_indexes
                                  - local_only
                                  - transform_param.transform_cols
                                  - adjustment_factor
                                adjustment_factor: 0.5
                                bin_indexes: -1
                                bin_names:
                                bin_num: 10
                                category_indexes:
                                category_names:
                                compress_thres: 10000
                                encrypt_param:
                                  key_length: 1024
                                  method: Paillier
                                error: 0.001
                                head_size: 10000
                                local_only: false
                                method: quantile
                                need_run: true
                                optimal_binning_param:
                                  adjustment_factor:
                                  init_bin_nums: 1000
                                  init_bucket_method: quantile
                                  max_bin:
                                  max_bin_pct: 1
                                  metric_method: iv
                                  min_bin_pct: 0.05
                                  mixture: true
                                skip_static: false
                                transform_param:
                                  transform_cols:
                                    - 0
                                    - 1
                                    - 2
                                  transform_names:
                                  transform_type: woe
                              conf_path: "/tmp/tmp2zc5tf8b/job_runtime_conf.json"
                              dsl_path: "/tmp/tmp2zc5tf8b/job_dsl.json"
                              dsl_version: 2
                              initiator:
                                party_id: 10000
                                role: guest
                              job_parameters:
                                common:
                                  adaptation_parameters:
                                    if_initiator_baseline: true
                                    request_task_cores: 4
                                    task_cores_per_node: 4
                                    task_memory_per_node: 0
                                    task_nodes: 1
                                  auto_retries: 0
                                  auto_retry_delay: 1
                                  computing_engine: STANDALONE
                                  computing_partitions: 4
                                  eggroll_run: { }
                                  engines_address: { }
                                  federated_mode: SINGLE
                                  federated_status_collect_type: PUSH
                                  federation_engine: STANDALONE
                                  job_type: train
                                  model_id: guest-10000#host-9999#model
                                  model_version: '202112020129140220090'
                                  pulsar_run: { }
                                  rabbitmq_run: { }
                                  spark_run: { }
                                  storage_engine: STANDALONE
                                  task_parallelism: 1
                              local:
                                party_id: 10000
                                role: guest
                              module: HeteroFeatureBinning
                              role:
                                guest:
                                  - 10000
                                host:
                                  - 9999
                            create_date: '2021-12-02 01:29:21'
                            create_time: 1638379761918
                            elapsed: 9095
                            end_date: '2021-12-02 01:31:04'
                            end_time: 1638379864051
                            engine_conf:
                              computing_engine: STANDALONE
                            federated_mode: SINGLE
                            federated_status_collect_type: PUSH
                            initiator_party_id: '10000'
                            initiator_role: guest
                            job_id: '202112020129140220090'
                            party_id: '10000'
                            party_status: success
                            provider_info:
                              class_path:
                                feature_instance: feature.instance.Instance
                                feature_vector: feature.sparse_vector.SparseVector
                                homo_model_convert: protobuf.homo_model_convert.homo_model_convert
                                interface: components.components.Components
                                model: protobuf.generated
                                model_migrate: protobuf.model_migrate.model_migrate
                              env:
                                PYTHONPATH: "/root/Codes/FATE/python"
                              name: fate
                              path: "/root/Codes/FATE/python/federatedml"
                              version: 1.7.0
                            role: guest
                            run_ip: 127.0.0.1
                            run_on_this_party: true
                            run_pid: 29934
                            start_date: '2021-12-02 01:30:47'
                            start_time: 1638379847118
                            status: success
                            status_code:
                            task_id: 202112020129140220090_hetero_feature_binning_0
                            task_version: 0
                            update_date: '2021-12-02 01:31:06'
                            update_time: 1638379866439
                            worker_id: 6b6f4b1852cc11ec8a8700155d13c16c

  '/job/update':
    post:
      summary: job notes
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
                - role
                - party_id
                - notes
              properties:
                job_id:
                  type: string
                  example: "2022xxx"
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                notes:
                  type: string
                  example: this is a test
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/parameter/update':
    post:
      summary: update job parameter
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: "2022xxx"
                component_parameters:
                  type: object
                  example:
                    {
                      "common":
                      {
                        "hetero_lr_0":
                        {
                          "max_iter": 10
                        }
                      }
                    }
                job_parameters:
                  type: object
                  example:
                    {
                      "common":
                      {
                        "auto_retries": 2
                      }
                    }
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "component_parameters":
                        {
                          "common":
                          {
                            "hetero_lr_0":
                            {
                              "alpha": 0.01,
                              "batch_size": 320,
                              "init_param":
                              {
                                "init_method": "random_uniform"
                              },
                              "learning_rate": 0.15,
                              "max_iter": 10,
                              "optimizer": "rmsprop",
                              "penalty": "L2"
                            },
                            "intersection_0":
                            {
                              "intersect_method": "raw",
                              "only_output_key": false,
                              "sync_intersect_ids": true
                            }
                          },
                          "role":
                          {
                            "guest":
                            {
                              "0":
                              {
                                "dataio_0":
                                {
                                  "label_name": "y",
                                  "label_type": "int",
                                  "output_format": "dense",
                                  "with_label": true
                                },
                                "reader_0":
                                {
                                  "table":
                                  {
                                    "name": "breast_hetero_guest",
                                    "namespace": "experiment"
                                  }
                                }
                              }
                            },
                            "host":
                            {
                              "0":
                              {
                                "dataio_0":
                                {
                                  "output_format": "dense",
                                  "with_label": false
                                },
                                "evaluation_0":
                                {
                                  "need_run": false
                                },
                                "reader_0":
                                {
                                  "table":
                                  {
                                    "name": "breast_hetero_host",
                                    "namespace": "experiment"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "components":
                        [],
                        "job_parameters":
                        {
                          "common":
                          {
                            "adaptation_parameters":
                            {
                              "if_initiator_baseline": true,
                              "request_task_cores": 4,
                              "task_cores_per_node": 4,
                              "task_memory_per_node": 0,
                              "task_nodes": 1
                            },
                            "auto_retries": 2,
                            "auto_retry_delay": 1,
                            "computing_engine": "EGGROLL",
                            "computing_partitions": 4,
                            "eggroll_run":
                            {},
                            "engines_address":
                            {},
                            "federated_mode": "MULTIPLE",
                            "federated_status_collect_type": "PUSH",
                            "inheritance_info":
                            {},
                            "job_type": "train",
                            "model_id": "arbiter-10001#guest-20001#host-10001#model",
                            "model_version": "202204251958539401540",
                            "pulsar_run":
                            {},
                            "rabbitmq_run":
                            {},
                            "spark_run":
                            {},
                            "task_parallelism": 1
                          }
                        },
                        "src_party_id": "20001",
                        "src_role": "guest"
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/config':
    post:
      summary: job config
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: "2022xxx"
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "dsl":
                        {},
                        "job_id": "2022xxx",
                        "model_info":
                        {},
                        "runtime_conf":
                        {},
                        "train_runtime_conf":
                        {}
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/log/download':
    post:
      summary: download job log (tar.gz)
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
      responses:
        '200':
          description: get job log success
          content:
            application/octet-stream:
              schema:
                type: string
                description: file xxx_log.tar.gz
        '404':
          description: get job list failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 404
                  retmsg:
                    type: string
                    example: Log file path xxx not found. Please check if the job id is valid.

  '/job/log/path':
    post:
      summary: job log path
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "logs_directory": "/data/projects/fate/fateflow/logs/xxx"
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/task/query':
    post:
      summary: query task
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: reader_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    description: tasks list
                    items:
                      type: object
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find task

  '/job/clean':
    post:
      summary: clean job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: reader_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find task

  '/job/clean/queue':
    post:
      summary: cancel waiting job
      tags:
        - job
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "202204261616186991350": 0,
                        "202204261616198643190": 0,
                        "202204261616210073410": 0
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: server error

  '/tracking/job/data_view':
    post:
      summary: data view
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "dataset":
                        {
                          "guest":
                          {
                            "9999":
                            {
                              "Reader_0": "xxx.xxx"
                            }
                          },
                          "host":
                          {
                            "10000":
                            {
                              "Reader_0": "xxx.xxx"
                            }
                          }
                        },
                        "model_summary":
                        {},
                        "partner":
                        {
                          "host":
                          [
                            10000
                          ]
                        },
                        "roles":
                        {
                          "guest":
                          [
                            9999
                          ],
                          "host":
                          [
                            10000
                          ]
                        }
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/metric/all':
    post:
      summary: get component all metric
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: HeteroSecureBoost_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "train":
                        {
                          "loss":
                          {
                            "data":
                            [
                              [
                                0,
                                0.6076415445876732
                              ],
                              [
                                1,
                                0.5374539452565573
                              ],
                              [
                                2,
                                0.4778598986135903
                              ],
                              [
                                3,
                                0.42733599866560723
                              ],
                              [
                                4,
                                0.38433409799127843
                              ]
                            ],
                            "meta":
                            {
                              "Best": 0.38433409799127843,
                              "curve_name": "loss",
                              "metric_type": "LOSS",
                              "name": "train",
                              "unit_name": "iters"
                            }
                          }
                        }
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/metrics':
    post:
      summary: get component metric name and namespace
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "train":
                        [
                          "intersection"
                        ]
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/metric_data':
    post:
      summary: get component metric data
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
                - metric_name
                - metric_namespace
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
                metric_name:
                  type: string
                  example: intersection
                metric_namespace:
                  type: string
                  example: train
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "data":
                        [
                          [
                            "intersect_count",
                            569
                          ],
                          [
                            "intersect_rate",
                            1.0
                          ],
                          [
                            "unmatched_count",
                            0
                          ],
                          [
                            "unmatched_rate",
                            0.0
                          ]
                        ],
                        "meta":
                        {
                          "intersect_method": "raw",
                          "join_method": "inner_join",
                          "metric_type": "INTERSECTION",
                          "name": "intersection"
                        }
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/parameters':
    post:
      summary: get component parameters
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "ComponentParam":
                        {
                          "_feeded_deprecated_params":
                          [
                            "repeated_id_owner",
                            "intersect_cache_param",
                            "join_role",
                            "encode_params",
                            "allow_info_share",
                            "repeated_id_process",
                            "random_bit",
                            "with_encode",
                            "info_owner"
                          ],
                          "_is_raw_conf": false,
                          "_name": "Intersection#Intersection_0",
                          "_user_feeded_params":
                          [
                            "repeated_id_owner",
                            "encode_params.salt",
                            "intersect_method",
                            "intersect_cache_param.encrypt_type",
                            "encode_params.encode_method",
                            "encode_params",
                            "intersect_cache_param",
                            "intersect_cache_param.id_type",
                            "intersect_cache_param.use_cache",
                            "join_role",
                            "allow_info_share",
                            "repeated_id_process",
                            "sync_intersect_ids",
                            "random_bit",
                            "only_output_key",
                            "with_encode",
                            "encode_params.base64",
                            "info_owner"
                          ],
                          "allow_info_share": false,
                          "cardinality_only": false,
                          "dh_params":
                          {
                            "hash_method": "sha256",
                            "key_length": 1024,
                            "salt": ""
                          },
                          "encode_params":
                          {
                            "base64": false,
                            "encode_method": "none",
                            "salt": ""
                          },
                          "info_owner": "guest",
                          "intersect_cache_param":
                          {
                            "encrypt_type": "sha256",
                            "id_type": "phone",
                            "use_cache": false
                          },
                          "intersect_method": "raw",
                          "intersect_preprocess_params":
                          {
                            "encrypt_method": "rsa",
                            "false_positive_rate": 0.001,
                            "filter_owner": "guest",
                            "hash_method": "sha256",
                            "preprocess_method": "sha256",
                            "preprocess_salt": "",
                            "random_state": null
                          },
                          "join_method": "inner_join",
                          "join_role": "guest",
                          "new_sample_id": false,
                          "only_output_key": false,
                          "random_bit": 128,
                          "raw_params":
                          {
                            "base64": false,
                            "hash_method": "none",
                            "join_role": "guest",
                            "salt": "",
                            "use_hash": false
                          },
                          "repeated_id_owner": "guest",
                          "repeated_id_process": false,
                          "rsa_params":
                          {
                            "final_hash_method": "sha256",
                            "hash_method": "sha256",
                            "key_length": 1024,
                            "random_base_fraction": null,
                            "random_bit": 128,
                            "salt": "",
                            "split_calculation": false
                          },
                          "run_cache": false,
                          "run_preprocess": false,
                          "sample_id_generator": "guest",
                          "sync_cardinality": false,
                          "sync_intersect_ids": true,
                          "with_encode": false,
                          "with_sample_id": false
                        },
                        "module": "Intersection"
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/summary/download':
    post:
      summary: get component summary
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "cardinality_only": false,
                        "intersect_num": 569,
                        "intersect_rate": 1.0
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/output/model':
    post:
      summary: get component output model
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/output/data':
    post:
      summary: get component output data
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      [
                        [
                          [
                            "58",
                            1,
                            -0.422281,
                            -0.558102,
                            -0.506991,
                            -0.450875,
                            -1.326851,
                            -1.223647,
                            -1.296979,
                            -1.575895,
                            -0.747019,
                            -1.166825
                          ],
                          [
                            "66",
                            1,
                            -1.213336,
                            0.957974,
                            -1.19832,
                            -0.966647,
                            0.983301,
                            -0.558944,
                            -0.854288,
                            -0.752745,
                            -0.036814,
                            0.452425
                          ]
                        ]
                      ]
                  meta:
                    type: object
                    example:
                      {
                        "header":
                        [
                          [
                            "id",
                            "y",
                            "x0",
                            "x1",
                            "x2",
                            "x3",
                            "x4",
                            "x5",
                            "x6",
                            "x7",
                            "x8",
                            "x9"
                          ]
                        ],
                        "names":
                        [
                          "data_0"
                        ],
                        "total":
                        [
                          569
                        ]
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/output/data/download':
    post:
      summary: download component output data (tar.gz)
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/octet-stream:
              schema:
                type: string
                example: ""
                description: file data.tar.gz
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/output/data/table':
    post:
      summary: get component output data table info
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        [
                          {
                            "data_name": "data_0",
                            "table_name": "ab035e12b09711ec943e525400c367ed",
                            "table_namespace": "output_data_202203311009181495690_Intersection_0_0"
                          }
                        ]
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: No found table, please check if the parameters are correct

  '/tracking/component/list':
    post:
      summary: get component list
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
              type: object
              properties:
                job_id:
                  type: string
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "components":
                        [
                          "HeteroFeatureSelection_0",
                          "DataIO_0",
                          "Reader_0",
                          "HeteroSecureBoost_0",
                          "HeteroFeatureBinning_0",
                          "Intersection_0",
                          "Evaluation_0"
                        ]
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/resource/query':
    post:
      summary: query conputing engine resource
      tags:
        - resource
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - engine_name
              type: object
              properties:
                engine_name:
                  type: string
                  example: EGGROLL, SPARK
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example: {"computing_engine_resource":{"f_cores":16,"f_create_date":"2022-02-10 16:14:03","f_create_time":1644480843818,"f_engine_config":{"cores_per_node":16,"nodes":1},"f_engine_entrance":"fate_on_eggroll","f_engine_name":"EGGROLL","f_engine_type":"computing","f_memory":0,"f_nodes":1,"f_remaining_cores":16,"f_remaining_memory":0,"f_update_date":"2022-04-27 15:48:33","f_update_time":1651045713996},"use_resource_job":[]}
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/resource/return':
    post:
      summary: return job resource
      tags:
        - resource
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
              type: object
              properties:
                engine_name:
                  type: string
                  example: 202204261616175720130
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example: [{"job_id":"202204261616175720130","party_id":"20001","resource_in_use":true,"resource_return_status":ture,"role":"guest"}]
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no found job

  '/permission/grant/privilege':
    post:
      summary: grant privilege
      tags:
        - permission
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - src_role
                - src_party_id
              type: object
              properties:
                src_role:
                  type: string
                  example: "guest"
                src_party_id:
                  type: string
                  example: 9999
                privilege_role:
                  type: string
                  description: multiple separated by ",". like "guest, host, arbiter" or "all"
                  example: all
                privilege_component:
                  type: string
                  description: multiple separated by ",". like "create, run, stop" or "all"
                  example: all
                privilege_command:
                  type: string
                  description: multiple separated bu ",". like "reader, dataio, ..." or "all"
                  example: all

      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/permission/delete/privilege':
    post:
      summary: delete privilege
      tags:
        - permission
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - src_role
                - src_party_id
              type: object
              properties:
                src_role:
                  type: string
                  example: "guest"
                src_party_id:
                  type: string
                  example: 9999
                privilege_role:
                  type: string
                  description: multiple separated by ",". like "guest, host, arbiter" or "all"
                  example: all
                privilege_component:
                  type: string
                  description: multiple separated by ",". like "create, run, stop" or "all"
                  example: all
                privilege_command:
                  type: string
                  description: multiple separated bu ",". like "reader, dataio, ..." or "all"
                  example: all

      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/permission/query/privilege':
    post:
      summary: query privilege
      tags:
        - permission
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - src_role
                - src_party_id
              type: object
              properties:
                src_role:
                  type: string
                  example: "guest"
                src_party_id:
                  type: string
                  example: 9999
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example: {"privilege_command":["stop","run","create"],"privilege_component":["reader", "dataio","heterolinr", "heterolr", "localbaseline","columnexpand","heteropearson","featurescale","datastatistics","feldmanverifiablesum"],"privilege_role":["host","guest","arbiter"],"role":"guest","src_party_id":"9999"}
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error


  '/info/fateboard':
    post:
      summary: get fateboard host and port
      tags:
        - information
      responses:
        '200':
          description: fateboard host and port
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      host:
                        type: string
                        example: 127.0.0.1
                      port:
                        type: integer
                        example: 8080
        '404':
          description: fateboard is not configured
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 404
                  retmsg:
                    type: string
                    example: fateboard is not configured

  '/info/mysql':
    post:
      summary: test mysql connection
      tags:
        - information
      responses:
        '200':
          description: connect to mysql successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: mysql only available on cluster mode
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 404
                  retmsg:
                    type: string
                    example: mysql only available on cluster mode
        '503':
          description: connect to mysql failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 503
                  retmsg:
                    type: string
                    description: error message

  '/info/eggroll':
    post:
      summary: test eggroll connection
      tags:
        - information
      responses:
        '200':
          description: connect to eggroll successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: eggroll only available on cluster mode
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 404
                  retmsg:
                    type: string
                    example: eggroll only available on cluster mode
        '503':
          description: connect to eggroll failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 503
                  retmsg:
                    type: string
                    description: error message

  '/model/deploy':
    post:
      summary: deploy a model for predict
      tags:
        - model
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model_id
                - model_version
              properties:
                model_id:
                  type: string
                  example: 'arbiter-10000#guest-9999#host-10000#model'
                model_version:
                  type: string
                  example: '202111032155391167400'
                components_checkpoint:
                  type: object
                  description: specify a checkpoint model to replace the pipeline model
                  example:
                    hetero_lr_0:
                      step_index: 5
                  additionalProperties:
                    type: object
                    description: use step_index or step_name to specity a checkpoint
                    properties:
                      step_index:
                        type: integer
                        example: 5
                      step_name:
                        type: string
                        example: round_5
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      model_id:
                        type: string
                        example: 'arbiter-9999#guest-10000#host-9999#model'
                      model_version:
                        type: string
                        example: '202111032227378766180'
                      arbiter:
                        type: object
                        properties:
                          party_id:
                            type: integer
                            example: 9999
                      guest:
                        type: object
                        properties:
                          party_id:
                            type: integer
                            example: 10000
                      host:
                        type: object
                        properties:
                          party_id:
                            type: integer
                            example: 9999
                      detail:
                        type: object
                        properties:
                          arbiter:
                            type: object
                            properties:
                              party_id:
                                type: object
                                properties:
                                  retcode:
                                    type: integer
                                    example: 0
                                  retmsg:
                                    type: string
                                    example: deploy model of role arbiter 9999 success
                          guest:
                            type: object
                            properties:
                              party_id:
                                type: object
                                properties:
                                  retcode:
                                    type: integer
                                    example: 0
                                  retmsg:
                                    type: string
                                    example: deploy model of role guest 10000 success
                          host:
                            type: object
                            properties:
                              party_id:
                                type: object
                                properties:
                                  retcode:
                                    type: integer
                                    example: 0
                                  retmsg:
                                    type: string
                                    example: deploy model of role host 9999 success

  '/model/transfer/{model_id}/{model_version}':
    post:
      summary: download a model by model_id and model_version
      tags:
        - model
      parameters:
        - name: model_id
          in: path
          required: true
          description: 'model id (replace # with ~)'
          schema:
            type : string
            example: 'host~10000~arbiter-10000~guest-9999~host-10000~model'
        - name: model_version
          in: path
          required: true
          description: model version
          schema:
            type : string
            example: '202105060929263278441'
      responses:
        '200':
          description: model data
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    description: base64 encoded model data
        '404':
          description: model not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 404
                  retmsg:
                    type: string
                    example: model not found

  '/model/load':
    post:
      summary: load a deployed model on Fate-Serving
      tags:
        - model
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - initiator
                - role
                - job_parameters
              properties:
                initiator:
                  type: object
                  properties:
                    party_id:
                      type: string
                      example: '10000'
                    role:
                      type: string
                      example: guest
                role:
                  type: object
                  example:
                    guest:
                      - '10000'
                    host:
                      - '10000'
                    arbiter:
                      - '10000'
                job_parameters:
                  type: object
                  properties:
                    model_id:
                      type: string
                      example: arbiter-10000#guest-10000#host-10000#model
                    model_version:
                      type: string
                      example: '2019081217340125761469'
      responses:
        '200':
          description: loading success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  jobId:
                    type: string
                    example: "2019081217340125761469"
                  data:
                    type: object
                    example:
                      detail:
                        guest:
                          '9999':
                            retcode: 0
                            retmsg: success
                        host:
                          '10000':
                            retcode: 0
                            retmsg: success
                      guest:
                        '9999': 0
                      host:
                        '10000': 0

  '/model/bind':
    post:
      summary: bind a deployed model to Fate-Serving
      tags:
        - model
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - service_id
                - initiator
                - role
                - job_parameters
              properties:
                service_id:
                  type: string
                  example: "123"
                initiator:
                  type: object
                  properties:
                    party_id:
                      type: string
                      example: "10000"
                    role:
                      type: string
                      example: guest
                job_parameters:
                  type: object
                  properties:
                    model_id:
                      type: string
                      example: arbiter-10000#guest-10000#host-10000#model
                    model_version:
                      type: string
                      example: "2019081217340125761469"
      responses:
        '200':
          description: binding success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: service id is 123

  '/checkpoint/list':
    post:
      summary: list checkpoints
      tags:
        - checkpoint
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model_id
                - model_version
                - role
                - party_id
                - component_name
              properties:
                model_id:
                  type: string
                  example: 'arbiter-10000#guest-9999#host-10000#model'
                model_version:
                  type: string
                  example: '202111032155391167400'
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 9999
                component_name:
                  type: string
                  example: hetero_lr_0
      responses:
        '200':
          description: checkpoints list
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        create_time:
                          type: string
                          example: '2021-11-07T02:34:54.683015'
                        step_index:
                          type: integer
                          example: 0
                        step_name:
                          type: string
                          example: step_name
                        models:
                          type: object
                          example:
                            HeteroLogisticRegressionMeta:
                              buffer_name: LRModelMeta
                              sha1: 6871508f6e6228341b18031b3623f99a53a87147
                            HeteroLogisticRegressionParam:
                              buffer_name: LRModelParam
                              sha1: e3cb636fc93675684bff27117943f5bfa87f3029
                          additionalProperties:
                            type: object
                            properties:
                              buffer_name:
                                type: string
                                example: HeteroLogisticRegressionMeta
                              sha1:
                                type: string
                                example: 6871508f6e6228341b18031b3623f99a53a87147

  '/checkpoint/get':
    post:
      summary: get a checkpoint
      tags:
        - checkpoint
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model_id
                - model_version
                - role
                - party_id
                - component_name
              properties:
                model_id:
                  type: string
                  example: 'arbiter-10000#guest-9999#host-10000#model'
                model_version:
                  type: string
                  example: '202111032155391167400'
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 9999
                component_name:
                  type: string
                  example: hetero_lr_0
                step_index:
                  type: integer
                  example: 0
      responses:
        '200':
          description: checkpoint data
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      create_time:
                        type: string
                        example: '2021-11-07T02:34:54.683015'
                      step_index:
                        type: integer
                        example: 0
                      step_name:
                        type: string
                        example: step_name
                      models:
                        type: object
                        example:
                          HeteroLogisticRegressionMeta: 'CgJMMhEtQxzr4jYaPxkAAAAAAADwPyIHcm1zcHJvcDD///8BOTMzMzMzM8M/QApKBGRpZmZYAQ=='
                          HeteroLogisticRegressionParam: 'Ig0KAng3EW1qASu+uuO/Ig0KAng0EcNi7a65ReG/Ig0KAng4EbJbl4gvVea/Ig0KAng2EcZwlVZTkOu/Ig0KAngwEVpG8dCbGvG/Ig0KAng5ESJNTx5MLve/Ig0KAngzEZ88H9P8qfO/Ig0KAng1EVfWP8JJv/K/Ig0KAngxEVS0xVXoTem/Ig0KAngyEaApgW32Q/K/KSiiE8AukPs/MgJ4MDICeDEyAngyMgJ4MzICeDQyAng1MgJ4NjICeDcyAng4MgJ4OUj///8B'
                        additionalProperties:
                          type: string
                          description: base64 encoded model data
        '404':
          description: checkpoint not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 404
                  retmsg:
                    type: string
                    example: The checkpoint was not found.

  '/component/validate':
    post:
      summary: validate component parameters
      tags:
        - component
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                dsl_version:
                  type: integer
                  example: 2
                component_name:
                  type: string
                  example: dataio_0
                component_module_name:
                  type: string
                  example: DataIO
                role:
                  type: object
                  example:
                    guest:
                      - 10000
                    host:
                      - 9999
                    arbiter:
                      - 9999
                component_parameters:
                  type: object
                  description: required if `dsl_version` == 2
                  example:
                    common:
                      dataio_0:
                        output_format: dense
                      role:
                        guest:
                          '0':
                            dataio_0:
                              with_label: true
                        host:
                          '0':
                            dataio_0:
                              with_label: false
                              output_format: dense
                role_parameters:
                  type: object
                  description: required if `dsl_version` == 1
                  example:
                    guest:
                      dataio_0:
                        with_label:
                          - true
                        label_name:
                          - y
                        label_type:
                          - int
                        output_format:
                          - dense
                        missing_fill:
                          - true
                        outlier_replace:
                          - true
                    host:
                      dataio_0:
                        with_label:
                          - false
                        output_format:
                          - dense
                        outlier_replace:
                          - true
                algorithm_parameters:
                  type: object
                  description: required if `dsl_version` == 1
                  example:
                    hetero_feature_binning_0:
                      method: quantile
                      compress_thres: 10000
                      head_size: 10000
                      error: 0.001
                      bin_num: 10
                      adjustment_factor: 0.5
                      local_only: false
                      transform_param:
                        transform_cols: -1
                        transform_type: bin_num
      responses:
        '200':
          description: validation passed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '400':
          description: validation failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 400
                  retmsg:
                    type: string
                    description: error message
                    example: "Component dataio_0, module DataIO, does not pass component check, error msg is dataio param's dendse not supported, should be one of ['dense', 'sparse']"

tags:
  - name: data-access
  - name: table
  - name: job
  - name: tracking
  - name: information
  - name: model
  - name: checkpoint
  - name: component

servers:
  - description: Default Server URL
    url: http://localhost:9380/v1

三, 启动swagger-editor

将上一步准备的4个文件,放在同一目录,执行 sh start.sh
启动成功后输入http://127.0.0.1:80,出现如下界面:
Docker 运行swagger-editor实现在线接口文档维护与调试_第1张图片

1. 使用说明

界面左边是api 文件的 yaml 描述文件, 左边部分可以直接编辑API文档,编辑会立即更新到右边视图。右边是swagger-UI,可以查看文档,并直接进行API的测试。

上面有一排辅助菜单,包括yaml导入,文件格式转换,生成服务端/客户端代码等。

大家可以自行探索!

2. 完整代码备份

如何使用下面的备份文件恢复成原始的项目代码,请移步查阅:神奇代码恢复工具

//goto docker-compose.yml
version: '3'
services:
  swagger-editor:
    image: swaggerapi/swagger-editor
    container_name: swagger-editor
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 20M
        reservations:
          cpus: '0.05'
          memory: 10M
    volumes:
      - ./swagger.yaml:/swagger.yaml
    ports:
      - 80:8080
    environment:
      SWAGGER_FILE: /swagger.yaml
    restart: on-failure
    logging:
      driver: 'json-file'
      options:
        max-size: '30m'
        max-file: '1'
//goto restart.sh
#!/bin/bash
docker-compose down && docker-compose --compatibility up -d
//goto stop.sh
#!/bin/bash
docker-compose down
//goto swagger.yaml
openapi: 3.0.3
info:
  version: '1.10.0'
  title: Fate Flow 接口文档

paths:
  '/data/upload':
    post:
      summary: upload
      tags:
        - data-access
      parameters:
        - in: query
          name: id_delimiter
          description: data delimiter
          required: false
          schema:
            type: string
            example: ","
        - in: query
          name: head
          description: data head
          required: true
          schema:
            type: integer
            example: 0, 1
        - in: query
          name: partition
          description: compoting table partitions
          required: true
          schema:
            type: integer
            example: 16, ...
        - in: query
          name: table_name
          description: fate table name
          required: true
          schema:
            type: string
            example: breast_hetero_guest
        - in: query
          name: namespace
          description: fate table namespace
          required: true
          schema:
            type: string
            example: experiment
        - in: query
          name: storage_engine
          description: data storage engin
          required: false
          schema:
            type: string
            example: eggroll, localfs, hdfs, ...
        - in: query
          name: destory
          description: destory old table and upload new table
          required: false
          schema:
            type: integer
            example: 0, 1
        - in: query
          name: extend_sid
          description: extend sid to first column
          required: false
          schema:
            type: integer
            example: 0, 1
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
      responses:
        '200':
          description: upload success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "board_url": "http://xxx:8080/index.html#/dashboard?job_id=xxx&role=local&party_id=0",
                        "code": 0,
                        "dsl_path": "/data/projects/fate/fateflow/jobs/xxx/job_dsl.json",
                        "job_id": xxx,
                        "logs_directory": "/data/projects/fate/fateflow/logs/xxx",
                        "message": "success",
                        "model_info": {
                          "model_id": "local-0#model",
                          "model_version": xxx
                        },
                        "namespace": "experiment",
                        "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/xxx/pipeline_dsl.json",
                        "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/xxx/local/0/job_runtime_on_party_conf.json",
                        "runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/job_runtime_conf.json",
                        "table_name": "breast_hetero_guest",
                        "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/train_runtime_conf.json"
                      }
        '404':
          description: upload failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: required parameters are missing

  '/data/download':
    post:
      summary: download data
      tags:
        - data-access
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
                - output_path
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
                output_path:
                  type: string
                  example: /data/projects/fate/fateflow/experiment_download_breast_guest.csv
                delimiter:
                  type: string
                  example: ","
      responses:
        '200':
          description: download success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "board_url": "http://xxx:8080/index.html#/dashboard?job_id=xxx&role=local&party_id=0",
                        "code": 0,
                        "dsl_path": "/data/projects/fate/fateflow/jobs/xxx/job_dsl.json",
                        "job_id": xxx,
                        "logs_directory": "/data/projects/fate/fateflow/logs/xxx",
                        "message": "success",
                        "model_info": {
                          "model_id": "local-0#model",
                          "model_version": xxx
                        },
                        "namespace": "experiment",
                        "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/xxx/pipeline_dsl.json",
                        "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/xxx/local/0/job_runtime_on_party_conf.json",
                        "runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/job_runtime_conf.json",
                        "table_name": "breast_hetero_guest",
                        "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/xxx/train_runtime_conf.json"
                      }
        '404':
          description: download failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: required parameters are missing

  '/data/upload/history':
    post:
      summary: history of upload job info
      tags:
        - data-access
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                job_id:
                  type: string
                  example: 202103241706521313480
                limit:
                  type: integer
                  description: limit output
                  example: 1
      responses:
        '200':
          description: get success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "202103241706521313480": {
                            "notes": "",
                            "schema": {
                                "header": "y,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9",
                                "sid": "id"
                            },
                            "upload_info": {
                              "namespace": "experiment",
                              "partition": 4,
                              "table_name": "breast_hetero_guest",
                              "upload_count": 569
                            }
                          }
                        }
        '404':
          description: get failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 100
                  retmsg:
                    type: string
                    example: server error

  '/table/bind':
    post:
      summary: bind a storage address to fate table
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - engine
                - address
                - namespace
                - name
                - head
                - id_delimiter
                - partitions
              properties:
                engine:
                  type: string
                  example: mysql
                name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
                address:
                  type: object
                  description: storage address
                  example:
                    user: fate
                    passwd: fate
                    host: 127.0.0.1
                    port: 3306
                    db: xxx
                    name: xxx
                partitions:
                  type: integer
                  description: fate computing table partitions
                  example: 16
                head:
                  type: integer
                  description: 1 means data have head
                  example: 0,1
                id_delimiter:
                  type: string
                  description: data table or intermediate storage table delimiter
                  example: ","
                in_serialized:
                  type: integer
                  description: data serialized, standlone/eggroll/mysql/path storage default 1, others default 0
                  example: 0, 1
                drop:
                  type: integer
                  description: if table is exist, will delete it
                  example: 0,1
                id_column:
                  type: string
                  example: "id"
                feature_column:
                  type: string
                  description: delimited by ","
                  example: x1,x2,x3
      responses:
        '200':
          description: bind table success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      table_name:
                        type: string
                        example: breast_hetero_guest
                      namespace:
                        type: string
                        example: experiment
        '404':
          description: bind table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 100
                  retmsg:
                    type: string
                    example: engine xxx address xxx check failed

  '/table/delete':
    post:
      summary: delete fate table
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: delete table success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      table_name:
                        type: string
                        example: breast_hetero_guest
                      namespace:
                        type: string
                        example: experiment
        '404':
          description: delete table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/list':
    post:
      summary: get job all tables
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
                - role
                - party_id
              properties:
                job_id:
                  type: string
                  example: 202101251515021092240
                role:
                  type: string
                  example: guest
                party_id:
                  type: string
                  example: 10000
      responses:
        '200':
          description: get tables success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "DataIO_0":
                        {
                          "input":
                          {
                            "Reader_0.data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          },
                          "output":
                          {
                            "data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          }
                        },
                        "Intersection_0":
                        {
                          "input":
                          {
                            "DataIO_0.data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          },
                          "output":
                          {
                            "data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          }
                        },
                        "Reader_0":
                        {
                          "input":
                          {
                            "table":
                            {
                              "name": xxx,
                              "namespace": "xxxx"
                            }
                          },
                          "output":
                          {
                            "data_0":
                            {
                              "name": xxx,
                              "namespace": xxx
                            }
                          }
                        }
                      }
        '404':
          description: delete table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/table_info':
    post:
      summary: query table info
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: get tables success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "address":
                        {},
                        "count": 569,
                        "exist": 1,
                        "namespace": "experiment",
                        "partition": 16,
                        "schema":
                        {
                          "header": "id,y,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9",
                          "sid": "id"
                        },
                        "table_name": "breast_hetero_guest"
                      }
        '404':
          description: query table failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/tracking/source':
    post:
      summary: tracking table source
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: tracking success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "parent_table_name": xxx,
                          "parent_table_namespace": xxx,
                          "source_table_name": xxx,
                          "source_table_namespace": xxx
                        }
        '404':
          description: tracking failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/table/tracking/job':
    post:
      summary: tracking using table job
      tags:
        - table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - table_name
                - namespace
              properties:
                table_name:
                  type: string
                  example: breast_hetero_guest
                namespace:
                  type: string
                  example: experiment
      responses:
        '200':
          description: tracking success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "count": 5,
                          "job":
                          [
                            "202104212104472450460",
                            "202104212127150470680",
                            "202104220937051579910",
                            "202104212038599210200",
                            "202104212131462630720"
                          ]
                        }
        '404':
          description: tracking failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find table

  '/job/submit':
    post:
      summary: submit job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - dsl
                - runtime_conf
              properties:
                dsl:
                  type: object
                  example:
                    {
                      "components":
                      {
                        "dataio_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "reader_0.table"
                              ]
                            }
                          },
                          "module": "DataIO",
                          "need_deploy": true,
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "dataio"
                            ]
                          }
                        },
                        "evaluation_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "hetero_lr_0.train"
                              ]
                            }
                          },
                          "module": "Evaluation",
                          "output":
                          {
                            "data":
                            [
                              "evaluate"
                            ]
                          }
                        },
                        "hetero_feature_binning_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "intersection_0.train"
                              ]
                            }
                          },
                          "module": "HeteroFeatureBinning",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "hetero_feature_binning"
                            ]
                          }
                        },
                        "hetero_feature_selection_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "hetero_feature_binning_0.train"
                              ]
                            },
                            "isometric_model":
                            [
                              "hetero_feature_binning_0.hetero_feature_binning"
                            ]
                          },
                          "module": "HeteroFeatureSelection",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "selected"
                            ]
                          }
                        },
                        "hetero_lr_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "train_data":
                              [
                                "hetero_feature_selection_0.train"
                              ]
                            }
                          },
                          "module": "HeteroLR",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ],
                            "model":
                            [
                              "hetero_lr"
                            ]
                          }
                        },
                        "intersection_0":
                        {
                          "input":
                          {
                            "data":
                            {
                              "data":
                              [
                                "dataio_0.train"
                              ]
                            }
                          },
                          "module": "Intersection",
                          "output":
                          {
                            "data":
                            [
                              "train"
                            ]
                          }
                        },
                        "reader_0":
                        {
                          "module": "Reader",
                          "output":
                          {
                            "data":
                            [
                              "table"
                            ]
                          }
                        }
                      }
                    }
                runtime_conf:
                  type: object
                  example:
                    {
                      "component_parameters":
                      {
                        "common":
                        {
                          "hetero_lr_0":
                          {
                            "alpha": 0.01,
                            "batch_size": 320,
                            "init_param":
                            {
                              "init_method": "random_uniform"
                            },
                            "learning_rate": 0.15,
                            "max_iter": 3,
                            "optimizer": "rmsprop",
                            "penalty": "L2"
                          },
                          "intersection_0":
                          {
                            "intersect_method": "raw",
                            "only_output_key": false,
                            "sync_intersect_ids": true
                          }
                        },
                        "role":
                        {
                          "guest":
                          {
                            "0":
                            {
                              "dataio_0":
                              {
                                "label_name": "y",
                                "label_type": "int",
                                "output_format": "dense",
                                "with_label": true
                              },
                              "reader_0":
                              {
                                "table":
                                {
                                  "name": "breast_hetero_guest",
                                  "namespace": "experiment"
                                }
                              }
                            }
                          },
                          "host":
                          {
                            "0":
                            {
                              "dataio_0":
                              {
                                "output_format": "dense",
                                "with_label": false
                              },
                              "evaluation_0":
                              {
                                "need_run": false
                              },
                              "reader_0":
                              {
                                "table":
                                {
                                  "name": "breast_hetero_host",
                                  "namespace": "experiment"
                                }
                              }
                            }
                          }
                        }
                      },
                      "dsl_version": "2",
                      "initiator":
                      {
                        "party_id": 9999,
                        "role": "guest"
                      },
                      "job_parameters":
                      {
                        "common":
                        {
                          "auto_retries": 1,
                          "computing_partitions": 8,
                          "task_cores": 4,
                          "task_parallelism": 2
                        }
                      },
                      "role":
                      {
                        "arbiter":
                        [
                          10000
                        ],
                        "guest":
                        [
                          9999
                        ],
                        "host":
                        [
                          10000
                        ]
                      }
                    }
      responses:
        '200':
          description: submit job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "board_url": xxx,
                        "code": 0,
                        "dsl_path": xxx,
                        "job_id": xxx,
                        "logs_directory": xxx,
                        "message": "success",
                        "model_info":
                        {
                          "model_id": xxx,
                          "model_version": xxx
                        },
                        "pipeline_dsl_path": xxx,
                        "runtime_conf_on_party_path": xxx,
                        "runtime_conf_path": xxx,
                        "train_runtime_conf_path": xxx
                      }
        '404':
          description: submit job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: "config error"

  '/job/stop':
    post:
      summary: stop job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: 202103231958539401540
                stop_status:
                  type: string
                  default: cancel
                  example: "failed"
                  description: "failed or cancel"
      responses:
        '200':
          description: stop job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: stop job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/rerun':
    post:
      summary: rerun job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: 202103231958539401540
      responses:
        '200':
          description: rerun job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: rerun job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/query':
    post:
      summary: query job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
      responses:
        '200':
          description: query job success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    items:
                      type: object
                      example:
                        {
                          "f_apply_resource_time": xxx,
                          "f_cancel_signal": false,
                          "f_cancel_time": xxx,
                          "f_cores": 8,
                          "f_create_date": xxx,
                          "f_create_time": xxx,
                          "f_description": "",
                          "f_dsl": {},
                          "f_elapsed": 14380,
                          "f_end_date": xxx,
                          "f_end_scheduling_updates": 1,
                          "f_end_time": xxx,
                          "f_engine_name": "EGGROLL",
                          "f_engine_type": "computing",
                          "f_initiator_party_id": "20001",
                          "f_initiator_role": "guest",
                          "f_is_initiator": true,
                          "f_job_id": xxx,
                          "f_memory": 0,
                          "f_name": "",
                          "f_party_id": "20001",
                          "f_progress": 14,
                          "f_ready_signal": false,
                          "f_ready_time": null,
                          "f_remaining_cores": 8,
                          "f_remaining_memory": 0,
                          "f_rerun_signal": false,
                          "f_resource_in_use": false,
                          "f_return_resource_time": xxx,
                          "f_role": "guest",
                          "f_roles": {},
                          "f_runtime_conf": {},
                          "f_runtime_conf_on_party": {},
                          "f_start_date": xxx,
                          "f_start_time": xxx,
                          "f_status": "failed",
                          "f_status_code": null,
                          "f_tag": "job_end",
                          "f_train_runtime_conf": {},
                          "f_update_date": xxx,
                          "f_update_time": xxx,
                          "f_user": {},
                          "f_user_id": ""
                        }
        '404':
          description: query job failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/list/job':
    post:
      summary: list jobs
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  type: integer
                  description: '`0` means no limit'
                  example: 20
                page:
                  type: integer
                  example: 1
                job_id:
                  type: string
                  example: '202112020129140220090'
                party_id:
                  type: integer
                  example: 9999
                role:
                  type: array
                  items:
                    type: string
                    enum:
                      - guest
                      - host
                      - arbiter
                      - local
                status:
                  type: array
                  items:
                    type: string
                    enum:
                      - success
                      - running
                      - waiting
                      - failed
                      - canceled
                description:
                  type: string
                  description: '`notes` on front-end'
                order_by:
                  type: string
                  description: 'defaults `create_time`'
                  enum:
                      - create_time
                      - start_time
                      - end_time
                      - elapsed
                order:
                  type: string
                  description: 'defaults `desc`'
                  enum:
                      - asc
                      - desc
      responses:
        '200':
          description: jobs list
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      count:
                        type: integer
                        example: 1
                      jobs:
                        type: array
                        items:
                          type: object
                          example:
                            apply_resource_time: 1638379762883
                            cancel_signal: false
                            cancel_time:
                            cores: 4
                            create_date: '2021-12-02 01:29:18'
                            create_time: 1638379758581
                            description: ''
                            dsl:
                              components:
                                dataio_0:
                                  input:
                                    data:
                                      data:
                                        - reader_0.data
                                  module: DataIO
                                  output:
                                    data:
                                      - data
                                    model:
                                      - model
                                hetero_feature_binning_0:
                                  input:
                                    data:
                                      data:
                                        - intersection_0.data
                                  module: HeteroFeatureBinning
                                  output:
                                    data:
                                      - data
                                    model:
                                      - model
                                intersection_0:
                                  input:
                                    data:
                                      data:
                                        - dataio_0.data
                                  module: Intersection
                                  output:
                                    cache:
                                      - cache
                                    data:
                                      - data
                                reader_0:
                                  module: Reader
                                  output:
                                    data:
                                      - data
                                  provider: [email protected]
                            elapsed: 116548
                            end_date: '2021-12-02 01:31:19'
                            end_scheduling_updates: 1
                            end_time: 1638379879547
                            engine_name: STANDALONE
                            engine_type: computing
                            initiator_party_id: '10000'
                            initiator_role: guest
                            is_initiator: true
                            job_id: '202112020129140220090'
                            memory: 0
                            name: ''
                            partners:
                              - 9999
                            party_id: 10000
                            progress: 100
                            ready_signal: false
                            ready_time:
                            remaining_cores: 4
                            remaining_memory: 0
                            rerun_signal: false
                            resource_in_use: false
                            return_resource_time: 1638379879568
                            role: guest
                            roles:
                              guest:
                                - 10000
                              host:
                                - 9999
                            runtime_conf:
                              component_parameters:
                                common:
                                  hetero_feature_binning_0:
                                    adjustment_factor: 0.5
                                    bin_indexes: -1
                                    bin_names:
                                    bin_num: 10
                                    category_indexes:
                                    category_names:
                                    compress_thres: 10000
                                    error: 0.001
                                    head_size: 10000
                                    local_only: false
                                    method: quantile
                                    transform_param:
                                      transform_cols:
                                        - 0
                                        - 1
                                        - 2
                                      transform_names:
                                      transform_type: woe
                                role:
                                  guest:
                                    '0':
                                      dataio_0:
                                        with_label: true
                                      reader_0:
                                        table:
                                          name: breast_hetero_guest
                                          namespace: experiment
                                  host:
                                    '0':
                                      dataio_0:
                                        with_label: false
                                      hetero_feature_binning_0:
                                        transform_param:
                                          transform_type:
                                      reader_0:
                                        table:
                                          name: breast_hetero_host
                                          namespace: experiment
                              conf_path: "/tmp/tmp2zc5tf8b/job_runtime_conf.json"
                              dsl_path: "/tmp/tmp2zc5tf8b/job_dsl.json"
                              dsl_version: 2
                              initiator:
                                party_id: 10000
                                role: guest
                              job_parameters:
                                common:
                                  adaptation_parameters:
                                    if_initiator_baseline: true
                                    request_task_cores: 4
                                    task_cores_per_node: 4
                                    task_memory_per_node: 0
                                    task_nodes: 1
                                  auto_retries: 0
                                  auto_retry_delay: 1
                                  computing_engine: STANDALONE
                                  computing_partitions: 4
                                  eggroll_run: { }
                                  engines_address: { }
                                  federated_mode: SINGLE
                                  federated_status_collect_type: PUSH
                                  federation_engine: STANDALONE
                                  job_type: train
                                  model_id: guest-10000#host-9999#model
                                  model_version: '202112020129140220090'
                                  pulsar_run: { }
                                  rabbitmq_run: { }
                                  spark_run: { }
                                  storage_engine: STANDALONE
                                  task_parallelism: 1
                              role:
                                guest:
                                  - 10000
                                host:
                                  - 9999
                            runtime_conf_on_party:
                              component_parameters:
                                common:
                                  hetero_feature_binning_0:
                                    adjustment_factor: 0.5
                                    bin_indexes: -1
                                    bin_names:
                                    bin_num: 10
                                    category_indexes:
                                    category_names:
                                    compress_thres: 10000
                                    error: 0.001
                                    head_size: 10000
                                    local_only: false
                                    method: quantile
                                    transform_param:
                                      transform_cols:
                                        - 0
                                        - 1
                                        - 2
                                      transform_names:
                                      transform_type: woe
                                role:
                                  guest:
                                    '0':
                                      dataio_0:
                                        with_label: true
                                      reader_0:
                                        table:
                                          name: breast_hetero_guest
                                          namespace: experiment
                                  host:
                                    '0':
                                      dataio_0:
                                        with_label: false
                                      hetero_feature_binning_0:
                                        transform_param:
                                          transform_type:
                                      reader_0:
                                        table:
                                          name: breast_hetero_host
                                          namespace: experiment
                              conf_path: "/tmp/tmp2zc5tf8b/job_runtime_conf.json"
                              dsl_path: "/tmp/tmp2zc5tf8b/job_dsl.json"
                              dsl_version: 2
                              initiator:
                                party_id: 10000
                                role: guest
                              job_parameters:
                                adaptation_parameters:
                                  if_initiator_baseline: false
                                  request_task_cores: 4
                                  task_cores_per_node: 4
                                  task_memory_per_node: 0
                                  task_nodes: 1
                                auto_retries: 0
                                auto_retry_delay: 1
                                computing_engine: STANDALONE
                                computing_partitions: 4
                                eggroll_run:
                                  eggroll.session.processors.per.node: 4
                                engines_address:
                                  computing:
                                    cores_per_node: 20
                                    nodes: 1
                                  federation:
                                    cores_per_node: 20
                                    nodes: 1
                                  storage:
                                    cores_per_node: 20
                                    nodes: 1
                                federated_mode: SINGLE
                                federated_status_collect_type: PUSH
                                federation_engine: STANDALONE
                                job_type: train
                                model_id: guest-10000#host-9999#model
                                model_version: '202112020129140220090'
                                pulsar_run: { }
                                rabbitmq_run: { }
                                spark_run: { }
                                storage_engine: STANDALONE
                                task_parallelism: 1
                              role:
                                guest:
                                  - 10000
                                host:
                                  - 9999
                            start_date: '2021-12-02 01:29:22'
                            start_time: 1638379762999
                            status: success
                            status_code:
                            tag: job_end
                            train_runtime_conf: { }
                            update_date: '2021-12-02 01:32:04'
                            update_time: 1638379924749
                            user:
                              guest:
                                '10000': ''
                              host:
                                '9999': ''
                            user_id: ''

  '/job/list/task':
    post:
      summary: list tasks
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  type: integer
                  description: '`0` means no limit'
                  example: 20
                page:
                  type: integer
                  example: 1
                job_id:
                  type: string
                  example: '202112020129140220090'
                party_id:
                  type: integer
                  example: 9999
                role:
                  type: string
                  enum:
                    - guest
                    - host
                    - arbiter
                    - local
                component_name:
                  type: string
                  example: upload_0
                order_by:
                  type: string
                  description: 'defaults `create_time`'
                  enum:
                      - create_time
                      - start_time
                      - end_time
                      - elapsed
                order:
                  type: string
                  description: 'defaults `asc`'
                  enum:
                      - asc
                      - desc
      responses:
        '200':
          description: jobs list
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    properties:
                      count:
                        type: integer
                        example: 1
                      tasks:
                        type: array
                        items:
                          type: object
                          example:
                            auto_retries: 0
                            auto_retry_delay: 1
                            cmd:
                              - "/root/Codes/FATE/venv/bin/python3.6"
                              - "/root/Codes/FATE/fateflow/python/fate_flow/worker/task_executor.py"
                              - "--job_id"
                              - '202112020129140220090'
                              - "--component_name"
                              - hetero_feature_binning_0
                              - "--task_id"
                              - 202112020129140220090_hetero_feature_binning_0
                              - "--task_version"
                              - 0
                              - "--role"
                              - guest
                              - "--party_id"
                              - '10000'
                              - "--config"
                              - "/root/Codes/FATE/fateflow/jobs/202112020129140220090/guest/10000/hetero_feature_binning_0/202112020129140220090_hetero_feature_binning_0/0/task_executor/6b6f4b1852cc11ec8a8700155d13c16c/config.json"
                              - "--result"
                              - "/root/Codes/FATE/fateflow/jobs/202112020129140220090/guest/10000/hetero_feature_binning_0/202112020129140220090_hetero_feature_binning_0/0/task_executor/6b6f4b1852cc11ec8a8700155d13c16c/result.json"
                              - "--log_dir"
                              - "/root/Codes/FATE/fateflow/logs/202112020129140220090/guest/10000/hetero_feature_binning_0"
                              - "--parent_log_dir"
                              - "/root/Codes/FATE/fateflow/logs/202112020129140220090/guest/10000"
                              - "--worker_id"
                              - 6b6f4b1852cc11ec8a8700155d13c16c
                              - "--run_ip"
                              - 127.0.0.1
                              - "--job_server"
                              - 127.0.0.1:9380
                              - "--session_id"
                              - 202112020129140220090_hetero_feature_binning_0_0_guest_10000
                              - "--federation_session_id"
                              - 202112020129140220090_hetero_feature_binning_0_0
                            component_module: HeteroFeatureBinning
                            component_name: hetero_feature_binning_0
                            component_parameters:
                              CodePath: HeteroFeatureBinningGuest
                              ComponentParam:
                                _feeded_deprecated_params: [ ]
                                _is_raw_conf: false
                                _name: HeteroFeatureBinning#hetero_feature_binning_0
                                _user_feeded_params:
                                  - head_size
                                  - category_names
                                  - bin_num
                                  - transform_param.transform_names
                                  - transform_param
                                  - compress_thres
                                  - error
                                  - method
                                  - bin_indexes
                                  - transform_param.transform_type
                                  - bin_names
                                  - category_indexes
                                  - local_only
                                  - transform_param.transform_cols
                                  - adjustment_factor
                                adjustment_factor: 0.5
                                bin_indexes: -1
                                bin_names:
                                bin_num: 10
                                category_indexes:
                                category_names:
                                compress_thres: 10000
                                encrypt_param:
                                  key_length: 1024
                                  method: Paillier
                                error: 0.001
                                head_size: 10000
                                local_only: false
                                method: quantile
                                need_run: true
                                optimal_binning_param:
                                  adjustment_factor:
                                  init_bin_nums: 1000
                                  init_bucket_method: quantile
                                  max_bin:
                                  max_bin_pct: 1
                                  metric_method: iv
                                  min_bin_pct: 0.05
                                  mixture: true
                                skip_static: false
                                transform_param:
                                  transform_cols:
                                    - 0
                                    - 1
                                    - 2
                                  transform_names:
                                  transform_type: woe
                              conf_path: "/tmp/tmp2zc5tf8b/job_runtime_conf.json"
                              dsl_path: "/tmp/tmp2zc5tf8b/job_dsl.json"
                              dsl_version: 2
                              initiator:
                                party_id: 10000
                                role: guest
                              job_parameters:
                                common:
                                  adaptation_parameters:
                                    if_initiator_baseline: true
                                    request_task_cores: 4
                                    task_cores_per_node: 4
                                    task_memory_per_node: 0
                                    task_nodes: 1
                                  auto_retries: 0
                                  auto_retry_delay: 1
                                  computing_engine: STANDALONE
                                  computing_partitions: 4
                                  eggroll_run: { }
                                  engines_address: { }
                                  federated_mode: SINGLE
                                  federated_status_collect_type: PUSH
                                  federation_engine: STANDALONE
                                  job_type: train
                                  model_id: guest-10000#host-9999#model
                                  model_version: '202112020129140220090'
                                  pulsar_run: { }
                                  rabbitmq_run: { }
                                  spark_run: { }
                                  storage_engine: STANDALONE
                                  task_parallelism: 1
                              local:
                                party_id: 10000
                                role: guest
                              module: HeteroFeatureBinning
                              role:
                                guest:
                                  - 10000
                                host:
                                  - 9999
                            create_date: '2021-12-02 01:29:21'
                            create_time: 1638379761918
                            elapsed: 9095
                            end_date: '2021-12-02 01:31:04'
                            end_time: 1638379864051
                            engine_conf:
                              computing_engine: STANDALONE
                            federated_mode: SINGLE
                            federated_status_collect_type: PUSH
                            initiator_party_id: '10000'
                            initiator_role: guest
                            job_id: '202112020129140220090'
                            party_id: '10000'
                            party_status: success
                            provider_info:
                              class_path:
                                feature_instance: feature.instance.Instance
                                feature_vector: feature.sparse_vector.SparseVector
                                homo_model_convert: protobuf.homo_model_convert.homo_model_convert
                                interface: components.components.Components
                                model: protobuf.generated
                                model_migrate: protobuf.model_migrate.model_migrate
                              env:
                                PYTHONPATH: "/root/Codes/FATE/python"
                              name: fate
                              path: "/root/Codes/FATE/python/federatedml"
                              version: 1.7.0
                            role: guest
                            run_ip: 127.0.0.1
                            run_on_this_party: true
                            run_pid: 29934
                            start_date: '2021-12-02 01:30:47'
                            start_time: 1638379847118
                            status: success
                            status_code:
                            task_id: 202112020129140220090_hetero_feature_binning_0
                            task_version: 0
                            update_date: '2021-12-02 01:31:06'
                            update_time: 1638379866439
                            worker_id: 6b6f4b1852cc11ec8a8700155d13c16c

  '/job/update':
    post:
      summary: job notes
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
                - role
                - party_id
                - notes
              properties:
                job_id:
                  type: string
                  example: "2022xxx"
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                notes:
                  type: string
                  example: this is a test
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/parameter/update':
    post:
      summary: update job parameter
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: "2022xxx"
                component_parameters:
                  type: object
                  example:
                    {
                      "common":
                      {
                        "hetero_lr_0":
                        {
                          "max_iter": 10
                        }
                      }
                    }
                job_parameters:
                  type: object
                  example:
                    {
                      "common":
                      {
                        "auto_retries": 2
                      }
                    }
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "component_parameters":
                        {
                          "common":
                          {
                            "hetero_lr_0":
                            {
                              "alpha": 0.01,
                              "batch_size": 320,
                              "init_param":
                              {
                                "init_method": "random_uniform"
                              },
                              "learning_rate": 0.15,
                              "max_iter": 10,
                              "optimizer": "rmsprop",
                              "penalty": "L2"
                            },
                            "intersection_0":
                            {
                              "intersect_method": "raw",
                              "only_output_key": false,
                              "sync_intersect_ids": true
                            }
                          },
                          "role":
                          {
                            "guest":
                            {
                              "0":
                              {
                                "dataio_0":
                                {
                                  "label_name": "y",
                                  "label_type": "int",
                                  "output_format": "dense",
                                  "with_label": true
                                },
                                "reader_0":
                                {
                                  "table":
                                  {
                                    "name": "breast_hetero_guest",
                                    "namespace": "experiment"
                                  }
                                }
                              }
                            },
                            "host":
                            {
                              "0":
                              {
                                "dataio_0":
                                {
                                  "output_format": "dense",
                                  "with_label": false
                                },
                                "evaluation_0":
                                {
                                  "need_run": false
                                },
                                "reader_0":
                                {
                                  "table":
                                  {
                                    "name": "breast_hetero_host",
                                    "namespace": "experiment"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "components":
                        [],
                        "job_parameters":
                        {
                          "common":
                          {
                            "adaptation_parameters":
                            {
                              "if_initiator_baseline": true,
                              "request_task_cores": 4,
                              "task_cores_per_node": 4,
                              "task_memory_per_node": 0,
                              "task_nodes": 1
                            },
                            "auto_retries": 2,
                            "auto_retry_delay": 1,
                            "computing_engine": "EGGROLL",
                            "computing_partitions": 4,
                            "eggroll_run":
                            {},
                            "engines_address":
                            {},
                            "federated_mode": "MULTIPLE",
                            "federated_status_collect_type": "PUSH",
                            "inheritance_info":
                            {},
                            "job_type": "train",
                            "model_id": "arbiter-10001#guest-20001#host-10001#model",
                            "model_version": "202204251958539401540",
                            "pulsar_run":
                            {},
                            "rabbitmq_run":
                            {},
                            "spark_run":
                            {},
                            "task_parallelism": 1
                          }
                        },
                        "src_party_id": "20001",
                        "src_role": "guest"
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/config':
    post:
      summary: job config
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                  example: "2022xxx"
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "dsl":
                        {},
                        "job_id": "2022xxx",
                        "model_info":
                        {},
                        "runtime_conf":
                        {},
                        "train_runtime_conf":
                        {}
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/log/download':
    post:
      summary: download job log (tar.gz)
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
      responses:
        '200':
          description: get job log success
          content:
            application/octet-stream:
              schema:
                type: string
                description: file xxx_log.tar.gz
        '404':
          description: get job list failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 404
                  retmsg:
                    type: string
                    example: Log file path xxx not found. Please check if the job id is valid.

  '/job/log/path':
    post:
      summary: job log path
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "logs_directory": "/data/projects/fate/fateflow/logs/xxx"
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find job

  '/job/task/query':
    post:
      summary: query task
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - job_id
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: reader_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: array
                    description: tasks list
                    items:
                      type: object
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find task

  '/job/clean':
    post:
      summary: clean job
      tags:
        - job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: reader_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: no find task

  '/job/clean/queue':
    post:
      summary: cancel waiting job
      tags:
        - job
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "202204261616186991350": 0,
                        "202204261616198643190": 0,
                        "202204261616210073410": 0
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: server error

  '/tracking/job/data_view':
    post:
      summary: data view
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "dataset":
                        {
                          "guest":
                          {
                            "9999":
                            {
                              "Reader_0": "xxx.xxx"
                            }
                          },
                          "host":
                          {
                            "10000":
                            {
                              "Reader_0": "xxx.xxx"
                            }
                          }
                        },
                        "model_summary":
                        {},
                        "partner":
                        {
                          "host":
                          [
                            10000
                          ]
                        },
                        "roles":
                        {
                          "guest":
                          [
                            9999
                          ],
                          "host":
                          [
                            10000
                          ]
                        }
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/metric/all':
    post:
      summary: get component all metric
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: HeteroSecureBoost_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "train":
                        {
                          "loss":
                          {
                            "data":
                            [
                              [
                                0,
                                0.6076415445876732
                              ],
                              [
                                1,
                                0.5374539452565573
                              ],
                              [
                                2,
                                0.4778598986135903
                              ],
                              [
                                3,
                                0.42733599866560723
                              ],
                              [
                                4,
                                0.38433409799127843
                              ]
                            ],
                            "meta":
                            {
                              "Best": 0.38433409799127843,
                              "curve_name": "loss",
                              "metric_type": "LOSS",
                              "name": "train",
                              "unit_name": "iters"
                            }
                          }
                        }
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/metrics':
    post:
      summary: get component metric name and namespace
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "train":
                        [
                          "intersection"
                        ]
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/metric_data':
    post:
      summary: get component metric data
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
                - metric_name
                - metric_namespace
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
                metric_name:
                  type: string
                  example: intersection
                metric_namespace:
                  type: string
                  example: train
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "data":
                        [
                          [
                            "intersect_count",
                            569
                          ],
                          [
                            "intersect_rate",
                            1.0
                          ],
                          [
                            "unmatched_count",
                            0
                          ],
                          [
                            "unmatched_rate",
                            0.0
                          ]
                        ],
                        "meta":
                        {
                          "intersect_method": "raw",
                          "join_method": "inner_join",
                          "metric_type": "INTERSECTION",
                          "name": "intersection"
                        }
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/parameters':
    post:
      summary: get component parameters
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "ComponentParam":
                        {
                          "_feeded_deprecated_params":
                          [
                            "repeated_id_owner",
                            "intersect_cache_param",
                            "join_role",
                            "encode_params",
                            "allow_info_share",
                            "repeated_id_process",
                            "random_bit",
                            "with_encode",
                            "info_owner"
                          ],
                          "_is_raw_conf": false,
                          "_name": "Intersection#Intersection_0",
                          "_user_feeded_params":
                          [
                            "repeated_id_owner",
                            "encode_params.salt",
                            "intersect_method",
                            "intersect_cache_param.encrypt_type",
                            "encode_params.encode_method",
                            "encode_params",
                            "intersect_cache_param",
                            "intersect_cache_param.id_type",
                            "intersect_cache_param.use_cache",
                            "join_role",
                            "allow_info_share",
                            "repeated_id_process",
                            "sync_intersect_ids",
                            "random_bit",
                            "only_output_key",
                            "with_encode",
                            "encode_params.base64",
                            "info_owner"
                          ],
                          "allow_info_share": false,
                          "cardinality_only": false,
                          "dh_params":
                          {
                            "hash_method": "sha256",
                            "key_length": 1024,
                            "salt": ""
                          },
                          "encode_params":
                          {
                            "base64": false,
                            "encode_method": "none",
                            "salt": ""
                          },
                          "info_owner": "guest",
                          "intersect_cache_param":
                          {
                            "encrypt_type": "sha256",
                            "id_type": "phone",
                            "use_cache": false
                          },
                          "intersect_method": "raw",
                          "intersect_preprocess_params":
                          {
                            "encrypt_method": "rsa",
                            "false_positive_rate": 0.001,
                            "filter_owner": "guest",
                            "hash_method": "sha256",
                            "preprocess_method": "sha256",
                            "preprocess_salt": "",
                            "random_state": null
                          },
                          "join_method": "inner_join",
                          "join_role": "guest",
                          "new_sample_id": false,
                          "only_output_key": false,
                          "random_bit": 128,
                          "raw_params":
                          {
                            "base64": false,
                            "hash_method": "none",
                            "join_role": "guest",
                            "salt": "",
                            "use_hash": false
                          },
                          "repeated_id_owner": "guest",
                          "repeated_id_process": false,
                          "rsa_params":
                          {
                            "final_hash_method": "sha256",
                            "hash_method": "sha256",
                            "key_length": 1024,
                            "random_base_fraction": null,
                            "random_bit": 128,
                            "salt": "",
                            "split_calculation": false
                          },
                          "run_cache": false,
                          "run_preprocess": false,
                          "sample_id_generator": "guest",
                          "sync_cardinality": false,
                          "sync_intersect_ids": true,
                          "with_encode": false,
                          "with_sample_id": false
                        },
                        "module": "Intersection"
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/summary/download':
    post:
      summary: get component summary
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
                    example:
                      {
                        "cardinality_only": false,
                        "intersect_num": 569,
                        "intersect_rate": 1.0
                      }
        '404':
          description: failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 101
                  retmsg:
                    type: string
                    example: error

  '/tracking/component/output/model':
    post:
      summary: get component output model
      tags:
        - tracking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - job_id
                - role
                - party_id
                - component_name
              type: object
              properties:
                job_id:
                  type: string
                role:
                  type: string
                  example: guest
                party_id:
                  type: integer
                  example: 10000
                component_name:
                  type: string
                  example: Intersection_0
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: object
                properties:
                  retcode:
                    type: integer
                    example: 0
                  retmsg:
                    type: string
                    example: success
                  data:
                    type: object
        '404':
          description: failed
          content:
            application/json:
              schema:
    

你可能感兴趣的:(雕虫小技,docker,容器,运维)