{
  "swagger": "2.0",
  "info": {
    "title": "ng_agent/agent.proto",
    "version": "version not set"
  },
  "tags": [
    {
      "name": "AgentService"
    }
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/api/v1/alioss/check_access": {
      "post": {
        "operationId": "CheckAliOSSAccess",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCheckAliOSSAccessResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCheckAliOSSAccessReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/azblob/check_access": {
      "post": {
        "operationId": "CheckAzblobAccess",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCheckAzblobAccessResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCheckAzblobAccessReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/cluster-client-secret": {
      "post": {
        "operationId": "GetClusterClientSecret",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetClusterClientSecretResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentGetClusterClientSecretReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/cluster-tables": {
      "post": {
        "operationId": "GetClusterTables",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetClusterTablesResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCluster"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/cluster/execsql": {
      "post": {
        "operationId": "ExecSQL",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentExecSQLResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentExecSQLReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/cluster/load-data": {
      "post": {
        "operationId": "LoadData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentLoadDataResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentLoadDataReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/crypto/pem": {
      "post": {
        "operationId": "GetPublicKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetPublicKeyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "GetPublicKeyRequest is the request for fetching the agent's public key.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentGetPublicKeyRequest"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/db-connectivity": {
      "post": {
        "operationId": "CheckDBConnectivity",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCheckDBConnectivityResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCheckDBConnectivityReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/dm/jobprecheck": {
      "post": {
        "operationId": "PrecheckDMJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentPrecheckDMJobResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentPrecheckDMJobReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/dm/openapi/proxy": {
      "post": {
        "operationId": "DMOpenAPIProxy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentDMOpenAPIProxyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentDMOpenAPIProxyRequest"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/dm/source/exec_sql": {
      "post": {
        "operationId": "ExecSQLOnDMSource",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentExecSQLOnDMSourceResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentExecSQLOnDMSourceRequest"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/gcs/check_access": {
      "post": {
        "operationId": "CheckGcsAccess",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCheckGcsAccessResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCheckGcsAccessReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/clear-empty-tables": {
      "post": {
        "summary": "deprecated",
        "operationId": "ClearEmptyTables",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentClearEmptyTablesResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentClearEmptyTablesReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/create-schemas": {
      "post": {
        "operationId": "CreateSchemas",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCreateSchemasResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCreateSchemasReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/create-schemas-tasks": {
      "post": {
        "operationId": "CreateSchemasTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCreateSchemasTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCreateSchemasTaskReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/create-schemas-tasks/{task_id}": {
      "get": {
        "operationId": "GetSchemasTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetSchemasTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/drop-cluster-tables": {
      "post": {
        "operationId": "DropClusterTables",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentDropClusterTablesReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/estimate-data-size-tasks": {
      "post": {
        "operationId": "CreateImportDataSizeEstimateTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCreateImportDataSizeEstimateTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCreateImportDataSizeEstimateTaskReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/estimate-data-size-tasks/{task_id}": {
      "get": {
        "operationId": "GetImportDataSizeEstimateTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetImportDataSizeEstimateTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/estimate-src-data-size": {
      "post": {
        "operationId": "EstimateSourceDataSize",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentEstimateSourceDataSizeResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentEstimateSourceDataSizeReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/files-tasks": {
      "post": {
        "operationId": "CreateImportFilesTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCreateImportFilesTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCreateImportFilesTaskReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/files-tasks/{task_id}": {
      "get": {
        "operationId": "GetImportFilesTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetImportFilesTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/get-import-files": {
      "post": {
        "operationId": "GetImportFiles",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetImportFilesResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentGetImportFilesReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/import-into-job-tasks": {
      "post": {
        "operationId": "CreateImportIntoJobTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCreateImportIntoJobTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCreateImportIntoJobTaskReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/import-into-job-tasks/{task_id}": {
      "get": {
        "operationId": "GetImportIntoJobTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetImportIntoJobTaskResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/import-into-job-tasks:batchCreate": {
      "post": {
        "operationId": "BatchCreateImportIntoJobTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentBatchCreateImportIntoJobTasksResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentBatchCreateImportIntoJobTasksReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/import-into-job-tasks:batchGet": {
      "post": {
        "operationId": "BatchGetImportIntoJobTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentBatchGetImportIntoJobTasksResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentBatchGetImportIntoJobTasksReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/import-into-jobs:batchCancel": {
      "post": {
        "operationId": "BatchCancelImportIntoJobs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentBatchCancelImportIntoJobsResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentBatchCancelImportIntoJobsReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/lightning-precheck": {
      "post": {
        "operationId": "LightningPrecheck",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentLightningPrecheckResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentLightningPrecheckReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/lightning-source-preview": {
      "post": {
        "operationId": "LightningSourcePreview",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentLightningSourcePreviewResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentLightningSourcePreviewReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/precheck-import-file": {
      "post": {
        "operationId": "PrecheckImportFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentPrecheckImportFileReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/preview-csv-file": {
      "post": {
        "operationId": "PreviewCsvFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentPreviewCsvFileResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentPreviewCsvFileReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/schemas-meta": {
      "post": {
        "operationId": "GetImportSchemasMeta",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetImportSchemasMetaResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentGetImportSchemasMetaReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/import/search-import-files": {
      "post": {
        "operationId": "SearchImportFiles",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentSearchImportFilesResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentSearchImportFilesReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/nslookup": {
      "post": {
        "operationId": "NsLookup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentNsLookupResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentNsLookupReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/orgs/{org_id}/projects/{project_id}/clusters/{cluster_id}/imports:precheck": {
      "post": {
        "summary": "Precheck and return the scan result.",
        "operationId": "AgentService_PrecheckImportJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentPrecheckImportJobResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "org_id",
            "description": "Required. The organize ID.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "project_id",
            "description": "Required. The project ID.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "cluster_id",
            "description": "Required. The cluster ID.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "import_options": {
                  "$ref": "#/definitions/ng_agentImportOptions",
                  "description": "Required. The options of the import."
                },
                "source": {
                  "$ref": "#/definitions/ng_agentImportSource",
                  "description": "Required. The source of the import."
                },
                "target_cluster": {
                  "$ref": "#/definitions/ng_agentCluster",
                  "description": "Required. The target cluster connection information."
                }
              },
              "required": [
                "import_options",
                "source",
                "target_cluster"
              ]
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/s3/check_access": {
      "post": {
        "operationId": "CheckS3Access",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentCheckS3AccessResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCheckS3AccessReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/source-tables": {
      "post": {
        "operationId": "GetSourceTables",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetSourceTablesResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCheckDBConnectivityReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/source/binlog-status": {
      "post": {
        "summary": "get result of \"show master status\" on source",
        "operationId": "GetSourceBinlogStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetSourceBinlogStatusResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentCheckDBConnectivityReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/tidb-server-secret": {
      "post": {
        "operationId": "GetTiDBServerSecret",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetTiDBServerSecretResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentGetTiDBServerSecretReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/tidb/host": {
      "post": {
        "operationId": "GetTiDBHost",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetTiDBHostResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentGetTiDBHostRequest"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    },
    "/api/v1/user-file": {
      "post": {
        "operationId": "GetUserFileContent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ng_agentGetUserFileResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ng_agentGetUserFileReq"
            }
          }
        ],
        "tags": [
          "AgentService"
        ]
      }
    }
  },
  "definitions": {
    "BatchCreateImportIntoJobTasksReqTask": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "sql": {
          "type": "string"
        },
        "setup_sqls": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "CreateSchemasRespTableResultStatus": {
      "type": "string",
      "enum": [
        "STATUS_UNSPECIFIED",
        "STATUS_SUCCEEDED",
        "STATUS_FAILED"
      ],
      "default": "STATUS_UNSPECIFIED"
    },
    "GetImportDataSizeEstimateTaskRespTableEstimate": {
      "type": "object",
      "properties": {
        "database": {
          "type": "string"
        },
        "table": {
          "type": "string"
        },
        "source_size": {
          "type": "string",
          "format": "uint64"
        },
        "tikv_size": {
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "GetImportFilesRespCompression": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "GZ",
        "LZ4",
        "ZSTD",
        "XZ",
        "LZO",
        "SNAPPY"
      ],
      "default": "UNKNOWN",
      "title": "defined in github.com/pingcap/tidb/pkg/lightning/mydump/router.go"
    },
    "GetImportFilesRespDataFileMeta": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "size": {
          "type": "string",
          "format": "uint64"
        },
        "source_type": {
          "$ref": "#/definitions/GetImportFilesRespSourceType"
        },
        "compression": {
          "$ref": "#/definitions/GetImportFilesRespCompression"
        }
      }
    },
    "GetImportFilesRespSourceType": {
      "type": "string",
      "enum": [
        "UNKNOWN_TYPE",
        "SCHEMA_SCHEMA",
        "TABLE_SCHEMA",
        "SQL",
        "CSV",
        "PARQUET",
        "VIEW_SCHEMA"
      ],
      "default": "UNKNOWN_TYPE",
      "title": "defined in github.com/pingcap/tidb/pkg/lightning/mydump/router.go"
    },
    "PrecheckImportFileReqSource": {
      "type": "object",
      "properties": {
        "table": {
          "$ref": "#/definitions/ng_agent_commonTable"
        },
        "file": {
          "type": "string"
        }
      }
    },
    "S3SourceAccessKey": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The access key id."
        },
        "secret": {
          "type": "string",
          "description": "The secret access key. This field is input-only."
        }
      },
      "required": [
        "id",
        "secret"
      ]
    },
    "S3SourceRoleArn": {
      "type": "object",
      "properties": {
        "role_arn": {
          "type": "string",
          "title": "The role arn"
        },
        "external_id": {
          "type": "string",
          "title": "The aws external id"
        }
      },
      "required": [
        "role_arn",
        "external_id"
      ]
    },
    "SearchImportFilesReqTargetSource": {
      "type": "object",
      "properties": {
        "target_table": {
          "$ref": "#/definitions/ng_agent_commonTable"
        },
        "custom_file": {
          "type": "string"
        }
      }
    },
    "SearchImportFilesRespTableMatch": {
      "type": "object",
      "properties": {
        "target_table": {
          "$ref": "#/definitions/ng_agent_commonTable"
        },
        "source_uri": {
          "type": "string",
          "title": "if source_uri is empty, it means the table is not found in source"
        }
      }
    },
    "baseBaseResp": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "such as: request_id, trace_id"
        },
        "err_code": {
          "type": "string",
          "format": "int64"
        },
        "err_msg": {
          "type": "string"
        }
      }
    },
    "googlerpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "ng_agentAzureBlobSource": {
      "type": "object",
      "properties": {
        "auth_type": {
          "$ref": "#/definitions/ng_agentImportAzureBlobAuthTypeEnum",
          "description": "The Azure Blob URI of the import source."
        },
        "sas_token": {
          "type": "string",
          "description": "The sas token. This field is input-only."
        },
        "uri": {
          "type": "string",
          "description": "The Azure Blob URI of the import source. For example: azure://\u003caccount\u003e.blob.core.windows.net/\u003ccontainer\u003e/\u003cpath\u003e."
        },
        "target_table_infos": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentImportTargetTableInfo"
          },
          "description": "The target table information of the import."
        }
      },
      "required": [
        "auth_type",
        "uri"
      ]
    },
    "ng_agentBatchCancelImportIntoJobsReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        },
        "job_ids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uint64"
          }
        }
      }
    },
    "ng_agentBatchCancelImportIntoJobsResp": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentBatchCancelImportIntoJobsRespResult"
          }
        }
      }
    },
    "ng_agentBatchCancelImportIntoJobsRespResult": {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string",
          "format": "uint64"
        },
        "error_msg": {
          "type": "string"
        }
      }
    },
    "ng_agentBatchCreateImportIntoJobTasksReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        },
        "tasks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/BatchCreateImportIntoJobTasksReqTask"
          }
        }
      }
    },
    "ng_agentBatchCreateImportIntoJobTasksResp": {
      "type": "object",
      "properties": {
        "tasks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentCreateImportIntoJobTaskResp"
          }
        }
      }
    },
    "ng_agentBatchGetImportIntoJobTasksReq": {
      "type": "object",
      "properties": {
        "task_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ng_agentBatchGetImportIntoJobTasksResp": {
      "type": "object",
      "properties": {
        "tasks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentGetImportIntoJobTaskResp"
          }
        }
      }
    },
    "ng_agentCheckAliOSSAccessReq": {
      "type": "object",
      "properties": {
        "oss_uri": {
          "type": "string"
        },
        "oss_access_key_id": {
          "type": "string"
        },
        "oss_access_key_secret": {
          "$ref": "#/definitions/ng_agentEncryptedData"
        },
        "endpoint": {
          "type": "string"
        }
      },
      "required": [
        "oss_access_key_id",
        "oss_access_key_secret",
        "endpoint",
        "oss_uri"
      ]
    },
    "ng_agentCheckAliOSSAccessResp": {
      "type": "object",
      "properties": {
        "error_msg": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "pem_changed": {
          "type": "boolean"
        }
      },
      "required": [
        "error_msg"
      ]
    },
    "ng_agentCheckAzblobAccessReq": {
      "type": "object",
      "properties": {
        "azblob_url": {
          "type": "string"
        },
        "sas_token": {
          "type": "string"
        }
      },
      "required": [
        "azblob_url",
        "sas_token"
      ]
    },
    "ng_agentCheckAzblobAccessResp": {
      "type": "object",
      "properties": {
        "error_msg": {
          "type": "string"
        }
      },
      "required": [
        "error_msg"
      ]
    },
    "ng_agentCheckDBConnectivityReq": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        },
        "port": {
          "type": "integer",
          "format": "int64"
        },
        "user": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "ssl_ca": {
          "type": "string"
        },
        "ssl_cert": {
          "type": "string"
        },
        "ssl_key": {
          "type": "string"
        },
        "request_id": {
          "type": "string"
        }
      }
    },
    "ng_agentCheckDBConnectivityResp": {
      "type": "object",
      "properties": {
        "db_version": {
          "type": "string"
        }
      }
    },
    "ng_agentCheckGcsAccessReq": {
      "type": "object",
      "properties": {
        "gcs_url": {
          "type": "string"
        },
        "gcs_options": {
          "$ref": "#/definitions/ng_agentGcsOptions"
        }
      },
      "required": [
        "gcs_url"
      ]
    },
    "ng_agentCheckGcsAccessResp": {
      "type": "object",
      "properties": {
        "error_msg": {
          "type": "string"
        },
        "region": {
          "type": "string"
        }
      },
      "required": [
        "error_msg"
      ]
    },
    "ng_agentCheckItem": {
      "type": "string",
      "enum": [
        "CHECK_ITEM_UNKNOWN",
        "CHECK_ITEM_TARGET_TABLE_EMPTY",
        "CHECK_ITEM_SOURCE_SCHEMA",
        "CHECK_ITEM_CSV_HEADER",
        "CHECK_ITEM_TARGET_CLUSTER_SIZE"
      ],
      "default": "CHECK_ITEM_UNKNOWN"
    },
    "ng_agentCheckResult": {
      "type": "object",
      "properties": {
        "check_item": {
          "$ref": "#/definitions/ng_agentCheckItem"
        },
        "has_passed": {
          "type": "boolean"
        },
        "msg": {
          "type": "string"
        }
      },
      "required": [
        "check_item",
        "has_passed",
        "msg"
      ]
    },
    "ng_agentCheckS3AccessReq": {
      "type": "object",
      "properties": {
        "role_arn": {
          "type": "string"
        },
        "s3_url": {
          "type": "string"
        },
        "external_id": {
          "type": "string"
        },
        "aws_access_key_id": {
          "type": "string"
        },
        "aws_secret_access_key": {
          "type": "string"
        },
        "encrypt_key_secret": {
          "type": "boolean"
        },
        "aws_access_key_secret": {
          "$ref": "#/definitions/ng_agentEncryptedData"
        }
      },
      "required": [
        "role_arn",
        "s3_url",
        "external_id"
      ]
    },
    "ng_agentCheckS3AccessResp": {
      "type": "object",
      "properties": {
        "error_msg": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "pem_changed": {
          "type": "boolean"
        }
      },
      "required": [
        "error_msg"
      ]
    },
    "ng_agentClearEmptyTablesReq": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        },
        "tables": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agent_commonTable"
          }
        }
      }
    },
    "ng_agentClearEmptyTablesResp": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentClearSingleEmptyTableResult"
          }
        }
      }
    },
    "ng_agentClearSingleEmptyTableResult": {
      "type": "object",
      "properties": {
        "table": {
          "$ref": "#/definitions/ng_agent_commonTable"
        },
        "result": {
          "$ref": "#/definitions/ng_agentClearSingleEmptyTableResultResult"
        },
        "ErrMessage": {
          "type": "string"
        }
      }
    },
    "ng_agentClearSingleEmptyTableResultResult": {
      "type": "string",
      "enum": [
        "Unknown",
        "Cleared",
        "NotExist",
        "NotEmpty",
        "HasError"
      ],
      "default": "Unknown"
    },
    "ng_agentCluster": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "namespace": {
          "type": "string"
        },
        "user": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "read_timeout": {
          "type": "string",
          "format": "int64",
          "title": "unit is second"
        },
        "write_timeout": {
          "type": "string",
          "format": "int64"
        },
        "provider_type": {
          "type": "string"
        },
        "password_encrypted": {
          "type": "boolean"
        },
        "encrypted_password": {
          "$ref": "#/definitions/ng_agentEncryptedData"
        }
      },
      "required": [
        "cluster_id",
        "namespace",
        "user",
        "password"
      ]
    },
    "ng_agentColumnValue": {
      "type": "object",
      "properties": {
        "string_value": {
          "type": "string"
        },
        "int64_value": {
          "type": "string",
          "format": "int64"
        },
        "double_value": {
          "type": "number",
          "format": "double"
        },
        "bool_value": {
          "type": "boolean"
        },
        "timestamp_value": {
          "type": "string",
          "format": "date-time",
          "title": "for datetime, timestamp, date"
        }
      }
    },
    "ng_agentConnProfile": {
      "type": "object",
      "properties": {
        "conn_type": {
          "$ref": "#/definitions/ng_agentConnType"
        },
        "endpoint_id": {
          "type": "string"
        },
        "host": {
          "type": "string"
        },
        "port": {
          "type": "integer",
          "format": "int32"
        },
        "user": {
          "type": "string"
        },
        "encrypted_password": {
          "$ref": "#/definitions/ng_agentEncryptedData"
        },
        "security": {
          "$ref": "#/definitions/ng_agentSecurity"
        }
      },
      "required": [
        "conn_type",
        "port",
        "user",
        "encrypted_password"
      ]
    },
    "ng_agentConnType": {
      "type": "string",
      "enum": [
        "CONN_TYPE_UNSPECIFIED",
        "PUBLIC",
        "PRIVATE_LINK"
      ],
      "default": "CONN_TYPE_UNSPECIFIED"
    },
    "ng_agentCreateImportDataSizeEstimateTaskReq": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "source_uri": {
          "type": "string"
        },
        "max_scan_files": {
          "type": "integer",
          "format": "int32"
        },
        "table_meta": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentCreateImportDataSizeEstimateTaskReqTableMeta"
          }
        },
        "csv_config": {
          "$ref": "#/definitions/ng_agentCsvConfig",
          "description": "Optional CSV configuration for size estimation. When set, the SDK uses\nthese settings instead of defaults to correctly parse CSV data files."
        }
      }
    },
    "ng_agentCreateImportDataSizeEstimateTaskReqTableMeta": {
      "type": "object",
      "properties": {
        "database": {
          "type": "string"
        },
        "table": {
          "type": "string"
        },
        "wildcard_path": {
          "type": "string"
        }
      }
    },
    "ng_agentCreateImportDataSizeEstimateTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        }
      }
    },
    "ng_agentCreateImportFilesTaskReq": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "source_uri": {
          "type": "string"
        },
        "max_scan_files": {
          "type": "integer",
          "format": "int32"
        },
        "table_meta": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentGetImportFilesReqTableMeta"
          }
        }
      }
    },
    "ng_agentCreateImportFilesTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        }
      }
    },
    "ng_agentCreateImportIntoJobTaskReq": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "sql": {
          "type": "string"
        },
        "setup_sqls": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        }
      }
    },
    "ng_agentCreateImportIntoJobTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        }
      }
    },
    "ng_agentCreateSchemasReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "user": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "source_uri": {
          "type": "string"
        },
        "schemas": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentCreateSchemasReqSchema"
          }
        },
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        }
      }
    },
    "ng_agentCreateSchemasReqSchema": {
      "type": "object",
      "properties": {
        "database": {
          "type": "string"
        },
        "table": {
          "type": "string"
        }
      }
    },
    "ng_agentCreateSchemasResp": {
      "type": "object",
      "properties": {
        "pem_changed": {
          "type": "boolean"
        },
        "error_msg": {
          "type": "string"
        },
        "table_results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentCreateSchemasRespTableResult"
          }
        }
      }
    },
    "ng_agentCreateSchemasRespTableResult": {
      "type": "object",
      "properties": {
        "database": {
          "type": "string"
        },
        "table": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/CreateSchemasRespTableResultStatus"
        },
        "error_msg": {
          "type": "string"
        }
      }
    },
    "ng_agentCreateSchemasTaskReq": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "source_uri": {
          "type": "string"
        },
        "schemas": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentCreateSchemasReqSchema"
          }
        },
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        }
      }
    },
    "ng_agentCreateSchemasTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        }
      }
    },
    "ng_agentCreateSchemasTaskStatus": {
      "type": "string",
      "enum": [
        "CREATE_SCHEMAS_TASK_STATUS_UNSPECIFIED",
        "CREATE_SCHEMAS_TASK_STATUS_RUNNING",
        "CREATE_SCHEMAS_TASK_STATUS_SUCCEEDED",
        "CREATE_SCHEMAS_TASK_STATUS_FAILED"
      ],
      "default": "CREATE_SCHEMAS_TASK_STATUS_UNSPECIFIED"
    },
    "ng_agentCsvConfig": {
      "type": "object",
      "properties": {
        "separator": {
          "type": "string",
          "description": "Specifies the field separator. The default separator is ,."
        },
        "delimiter": {
          "type": "string",
          "title": "Specifies the field delimiter. The default delimiter is \""
        },
        "header": {
          "type": "boolean",
          "description": "Import CSV files of the tables with header. Default is true."
        },
        "backslash_escape": {
          "type": "boolean"
        },
        "trim_last_separator": {
          "type": "boolean"
        },
        "not_null": {
          "type": "boolean",
          "description": "Whether the columns in CSV files can be null. Default is false."
        },
        "null_value": {
          "type": "string",
          "description": "Representation of null values in CSV files. Default is \"\\N\"."
        },
        "escape_char": {
          "type": "string",
          "description": "Specifies the escape character for fields. Default is \\."
        },
        "lines_terminated_by": {
          "type": "string",
          "description": "Specifies the line terminator. Default is \\n."
        }
      }
    },
    "ng_agentDMOpenAPIProxyRequest": {
      "type": "object",
      "properties": {
        "dm_namespace": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "body": {
          "type": "string",
          "format": "byte"
        },
        "patch_target_conn": {
          "type": "boolean"
        },
        "cluster_id": {
          "type": "string"
        }
      }
    },
    "ng_agentDMOpenAPIProxyResponse": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "format": "int64"
        },
        "body": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "ng_agentDropClusterTablesReq": {
      "type": "object",
      "properties": {
        "tables": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agent_commonTable"
          }
        },
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        }
      }
    },
    "ng_agentEncryptedData": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "format": "byte",
          "description": "The encrypted data."
        },
        "pem": {
          "type": "string",
          "format": "byte",
          "description": "The public key PEM string used for encryption."
        }
      }
    },
    "ng_agentEstimateSourceDataSizeReq": {
      "type": "object",
      "properties": {
        "lightning_config": {
          "type": "string"
        },
        "cluster_namespace": {
          "type": "string"
        },
        "cluster_name_prefix": {
          "type": "string"
        }
      },
      "required": [
        "lightning_config"
      ]
    },
    "ng_agentEstimateSourceDataSizeResp": {
      "type": "object",
      "properties": {
        "size_with_index": {
          "type": "string",
          "format": "uint64"
        },
        "size_without_index": {
          "type": "string",
          "format": "uint64"
        },
        "base_resp": {
          "$ref": "#/definitions/baseBaseResp"
        }
      }
    },
    "ng_agentExecSQLOnDMSourceRequest": {
      "type": "object",
      "properties": {
        "conn_profile": {
          "$ref": "#/definitions/ng_agentConnProfile"
        },
        "sql": {
          "type": "string"
        }
      },
      "required": [
        "conn_profile"
      ]
    },
    "ng_agentExecSQLOnDMSourceResponse": {
      "type": "object",
      "properties": {
        "error_msg": {
          "type": "string"
        },
        "sql_result": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentRow"
          }
        },
        "column_names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "pem_changed": {
          "type": "boolean"
        }
      }
    },
    "ng_agentExecSQLReq": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        },
        "sql": {
          "type": "string"
        },
        "column_num": {
          "type": "string",
          "format": "uint64",
          "title": "column_num represents the column numbers in the SQL sentence"
        },
        "typed_columns": {
          "type": "boolean",
          "title": "if true, the response rows will contain typed column values"
        },
        "setup_sqls": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "cluster",
        "sql"
      ]
    },
    "ng_agentExecSQLResp": {
      "type": "object",
      "properties": {
        "error_msg": {
          "type": "string"
        },
        "sql_result": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentRow"
          }
        },
        "column_names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "pem_changed": {
          "type": "boolean"
        }
      },
      "required": [
        "error_msg",
        "sql_result"
      ]
    },
    "ng_agentGCSSource": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The GCS URI of the import source."
        },
        "auth_type": {
          "$ref": "#/definitions/ng_agentImportGcsAuthTypeEnum",
          "description": "The auth method of the import source."
        },
        "service_account_key": {
          "type": "string",
          "title": "The service account key"
        },
        "target_table_infos": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentImportTargetTableInfo"
          },
          "description": "The target table information of the import."
        }
      },
      "required": [
        "uri",
        "auth_type"
      ]
    },
    "ng_agentGcsOptions": {
      "type": "object",
      "properties": {
        "impersonate_service_account": {
          "type": "string"
        }
      }
    },
    "ng_agentGetClusterClientSecretReq": {
      "type": "object",
      "properties": {
        "cluster_name_prefix": {
          "type": "string"
        },
        "cluster_namespace": {
          "type": "string"
        },
        "provider_type": {
          "type": "string"
        },
        "request_id": {
          "type": "string"
        }
      }
    },
    "ng_agentGetClusterClientSecretResp": {
      "type": "object",
      "properties": {
        "ssl_ca": {
          "type": "string"
        },
        "ssl_cert": {
          "type": "string"
        },
        "ssl_key": {
          "type": "string"
        }
      }
    },
    "ng_agentGetClusterTablesResp": {
      "type": "object",
      "properties": {
        "schemas": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentSchema"
          }
        }
      }
    },
    "ng_agentGetImportDataSizeEstimateTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/ng_agentImportDataSizeEstimateTaskStatus"
        },
        "error_msg": {
          "type": "string"
        },
        "result": {
          "$ref": "#/definitions/ng_agentGetImportDataSizeEstimateTaskRespResult"
        }
      }
    },
    "ng_agentGetImportDataSizeEstimateTaskRespResult": {
      "type": "object",
      "properties": {
        "total_source_size": {
          "type": "string",
          "format": "uint64"
        },
        "total_tikv_size": {
          "type": "string",
          "format": "uint64"
        },
        "tables": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/GetImportDataSizeEstimateTaskRespTableEstimate"
          }
        }
      }
    },
    "ng_agentGetImportFilesReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "source_uri": {
          "type": "string"
        },
        "use_oss_internal_endpoint": {
          "type": "boolean"
        },
        "max_scan_files": {
          "type": "integer",
          "format": "int32"
        },
        "table_meta": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentGetImportFilesReqTableMeta"
          }
        }
      }
    },
    "ng_agentGetImportFilesReqTableMeta": {
      "type": "object",
      "properties": {
        "database": {
          "type": "string"
        },
        "table": {
          "type": "string"
        },
        "wildcard_path": {
          "type": "string"
        }
      }
    },
    "ng_agentGetImportFilesResp": {
      "type": "object",
      "properties": {
        "table_meta": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentGetImportFilesRespTableMeta"
          }
        }
      }
    },
    "ng_agentGetImportFilesRespTableMeta": {
      "type": "object",
      "properties": {
        "database": {
          "type": "string"
        },
        "table": {
          "type": "string"
        },
        "data_files": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/GetImportFilesRespDataFileMeta"
          }
        },
        "total_size": {
          "type": "string",
          "format": "uint64"
        },
        "wildcard_path": {
          "type": "string"
        },
        "schema_file": {
          "type": "string"
        },
        "table_created": {
          "type": "boolean"
        }
      }
    },
    "ng_agentGetImportFilesTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/ng_agentImportFilesTaskStatus"
        },
        "error_msg": {
          "type": "string"
        },
        "result": {
          "$ref": "#/definitions/ng_agentGetImportFilesResp"
        }
      }
    },
    "ng_agentGetImportIntoJobTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/ng_agentImportIntoJobTaskStatus"
        },
        "error_msg": {
          "type": "string"
        },
        "result": {
          "$ref": "#/definitions/ng_agentGetImportIntoJobTaskRespResult"
        }
      }
    },
    "ng_agentGetImportIntoJobTaskRespResult": {
      "type": "object",
      "properties": {
        "job_id": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "ng_agentGetImportSchemasMetaReq": {
      "type": "object",
      "properties": {
        "lightning_config": {
          "type": "string"
        }
      },
      "required": [
        "lightning_config"
      ]
    },
    "ng_agentGetImportSchemasMetaResp": {
      "type": "object",
      "properties": {
        "schemas_meta": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/ng_agentImportsSchemaMeta"
          },
          "title": "map: \u003cschema id, schema meta\u003e"
        },
        "base_resp": {
          "$ref": "#/definitions/baseBaseResp"
        }
      },
      "required": [
        "schemas_meta"
      ]
    },
    "ng_agentGetPublicKeyRequest": {
      "type": "object",
      "description": "GetPublicKeyRequest is the request for fetching the agent's public key."
    },
    "ng_agentGetPublicKeyResponse": {
      "type": "object",
      "properties": {
        "pem": {
          "type": "string",
          "format": "byte",
          "description": "The public key in PEM format."
        }
      },
      "description": "GetPublicKeyResponse contains the agent's public key."
    },
    "ng_agentGetSchemasTaskResp": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/ng_agentCreateSchemasTaskStatus"
        },
        "error_msg": {
          "type": "string"
        },
        "result": {
          "$ref": "#/definitions/ng_agentCreateSchemasResp"
        }
      }
    },
    "ng_agentGetSourceBinlogStatusResp": {
      "type": "object",
      "properties": {
        "binlog_name": {
          "type": "string"
        },
        "binlog_pos": {
          "type": "integer",
          "format": "int64"
        },
        "binlog_do_dbs": {
          "type": "string"
        },
        "binlog_ignore_dbs": {
          "type": "string"
        },
        "gtid_str": {
          "type": "string"
        }
      }
    },
    "ng_agentGetSourceTablesResp": {
      "type": "object",
      "properties": {
        "schemas": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentSchema"
          }
        }
      }
    },
    "ng_agentGetTiDBHostRequest": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string"
        }
      },
      "required": [
        "cluster_id"
      ]
    },
    "ng_agentGetTiDBHostResponse": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        }
      }
    },
    "ng_agentGetTiDBServerSecretReq": {
      "type": "object",
      "properties": {
        "cluster_name_prefix": {
          "type": "string"
        },
        "cluster_namespace": {
          "type": "string"
        },
        "provider_type": {
          "type": "string"
        },
        "request_id": {
          "type": "string"
        }
      }
    },
    "ng_agentGetTiDBServerSecretResp": {
      "type": "object",
      "properties": {
        "ssl_ca": {
          "type": "string"
        },
        "ssl_cert": {
          "type": "string"
        },
        "ssl_key": {
          "type": "string"
        }
      }
    },
    "ng_agentGetUserFileReq": {
      "type": "object",
      "properties": {
        "s3_url": {
          "type": "string",
          "title": "Deprecated: use `source_url` instead"
        },
        "role_arn": {
          "type": "string"
        },
        "external_id": {
          "type": "string"
        },
        "start_offset": {
          "type": "string",
          "format": "int64"
        },
        "end_offset": {
          "type": "string",
          "format": "int64"
        },
        "source_url": {
          "type": "string"
        },
        "data_source_type": {
          "type": "integer",
          "format": "int64"
        },
        "gcs_options": {
          "$ref": "#/definitions/ng_agentGcsOptions"
        },
        "sas_token": {
          "type": "string"
        },
        "request_id": {
          "type": "string"
        }
      }
    },
    "ng_agentGetUserFileResp": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string"
        }
      }
    },
    "ng_agentImportAzureBlobAuthTypeEnum": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "SAS_TOKEN"
      ],
      "default": "UNSPECIFIED",
      "description": " - UNSPECIFIED: The access method is unknown.\n - SAS_TOKEN: The access method is sas token."
    },
    "ng_agentImportDataSizeEstimateTaskStatus": {
      "type": "string",
      "enum": [
        "IMPORT_DATA_SIZE_ESTIMATE_TASK_STATUS_UNSPECIFIED",
        "IMPORT_DATA_SIZE_ESTIMATE_TASK_STATUS_RUNNING",
        "IMPORT_DATA_SIZE_ESTIMATE_TASK_STATUS_SUCCEEDED",
        "IMPORT_DATA_SIZE_ESTIMATE_TASK_STATUS_FAILED"
      ],
      "default": "IMPORT_DATA_SIZE_ESTIMATE_TASK_STATUS_UNSPECIFIED"
    },
    "ng_agentImportFileTypeEnum": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "CSV",
        "SQL",
        "AURORA_SNAPSHOT",
        "PARQUET"
      ],
      "default": "UNSPECIFIED",
      "description": " - UNSPECIFIED: The type of the file is unknown.\n - CSV: CSV type.\n - SQL: SQL type.\n - AURORA_SNAPSHOT: Aurora snapshot type.\n - PARQUET: Parquet type."
    },
    "ng_agentImportFilesTaskStatus": {
      "type": "string",
      "enum": [
        "IMPORT_FILES_TASK_STATUS_UNSPECIFIED",
        "IMPORT_FILES_TASK_STATUS_RUNNING",
        "IMPORT_FILES_TASK_STATUS_SUCCEEDED",
        "IMPORT_FILES_TASK_STATUS_FAILED"
      ],
      "default": "IMPORT_FILES_TASK_STATUS_UNSPECIFIED"
    },
    "ng_agentImportGcsAuthTypeEnum": {
      "type": "string",
      "enum": [
        "AUTH_TYPE_UNSPECIFIED",
        "SERVICE_ACCOUNT_KEY"
      ],
      "default": "AUTH_TYPE_UNSPECIFIED",
      "description": " - AUTH_TYPE_UNSPECIFIED: The access method is unknown.\n - SERVICE_ACCOUNT_KEY: The access method is service account key."
    },
    "ng_agentImportIntoJobTaskStatus": {
      "type": "string",
      "enum": [
        "IMPORT_INTO_JOB_TASK_STATUS_UNSPECIFIED",
        "IMPORT_INTO_JOB_TASK_STATUS_RUNNING",
        "IMPORT_INTO_JOB_TASK_STATUS_SUCCEEDED",
        "IMPORT_INTO_JOB_TASK_STATUS_FAILED"
      ],
      "default": "IMPORT_INTO_JOB_TASK_STATUS_UNSPECIFIED"
    },
    "ng_agentImportOptions": {
      "type": "object",
      "properties": {
        "file_type": {
          "$ref": "#/definitions/ng_agentImportFileTypeEnum",
          "description": "The import file type."
        },
        "csv_config": {
          "$ref": "#/definitions/ng_agentCsvConfig",
          "description": "Optional. The CSV format."
        },
        "need_drop_table": {
          "type": "boolean",
          "description": "Optional. Only used in tutorial."
        },
        "display_name": {
          "type": "string",
          "description": "Optional. The display name of the import."
        }
      },
      "required": [
        "file_type"
      ]
    },
    "ng_agentImportS3AuthTypeEnum": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "ROLE_ARN",
        "ACCESS_KEY"
      ],
      "default": "UNSPECIFIED",
      "description": " - UNSPECIFIED: The access method is unknown.\n - ROLE_ARN: The access method is role arn.\n - ACCESS_KEY: The access method is access key."
    },
    "ng_agentImportSource": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/ng_agentImportSourceTypeEnum",
          "description": "The import source type."
        },
        "s3": {
          "$ref": "#/definitions/ng_agentS3Source"
        },
        "gcs": {
          "$ref": "#/definitions/ng_agentGCSSource"
        },
        "azure_blob": {
          "$ref": "#/definitions/ng_agentAzureBlobSource"
        }
      },
      "required": [
        "type"
      ]
    },
    "ng_agentImportSourceTypeEnum": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "S3",
        "GCS",
        "AZURE_BLOB"
      ],
      "default": "UNSPECIFIED",
      "title": "- UNSPECIFIED: The source of the import is unknown.\n - S3: S3 source.\n - GCS: gcs source\n - AZURE_BLOB: azure blob source"
    },
    "ng_agentImportTargetTableInfo": {
      "type": "object",
      "properties": {
        "target_table": {
          "$ref": "#/definitions/ng_agent_commonTable"
        },
        "custom_file": {
          "type": "string"
        }
      },
      "required": [
        "target_table",
        "custom_file"
      ]
    },
    "ng_agentImportsSchemaMeta": {
      "type": "object",
      "properties": {
        "create_file": {
          "type": "string"
        },
        "max_data_file_size": {
          "type": "string",
          "format": "uint64"
        },
        "tables_meta": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/ng_agentImportsTableMeta"
          },
          "title": "map: \u003ctable id, table meta\u003e"
        },
        "create_file_size": {
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "ng_agentImportsTableMeta": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "create_file": {
          "type": "string"
        },
        "data_file_num": {
          "type": "string",
          "format": "uint64"
        },
        "data_file_size": {
          "type": "string",
          "format": "uint64"
        },
        "first_data_file": {
          "type": "string"
        },
        "max_data_file_size": {
          "type": "string",
          "format": "uint64"
        },
        "create_file_size": {
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "ng_agentLightningPrecheckReq": {
      "type": "object",
      "properties": {
        "lightning_config": {
          "type": "string"
        },
        "check_items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ng_agentCheckItem"
          }
        },
        "cluster_namespace": {
          "type": "string"
        },
        "cluster_name_prefix": {
          "type": "string"
        },
        "gen_gcp_credential": {
          "type": "boolean"
        },
        "provider_type": {
          "type": "string"
        }
      },
      "required": [
        "lightning_config"
      ]
    },
    "ng_agentLightningPrecheckResp": {
      "type": "object",
      "properties": {
        "check_results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentCheckResult"
          }
        },
        "base_resp": {
          "$ref": "#/definitions/baseBaseResp"
        }
      },
      "required": [
        "check_results"
      ]
    },
    "ng_agentLightningSourcePreviewReq": {
      "type": "object",
      "properties": {
        "lightning_config": {
          "type": "string"
        },
        "cluster_namespace": {
          "type": "string"
        },
        "cluster_name_prefix": {
          "type": "string"
        }
      },
      "required": [
        "lightning_config",
        "cluster_namespace",
        "cluster_name_prefix"
      ]
    },
    "ng_agentLightningSourcePreviewResp": {
      "type": "object",
      "properties": {
        "schemas": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentSchema"
          }
        },
        "base_resp": {
          "$ref": "#/definitions/baseBaseResp"
        }
      },
      "required": [
        "schemas"
      ]
    },
    "ng_agentLoadDataReq": {
      "type": "object",
      "properties": {
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        },
        "target_db": {
          "type": "string"
        },
        "target_table": {
          "type": "string"
        },
        "source_uri": {
          "type": "string"
        },
        "separator": {
          "type": "string"
        },
        "delimiter": {
          "type": "string"
        },
        "backslash_escape": {
          "type": "boolean"
        },
        "ignore_one_line": {
          "type": "boolean"
        },
        "terminator": {
          "type": "string"
        }
      },
      "required": [
        "cluster",
        "target_db",
        "target_table",
        "source_uri"
      ]
    },
    "ng_agentLoadDataResp": {
      "type": "object",
      "properties": {
        "err_message": {
          "type": "string",
          "title": "string warning_message = 2;"
        }
      }
    },
    "ng_agentNsLookupReq": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        },
        "request_id": {
          "type": "string"
        }
      }
    },
    "ng_agentNsLookupResp": {
      "type": "object",
      "properties": {
        "ips": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ng_agentPrecheckDMJobReq": {
      "type": "object",
      "properties": {
        "req_id": {
          "type": "string"
        },
        "full_instance_migrate": {
          "type": "boolean"
        },
        "task_config": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cluster_password": {
          "type": "string"
        },
        "source_passwords": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cluster_id": {
          "type": "string"
        },
        "extra_checking_items": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ng_agentPrecheckDMJobResp": {
      "type": "object",
      "properties": {
        "check_results": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "ng_agentPrecheckImportFileReq": {
      "type": "object",
      "properties": {
        "sources": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PrecheckImportFileReqSource"
          }
        },
        "data_format": {
          "type": "string",
          "format": "uint64"
        },
        "data_source": {
          "type": "string",
          "format": "uint64"
        },
        "csv_config": {
          "$ref": "#/definitions/ng_agentCsvConfig"
        },
        "cluster": {
          "$ref": "#/definitions/ng_agentCluster"
        },
        "aws_role_arn": {
          "type": "string"
        },
        "aws_external_id": {
          "type": "string"
        },
        "aws_access_key_id": {
          "type": "string"
        },
        "aws_secret_access_key": {
          "type": "string"
        },
        "sas_token": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        }
      }
    },
    "ng_agentPrecheckImportJobResp": {
      "type": "object",
      "properties": {
        "target_tables": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentTableResult"
          },
          "description": "The list of tables which has matched data files."
        },
        "error_message": {
          "type": "string",
          "description": "The error message consists of the unmatched tables."
        },
        "total_data_files_count": {
          "type": "string",
          "format": "uint64",
          "description": "The total data files count."
        },
        "total_tables_count": {
          "type": "string",
          "format": "uint64",
          "description": "The total tables count."
        },
        "is_truncated": {
          "type": "boolean",
          "description": "If the result is truncated."
        },
        "base_resp": {
          "$ref": "#/definitions/baseBaseResp"
        }
      }
    },
    "ng_agentPreviewCsvFileReq": {
      "type": "object",
      "properties": {
        "source_uri": {
          "type": "string"
        },
        "csv_config": {
          "$ref": "#/definitions/ng_agentCsvConfig"
        },
        "first_n": {
          "type": "string",
          "format": "uint64"
        },
        "aws_role_arn": {
          "type": "string"
        },
        "aws_external_id": {
          "type": "string"
        },
        "aws_access_key_id": {
          "type": "string"
        },
        "aws_secret_access_key": {
          "type": "string"
        }
      }
    },
    "ng_agentPreviewCsvFileResp": {
      "type": "object",
      "properties": {
        "table": {
          "$ref": "#/definitions/ng_agentTable"
        }
      }
    },
    "ng_agentRow": {
      "type": "object",
      "properties": {
        "column_values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "typed_column_values": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentColumnValue"
          }
        }
      }
    },
    "ng_agentS3Source": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The S3 URI of the import source."
        },
        "auth_type": {
          "$ref": "#/definitions/ng_agentImportS3AuthTypeEnum",
          "description": "The auth method of the import source."
        },
        "role_arn": {
          "$ref": "#/definitions/S3SourceRoleArn",
          "title": "The role arn"
        },
        "access_key": {
          "$ref": "#/definitions/S3SourceAccessKey",
          "description": "The access key."
        },
        "target_table_infos": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentImportTargetTableInfo"
          },
          "description": "The target table information of the import."
        }
      },
      "required": [
        "uri",
        "auth_type"
      ]
    },
    "ng_agentSchema": {
      "type": "object",
      "properties": {
        "schema_name": {
          "type": "string"
        },
        "tables": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentTable"
          }
        }
      }
    },
    "ng_agentSearchImportFilesReq": {
      "type": "object",
      "properties": {
        "target_source": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SearchImportFilesReqTargetSource"
          }
        },
        "data_format": {
          "type": "integer",
          "format": "int64",
          "title": "1: sql\n2: aurora snapshot(parquet)\n3: csv\n4: parquet(not aurora)"
        },
        "data_source_type": {
          "type": "integer",
          "format": "int64",
          "title": "1: aws s3\n2: gcs\n3: azblob"
        },
        "source_uri": {
          "type": "string"
        },
        "aws_role_arn": {
          "type": "string"
        },
        "aws_external_id": {
          "type": "string"
        },
        "aws_access_key_id": {
          "type": "string"
        },
        "aws_secret_access_key": {
          "type": "string"
        },
        "gcs_options": {
          "$ref": "#/definitions/ng_agentGcsOptions"
        },
        "sas_token": {
          "type": "string"
        }
      },
      "required": [
        "target_source",
        "data_format",
        "data_source_type",
        "source_uri"
      ]
    },
    "ng_agentSearchImportFilesResp": {
      "type": "object",
      "properties": {
        "table_matches": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SearchImportFilesRespTableMatch"
          }
        }
      }
    },
    "ng_agentSecurity": {
      "type": "object",
      "properties": {
        "cert_allowed_cn": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ssl_ca_content": {
          "type": "string",
          "format": "byte"
        },
        "ssl_cert_content": {
          "type": "string",
          "format": "byte"
        },
        "ssl_key_content": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "ng_agentTable": {
      "type": "object",
      "properties": {
        "schema_name": {
          "type": "string"
        },
        "table_name": {
          "type": "string"
        },
        "row_headers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "row_values": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ng_agentRow"
          }
        },
        "row_data_types": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "column_is_pk": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "column_auto_gen": {
          "type": "array",
          "items": {
            "type": "boolean"
          },
          "title": "column_auto_gen represents column is auto_increment or auto_random"
        }
      }
    },
    "ng_agentTableResult": {
      "type": "object",
      "properties": {
        "target_table": {
          "$ref": "#/definitions/ng_agent_commonTable",
          "description": "The target table."
        },
        "error_message": {
          "type": "string",
          "description": "The error message."
        },
        "matched_data_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The matched data files."
        },
        "matched_schema_file": {
          "type": "string",
          "description": "The matched schema file."
        }
      }
    },
    "ng_agent_commonTable": {
      "type": "object",
      "properties": {
        "schema": {
          "type": "string",
          "example": "database_name",
          "description": "The name of the database containing the target table."
        },
        "table": {
          "type": "string",
          "example": "table_name",
          "description": "The name of the table within the database."
        }
      }
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
        }
      },
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\nExample 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\nExample 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    }
  }
}
