{
  "openapi": "3.0.1",
  "info": {
    "title": "Pytorch profile API",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "."
    }
  ],
  "paths": {
    "/runs": {
      "get": {
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Runs"
                }
              }
            }
          }
        }
      }
    },
    "/views": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful views",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "Overview",
                      "Operator",
                      "Kernel",
                      "Trace",
                      "Distributed",
                      "Memory"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/workers": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "view",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful workers",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/spans": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful spans",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/overview": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Overview"
                }
              }
            }
          }
        }
      }
    },
    "/operation": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Operation",
                "OperationAndInputShape"
              ]
            },
            "description": "Group By"
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorGraph"
                }
              }
            }
          }
        }
      }
    },
    "/operation/table": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Operation",
                "OperationAndInputShape"
              ]
            },
            "description": "Group By"
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object",
                  "required": [
                    "metadata",
                    "data"
                  ],
                  "properties": {
                    "metadata": {
                      "$ref": "#/components/schemas/TableMetadata"
                    },
                    "data": {
                      "$ref": "#/components/schemas/OperationTableData"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/operation/stack": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Operation",
                "OperationAndInputShape"
              ]
            },
            "description": "Group By"
          },
          {
            "in": "query",
            "name": "op_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "input_shape",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object",
                  "required": [
                    "metadata",
                    "data"
                  ],
                  "properties": {
                    "metadata": {
                      "$ref": "#/components/schemas/TableMetadata"
                    },
                    "data": {
                      "$ref": "#/components/schemas/CallStackTableData"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/distributed/overlap": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/DistributedGraph"
                }
              }
            }
          }
        }
      }
    },
    "/distributed/waittime": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/DistributedGraph"
                }
              }
            }
          }
        }
      }
    },
    "/distributed/commops": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object",
                  "required": [
                    "metadata",
                    "data"
                  ],
                  "properties": {
                    "metadata": {
                      "type": "object",
                      "required": [
                        "title"
                      ],
                      "properties": {
                        "title": {
                          "type": "string"
                        }
                      }
                    },
                    "data": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/distributed/gpuinfo": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GpuInfo"
                }
              }
            }
          }
        }
      }
    },
    "/memory": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_ts",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "end_ts",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryStatsData"
                }
              }
            }
          }
        }
      }
    },
    "/memory_curve": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryCurveData"
                }
              }
            }
          }
        }
      }
    },
    "/memory_events": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_ts",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "end_ts",
            "required": false,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryEventsData"
                }
              }
            }
          }
        }
      }
    },
    "/kernel": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Kernel",
                "KernelNameAndOpName"
              ]
            },
            "description": "Group By"
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/KernelGraph"
                }
              }
            }
          }
        }
      }
    },
    "/kernel/table": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Kernel",
                "KernelNameAndOpName"
              ]
            },
            "description": "Group By"
          }
        ],
        "responses": {
          "200": {
            "description": "successful kernel",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TableData"
                }
              }
            }
          }
        }
      }
    },
    "/kernel/tc_pie": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TensorCoresGraph"
                }
              }
            }
          }
        }
      }
    },
    "/trace": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful trace data",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/module": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ModuleViewData"
                }
              }
            }
          }
        }
      }
    },
    "/tree": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/OperatorNode"
                }
              }
            }
          }
        }
      }
    },
    "/diffnode": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "exp_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "exp_worker",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "exp_span",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/DiffNode"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Runs": {
        "type": "object",
        "required": [
          "runs",
          "loading"
        ],
        "properties": {
          "runs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "loading": {
            "type": "boolean"
          }
        }
      },
      "Performance": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "extra": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Performance"
            }
          }
        }
      },
      "Environment": {
        "type": "object",
        "required": [
          "title",
          "value"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "GraphColumn": {
        "type": "object",
        "required": [
          "type",
          "name"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "p": {
            "type": "object",
            "properties": {
              "html": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "ValueAndFormat": {
        "type": "object",
        "required": [
          "v",
          "f"
        ],
        "properties": {
          "v": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "f": {
            "type": "string"
          }
        }
      },
      "Graph": {
        "type": "object",
        "required": [
          "columns",
          "rows"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GraphColumn"
            }
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "$ref": "#/components/schemas/ValueAndFormat"
                  }
                ]
              }
            }
          }
        }
      },
      "Overview": {
        "type": "object",
        "required": [
          "performance",
          "environments",
          "steps",
          "recommendations"
        ],
        "properties": {
          "performance": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Performance"
            }
          },
          "environments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Environment"
            }
          },
          "steps": {
            "$ref": "#/components/schemas/Graph"
          },
          "recommendations": {
            "type": "string"
          },
          "gpu_metrics": {
            "$ref": "#/components/schemas/GpuMetrics"
          }
        }
      },
      "OperatorGraph": {
        "type": "object",
        "required": [
          "device_total_time",
          "device_self_time",
          "host_total_time",
          "host_self_time"
        ],
        "properties": {
          "device_total_time": {
            "$ref": "#/components/schemas/Graph"
          },
          "device_self_time": {
            "$ref": "#/components/schemas/Graph"
          },
          "host_total_time": {
            "$ref": "#/components/schemas/Graph"
          },
          "host_self_time": {
            "$ref": "#/components/schemas/Graph"
          }
        }
      },
      "TableMetadata": {
        "type": "object",
        "required": [
          "sort"
        ],
        "properties": {
          "sort": {
            "type": "string"
          },
          "tooltips": {
            "type": "object"
          }
        }
      },
      "TableData": {
        "type": "object",
        "required": [
          "metadata",
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Graph"
          },
          "metadata": {
            "$ref": "#/components/schemas/TableMetadata"
          }
        }
      },
      "KernelGraph": {
        "type": "object",
        "required": [
          "total"
        ],
        "properties": {
          "total": {
            "$ref": "#/components/schemas/Graph"
          }
        }
      },
      "TensorCoresGraph": {
        "type": "object",
        "required": [
          "total"
        ],
        "properties": {
          "total": {
            "$ref": "#/components/schemas/Graph"
          }
        }
      },
      "OperationTableData": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "name",
            "calls",
            "host_self_duration",
            "host_total_duration",
            "has_call_stack"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "input_shape": {
              "type": "string"
            },
            "calls": {
              "type": "number"
            },
            "device_self_duration": {
              "type": "number"
            },
            "device_total_duration": {
              "type": "number"
            },
            "host_self_duration": {
              "type": "number"
            },
            "host_total_duration": {
              "type": "number"
            },
            "has_call_stack": {
              "type": "boolean"
            },
            "tc_eligible": {
              "type": "string"
            },
            "tc_self_ratio": {
              "type": "number"
            },
            "tc_total_ratio": {
              "type": "number"
            }
          }
        }
      },
      "CallStackTableData": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "name",
            "calls",
            "host_self_duration",
            "host_total_duration"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "input_shape": {
              "type": "string"
            },
            "calls": {
              "type": "number"
            },
            "device_self_duration": {
              "type": "number"
            },
            "device_total_duration": {
              "type": "number"
            },
            "host_self_duration": {
              "type": "number"
            },
            "host_total_duration": {
              "type": "number"
            },
            "call_stack": {
              "type": "string"
            },
            "tc_eligible": {
              "type": "string"
            },
            "tc_self_ratio": {
              "type": "number"
            },
            "tc_total_ratio": {
              "type": "number"
            }
          }
        }
      },
      "DistributedGraph": {
        "type": "object",
        "required": [
          "metadata",
          "data"
        ],
        "properties": {
          "metadata": {
            "type": "object",
            "required": [
              "title",
              "legends",
              "units"
            ],
            "properties": {
              "title": {
                "type": "string"
              },
              "legends": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "units": {
                "type": "string"
              }
            }
          },
          "data": {
            "type": "object"
          }
        }
      },
      "GpuInfo": {
        "type": "object",
        "required": [
          "metadata",
          "data"
        ],
        "properties": {
          "metadata": {
            "type": "object",
            "required": [
              "title"
            ],
            "properties": {
              "title": {
                "type": "string"
              }
            }
          },
          "data": {
            "type": "object"
          }
        }
      },
      "GpuMetrics": {
        "type": "object",
        "required": [
          "data",
          "tooltip"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GpuMetric"
            }
          },
          "tooltip": {
            "type": "string"
          }
        }
      },
      "GpuMetric": {
        "type": "object",
        "required": [
          "title",
          "value"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "MemoryStatsData": {
        "type": "object",
        "required": [
          "metadata",
          "columns",
          "rows"
        ],
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/MemoryStatsTableMetadata"
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GraphColumn"
            }
          },
          "rows": {
            "type": "object"
          }
        }
      },
      "MemoryEventsData": {
        "type": "object",
        "required": [
          "metadata",
          "columns",
          "rows"
        ],
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/MemoryEventsTableMetadata"
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GraphColumn"
            }
          },
          "rows": {
            "type": "object"
          }
        }
      },
      "MemoryEventsTableMetadata": {
        "type": "object",
        "required": [
          "title",
          "default_device",
          "value"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "default_device": {
            "type": "string"
          },
          "search": {
            "type": "string"
          },
          "sort": {
            "type": "string"
          }
        }
      },
      "MemoryStatsTableMetadata": {
        "type": "object",
        "required": [
          "title",
          "default_device",
          "search",
          "sort",
          "value"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "default_device": {
            "type": "string"
          },
          "search": {
            "type": "string"
          },
          "sort": {
            "type": "string"
          }
        }
      },
      "MemoryCurveDataMetadata": {
        "type": "object",
        "required": [
          "default_device",
          "devices",
          "peaks",
          "totals",
          "first_ts",
          "time_metric",
          "memory_metric",
          "time_factor",
          "memory_factor"
        ],
        "properties": {
          "default_device": {
            "type": "string"
          },
          "devices": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "peaks": {
            "type": "object"
          },
          "totals": {
            "type": "object"
          },
          "first_ts": {
            "type": "number"
          },
          "time_metric": {
            "type": "string"
          },
          "memory_metric": {
            "type": "string"
          },
          "time_factor": {
            "type": "number"
          },
          "memory_factor": {
            "type": "number"
          }
        }
      },
      "MemoryCurveData": {
        "type": "object",
        "required": [
          "metadata",
          "columns",
          "rows"
        ],
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/MemoryCurveDataMetadata"
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GraphColumn"
            }
          },
          "rows": {
            "type": "object"
          }
        }
      },
      "KeyedColumn": {
        "type": "object",
        "required": [
          "type",
          "name",
          "key"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        }
      },
      "ModuleViewData": {
        "type": "object",
        "required": [
          "columns",
          "data"
        ],
        "properties": {
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyedColumn"
            }
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModuleStats"
            }
          }
        }
      },
      "ModuleStats": {
        "type": "object",
        "required": [
          "name",
          "id",
          "occurences",
          "operators",
          "host_duration",
          "self_host_duration",
          "device_duration",
          "self_device_duration",
          "avg_duration",
          "children"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "occurences": {
            "type": "number"
          },
          "operators": {
            "type": "number"
          },
          "host_duration": {
            "type": "number"
          },
          "self_host_duration": {
            "type": "number"
          },
          "device_duration": {
            "type": "number"
          },
          "self_device_duration": {
            "type": "number"
          },
          "avg_duration": {
            "type": "number"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModuleStats"
            }
          }
        }
      },
      "OperatorNode": {
        "type": "object",
        "required": [
          "name",
          "start_time",
          "end_time",
          "type",
          "tid",
          "children"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "start_time": {
            "type": "number"
          },
          "end_time": {
            "type": "number"
          },
          "type": {
            "type": "string"
          },
          "tid": {
            "type": "number"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperatorNode"
            }
          }
        }
      },
      "OpAgg": {
        "type": "object",
        "required": [
          "name",
          "calls",
          "host_duration",
          "device_duration",
          "self_host_duration",
          "self_device_duration"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "calls": {
            "type": "number"
          },
          "host_duration": {
            "type": "number"
          },
          "device_duration": {
            "type": "number"
          },
          "self_host_duration": {
            "type": "number"
          },
          "self_device_duration": {
            "type": "number"
          }
        }
      },
      "OpStats": {
        "type": "object",
        "required": [
          "name",
          "duration",
          "device_duration",
          "total_duration",
          "aggs"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "duration": {
            "type": "number"
          },
          "device_duration": {
            "type": "number"
          },
          "total_duration": {
            "type": "number"
          },
          "aggs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpAgg"
            }
          }
        }
      },
      "DiffNode": {
        "type": "object",
        "required": [
          "left",
          "right",
          "children",
          "path"
        ],
        "properties": {
          "left": {
            "$ref": "#/components/schemas/OpStats"
          },
          "right": {
            "$ref": "#/components/schemas/OpStats"
          },
          "path": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DiffNode"
            }
          }
        }
      }
    }
  }
}