API接收地址

  1. https://pipeline.qiniu.com

API返回内容

响应报文

  • 如果请求成功,返回HTTP状态码200:
  1. HTTP/1.1 200 OK
  • 如果请求失败,返回包含如下内容的JSON字符串(已格式化,便于阅读):
  1. {
  2. "error": "<errMsg string>"
  3. }
  • 如果请求包含数据获取,则返回相应数据的JSON字符串;

创建消息队列(数据源)

请求语法

  1. POST /v2/repos/<RepoName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "region": <Region>,
  6. "schema": [
  7. {
  8. "key": <Key>,
  9. "valtype": <ValueType>,
  10. "elemtype": <ElemType>,
  11. "required": <Required>,
  12. "schema": [
  13. ...
  14. ]
  15. },
  16. ...
  17. ],
  18. "options":{
  19. "withIP":<ipkeyname>
  20. }
  21. }

请求内容

参数 类型 必填 说明
RepoName string 消息队列名称
命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
region string 计算与存储所使用的物理资源所在区域
目前仅支持“nb”(华东区域)
schema array 数据的字段信息
由‘字段名称’、‘字段类型’、‘数组类型’、‘是否必填’组成
schema.key string 字段名称
命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
schema.valtype string 字段类型
目前仅支持:
boolean:布尔类型
long:整型
date:RFC3339日期格式
float:64位精度浮点型
string:字符串
array:数组
map:嵌套类型,可嵌套,最多5层,类似于json object
jsonstring:符合json格式的字符串
schema.elemtype string 数组类型
schema.valtype:"array"时必填
目前仅支持longfloatstring
schema.required bool 是否必填
用户在传输数据时key字段是否必填
options map 表达一些repo的可选项
options.withIP string 在写入的数据中加入用户的来源IP信息,并命名为字段,加入到schema中,类型为string;若命名为空则不加入。

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/repos/Test_Repo \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "region": "nb",
  6. "schema": [
  7. {
  8. "key": "userName",
  9. "valtype": "string",
  10. "required": true
  11. },
  12. {
  13. "key": "age",
  14. "valtype": "float",
  15. "required": true
  16. },
  17. {
  18. "key": "addresses",
  19. "valtype": "array",
  20. "elemtype": "long",
  21. "required": true
  22. },
  23. {
  24. "key": "profile",
  25. "valtype": "map",
  26. "required": true,
  27. "schema": [
  28. {
  29. "key": "position",
  30. "valtype": "string",
  31. "required": true
  32. },
  33. {
  34. "key": "salary",
  35. "valtype": "float",
  36. "required": true
  37. },
  38. {
  39. "key": "education",
  40. "valtype": "array",
  41. "elemtype": "string",
  42. "required": false
  43. }
  44. ]
  45. }
  46. ]
  47. }'

查看所有消息队列

请求语法

  1. GET /v2/repos
  2. Authorization: Pandora <auth>

响应报文

  1. Content-Type: application/json
  2. {
  3. "repos": [
  4. {
  5. "name": <RepoName>,
  6. "region": <Region>,
  7. "derivedFrom": <TransformName>
  8. },
  9. ...
  10. ]
  11. }

响应内容

参数 类型 必填 说明
derivedFrom string - 表示这个消息队列是由哪个transform生成的
如果此项为空,说明该消息队列是由用户自行创建的

根据名称查询消息队列

请求语法

  1. GET /v2/repos/<RepoName>
  2. Authorization: Pandora <auth>

响应报文

  1. Content-Type: application/json
  2. {
  3. "region": <Region>,
  4. "derivedFrom": <TransformName>,
  5. "schema": [
  6. {
  7. "key": <Key>,
  8. "valtype": <ValueType>,
  9. "elemtype": <ElemType>,
  10. "required": <Required>,
  11. "schema": [
  12. ...
  13. ]
  14. },
  15. ...
  16. ]
  17. }

根据名称删除消息队列

请求语法

  1. DELETE /v2/repos/<RepoName>
  2. Authorization: Pandora <auth>

根据名称更新消息队列

请求语法

  1. PUT /v2/repos/<RepoName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "schema": [
  6. {
  7. "key": <Key>,
  8. "valtype": <ValueType>,
  9. "elemtype": <ElemType>,
  10. "required": <Required>,
  11. "schema": [
  12. ...
  13. ]
  14. },
  15. ...
  16. ]
  17. }

!> 注意: 更新字段信息时,如果需要保留已有的字段信息,也需要填写上去,这是一次全量更新。

创建流式计算任务

请求语法

  1. POST /v2/repos/<RepoName>/transforms/<TransformName>/to/<DestinationRepoName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "plugin": {
  6. "name": <PluginName>,
  7. "output": [
  8. {
  9. "name": <FieldName1>,
  10. "type": <FieldType>
  11. },
  12. {
  13. "name": <FieldName2>
  14. },
  15. ......
  16. ],
  17. },
  18. "mode": <Mode>,
  19. "code": <Code>,
  20. "interval": <Interval>,
  21. "container": {
  22. "type": <ContainerType>,
  23. "count": <ContainerCount>
  24. },
  25. "whence": <TransformWhence>,
  26. "destrepo": [
  27. {
  28. "key": <Key>,
  29. "valtype": <ValueType>,
  30. "elemtype": <ElemType>,
  31. "required": <Required>,
  32. "schema": [
  33. ...
  34. ]
  35. },
  36. ...
  37. ]
  38. }

请求内容

参数 类型 必填 说明
RepoName string 指定一个消息队列的名称
TransformName string 计算任务名称
用来标识该消息队列的唯一性
命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
DestinationRepoName string 计算结果输出消息队列
如果该消息队列不存在
将自动创建一个
plugin json 自定义计算
name string 自定义计算名称
output json 输出数组
即这个plugin计算完成后,输出的数据结果的结构和类型
也可以理解为一张表,包含字段名称和字段类型
output.name string 输出字段名称
命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
output.type string 输出字段类型
支持stringlongfloat三种
时间类型使用long类型
默认为string类型
mode string 该计算任务使用的语言类型
目前仅支持sql
code string sql语句代码
interval string 计算任务的运行时间间隔
目前支持5s10s20s30s
1m5m10m的粒度
如果不指定,系统默认使用1m
container map 计算资源的数量及类型
type string 目前支持1U2G1U4G2U4G4U8G4U16G8U16G
分别代表
1核(CPU)2G(内存)1核(CPU)4G(内存)2核(CPU)4G(内存)4核(CPU)8G(内存)4核(CPU)16G(内存)8核(CPU)16G(内存)
count int 指资源type的数量,最小为1,没有上限
whence string 计算数据的起始位置, 目前支持oldest、newest, 分别表示从指定仓库的最早、最新数据开始计算, 默认值为newest

!> 注意:modecode是基础的数据计算方式,自定义计算(plugin)是更为高级的数据计算方式,要注意mode/code和自定义计算两种计算方式可以共存,但不可以一种都不指定。当自定义计算和mode/code共存时,系统优先执行自定义计算,后执行mode/code。

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/repos/test_repo/transforms/transform_job/to/compute_repo \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d {
  5. "mode": "sql",
  6. "code": "select count(*) from test_repo",
  7. "interval": "1m",
  8. "container": {
  9. "type": "M16C4",
  10. "count": 5
  11. }
  12. }

上传jar包(自定义计算使用)

请求语法

  1. POST /v2/plugins/<PluginName>
  2. Content-Type: application/java-archive
  3. Content-MD5: <ContentMD5>
  4. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
PluginName string plugin名称
命名规则: ^[a-zA-Z][a-zA-Z0-9_\\.]{0,127}[a-zA-Z0-9_]$
ContentMD5 string jar包的MD5码

Plugin说明:

  • Jar包的命名必须和包含代码方法的类名一致
  • 上传的Plugin Jar包最大为100MB。
  • Content-MD5头部是可选的。如果上传plugin的时候带上该头部服务器会校验上传数据的校验和,如果两者不一致服务器将拒绝上传。如果不带该头部,服务器不做任何校验和的检查。
  • 是先计算plugin内容的MD5,再对MD5做一次base64编码转化为字符串。例如qiniu这个字符串的Content-MD5是gLL29S04bTCxYd2kCqsEIQ==而不是7b9d6b4d89f6825a196d4cc50fdbedc5
  • PluginName必须与用户所编写的Parser类的全限定名保持一致,否则transform执行plugin会失败。 例如NginxLogParser位于com.qiniu包,PluginName须写为com.qiniu.NginxLogParser。

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/plugins/ComputeSumDataParser \
  2. -H 'Content-Type: application/java-archive' \
  3. -H 'Content-MD5: 900150983cd24fb0d6963f7d28e17f72' \
  4. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  5. -T ./TestPlugin.jar \

查看所有流式计算任务

请求语法

  1. GET /v2/repos/<RepoName>/transforms
  2. Authorization: Pandora <auth>

查看指定流式计算任务的信息

请求语法

  1. GET /v2/repos/<RepoName>/transforms/<TransformName>
  2. Authorization: Pandora <auth>

响应报文

  1. 200 OK
  2. Transform-Type: application/<TransformType>
  3. {
  4. "name": "<TransformName1>",
  5. "to": "<DestRepo1>",
  6. "spec": {
  7. "plugin": {
  8. "name": <PluginName>,
  9. "output": [
  10. {
  11. "name": <FieldName1>,
  12. "type": <FieldType>
  13. },
  14. {
  15. "name": <FieldName2>
  16. },
  17. ...
  18. ],
  19. },
  20. "mode": <Mode>,
  21. "code": <Code>,
  22. "interval": <Interval>
  23. }
  24. }

修改流式计算任务

请求语法

  1. PUT /v2/repos/<RepoName>/transforms/<TransformName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "plugin": {
  6. "name": <PluginName>,
  7. "output": [
  8. {
  9. "name": <FieldName1>,
  10. "type": <FieldType>
  11. },
  12. {
  13. "name": <FieldName2>
  14. },
  15. ...
  16. ],
  17. },
  18. "code": <Code>,
  19. "interval": <Interval>,
  20. "container": {
  21. "type": <ContainerType>,
  22. "count": <ContainerCount>
  23. }
  24. }

注意:

1.更新计算任务,可以同时更新pluginsql代码运行时间间隔配额,也可以只更新其中一种,但不能一种都不指定。

2.在更新sqlplugin的输出字段时,只能添加新的字段,不能删除和更改已经存在的字段。

删除流式计算任务

请求语法

  1. DELETE /v2/repos/<RepoName>/transforms/<TransformName>
  2. Authorization: Pandora <auth>

流式导出数据至HTTP地址

请求语法

  1. POST /v2/repos/<RepoName>/exports/<ExportName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "type": <http>,
  6. "whence": <ExportWhence>,
  7. "spec": {
  8. "host": <Host>,
  9. "uri": <RequestURI>,
  10. "format": <ExportFormat>
  11. }
  12. }

请求内容

参数 类型 必填 说明
RepoName string 需要导出数据的消息队列名称
ExportName string 导出任务名称
命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
Type string 导出方式
目前支持httplogdbmongotsdbkodoreport
在这里我们选择http
whence string 导出数据的起始位置
目前支持oldestnewest,
分别表示从指定仓库的最早最新数据开始导出
默认值为oldest
Spec json 导出任务的参数主体
选择不同的type
Spec也需要填写不同的参数
将在下面分开讲解
host string 服务器地址(ip或域名)
例如:https://pipeline.qiniu.com
127.0.0.1:7758
uri string 请求资源路径(具体地址,不包含ip或域名)
例如:/test/repos
format string 导出方式
支持textjson
如果没有填写此项,默认为text

!> 注意: 导出数据格式和推送数据相同。

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/repos/test_Repo/exports/export_job1 \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "type": "http",
  6. "spec": {
  7. "host": "www.qiniu.com",
  8. "uri": "/test/repos"
  9. }
  10. }'

流式导出数据至时序数据库

请求语法

  1. POST /v2/repos/<RepoName>/exports/<ExportName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "type": <tsdb>,
  6. "whence": <ExportWhence>,
  7. "spec": {
  8. "destRepoName": <DestRepoName>,
  9. "series": <SeriesName>,
  10. "omitInvalid": <OmitInvalid>,
  11. "omitEmpty": <OmitEmpty>,
  12. "tags": {
  13. "tag1": <#key1>,
  14. "tag2": <#key2>,
  15. ...
  16. },
  17. "fields": {
  18. "field1": <#key1>,
  19. "field2": <#key2>,
  20. ...
  21. },
  22. "timestamp": <#key1>,
  23. }
  24. }

请求内容

参数 类型 必填 说明
destRepoName string 数据库名称
series string 序列名称
omitInvalid bool 是否忽略无效数据,默认值为false
omitEmpty bool 当某条数据的字段取值全部为null时是否忽略该条数据,默认值为false,设置为true时可避免导出没有意义的数据
tags map 索引字段
fields map 普通字段
timestamp string 时间戳字段
会用rfc3339日期格式进行解析
如果格式不正确则会抛弃这一条数据
如果此项为空,则默认使用当前时间

时序数据库中的timestamp字段的类型必须为 date;
消息队列中字段类型为:Long/String/Date 的字段都可以导出至时序数据库中的 timestamp 字段

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/repos/test_Repo/exports/export_job4 \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "type": "tsdb",
  6. "spec":{
  7. "destRepoName": "test_tsdb",
  8. "series": "req_io",
  9. "tags": {"type": "#type","src": "#src","zone": "#zone","time": "#time","bucket": "#bucket","domain": "#domain"
  10. },
  11. "fields": {"hits": "#hits","flow": "#flow"},
  12. }
  13. }'

流式导出数据至日志检索服务

请求语法

  1. POST /v2/repos/<RepoName>/exports/<ExportName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "type": <logdb>,
  6. "whence": <ExportWhence>,
  7. "spec": {
  8. "destRepoName": <DestRepoName>,
  9. "omitInvalid": <OmitInvalid>,
  10. "omitEmpty": <OmitEmpty>,
  11. "doc": {
  12. "toRepoSchema1": <#fromRepoSchema1>,
  13. "toRepoSchema2": {
  14. "toRepoSchema3": <#fromRepoSchema3>,
  15. }
  16. ......
  17. }
  18. }

请求内容

参数 类型 必填 说明
destRepoName string 日志仓库名称
omitInvalid bool 是否忽略无效数据,默认值为false
omitEmpty bool 当某条数据的字段取值全部为null时是否忽略该条数据,默认值为false,设置为true时可避免导出没有意义的数据
doc map 字段关系说明
fromRepoSchema表示源消息队列字段名称
toRepoSchema表示目标日志仓库字段名称

消息队列中,字段的类型与日志检索服务中的字段类型需要作出如下对应:

消息队列类型:string 对应 日志检索服务:string / date

消息队列类型:long 对应 日志检索服务:long / date

消息队列类型:float 对应 日志检索服务:float

消息队列类型:array[string] 对应 日志检索服务:string

消息队列类型:array[long] 对应 日志检索服务:long

消息队列类型:array[float] 对应 日志检索服务:float

消息队列类型:map 对应 日志检索服务:object

消息队列类型:date 对应 日志检索服务:date

消息队列类型:jsonstring 对应 日志检索服务:object

!> 注意: 对于消息队列的jsonstring类型,导出至日志检索服务的object类型时,会将内嵌字段名称中所有圆点(.)替换为下划线(由于日志检索服务的object类型的内嵌字段名称不支持圆点(.))。例如,消息队列中某一个字段f1的类型为jsonstring,取值为{"education.level": "university"},最终导出至日志检索服务为{"education_level": "university"},内嵌字段education.level中的圆点(,)被替换为下划线(_)。

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/repos/test_Repo/exports/export_job2 \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "type": "logdb",
  6. "spec": {
  7. "destRepoName": "logdb_testRepo",
  8. "doc":{
  9. "user":"userName",
  10. "profile":{
  11. "age":"age"
  12. }
  13. }
  14. }
  15. }'

流式导出数据至对象存储服务

请求语法

  1. POST /v2/repos/<RepoName>/exports/<ExportName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "type": <kodo>,
  6. "whence": <ExportWhence>,
  7. "spec": {
  8. "bucket": <Bucket>,
  9. "keyPrefix": <KeyPrefix>,
  10. "email": <Email>,
  11. "accessKey": <AccessKey>,
  12. "fields": {
  13. "key1": <#value1>,
  14. "key2": <#value2>,
  15. ...
  16. },
  17. "rotateStrategy": <RotateStrategy>,
  18. "rotateSize": <RotateSize>,
  19. "rotateInterval": <RotateInterval>,
  20. "format": <Format>,
  21. "delimiter": <Delimiter>,
  22. "compress": <true|false>,
  23. "retention": <Retention>
  24. }
  25. }

请求内容

参数 类型 必填 说明
bucket string 数据中心名称
keyPrefix string 导出的文件名的前缀
email string 数据中心名称所属用户的七牛账户名称
accessKey string 七牛账户的公钥
fields map 字段关系说明
keykodo-bucket的字段名
value为导出数据的消息队列的字段名
rotateStrategy string 文件切割策略,可取值为sizeintervalboth,其中,size表示文件大小超过rotateSize触发切割行为;interval表示文件写时长超过rotateInterval将进行切割;both表示只要满足其中一个条件将触发切割行为。为了保持兼容性,默认值为interval
rotateSize int 当文件大小超过该值时将触发切割行为,单位为字节,默认值为5242880(5MB),最大值不超过1073741824(1GB)
rotateInterval int 文件切割间隔,单位为秒(s),默认值为600(10分钟)
format string 文件导出格式
支持jsontextparquetcsv四种形式
默认为json
delimiter string csv文件分割符,当文件类型为csv时,delimiter为必填项
compress bool 是否开启文件压缩功能
默认为false
retention int 数据储存时限
以天为单位
当不大于0或该字段为空时,则永久储存

!> 注1: compress 会压缩成gzip格式,但当用户指定formatparquet时,由于parquet已经是压缩好的列存格式,compress选项将不起作用。

!> 注2: keyPrefix字段表示导出文件名称的前缀,该字段可选,默认值为””(生成文件名会自动加上时间戳格式为yyyy-MM-dd-HH-mm-ss),如果使用了一个或者多个魔法变量时不会自动添加时间戳,支持魔法变量,采用$(var)的形式求值,目前可用的魔法变量var如下:

  • year 上传时的年份
  • mon 上传时的月份
  • day 上传时的日期
  • hour 上传时的小时
  • min 上传时的分钟
  • sec 上传时的秒钟

举例说明:

  • 假如keyPrefix取值为kodo-parquet/date=$(year)-$(mon)-$(day)/hour=$(hour)/min=$(min)/$(sec),且生成某一文件时的北京标准时间为2017-01-12 15:30:00, 则keyPrefix将被解析为kodo-parquet/date=2017-01-12/hour=15/min=30/00,其中的魔法变量$(year)、$(mon)、$(day)、$(hour)、$(min)、$(sec)分别对应文件生成时间2017-01-12 15:30:00的年、月、日、时、分、秒。
  • 假如keyPrefix使用默认值,且生成某一文件时的北京标准时间为2017-01-12 15:30:00, 则keyPrefix将被解析为2017-01-12-15-30-00

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/repos/repox/exports/export1 \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "type": "kodo",
  6. "spec": {
  7. "bucket": "bucket2",
  8. "keyPrefix": "key1/",
  9. "email": "xiaoming@qiniu.com",
  10. "accessKey": "7H4FDc1M-FxXFZKwjbN_Up1OfY7DotXDjaM5jXzm",
  11. "fields": {
  12. "f1": "#f1",
  13. "f2": "#f2"
  14. }
  15. "format":"json",
  16. "compress": true
  17. }'

流式导出数据至报表平台

请求语法

  1. POST /v2/repos/<RepoName>/exports/<ExportName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "type": <report>,
  6. "whence": <ExportWhence>,
  7. "spec": {
  8. "dbName": <DBName>,
  9. "tableName": <TableName>,
  10. "columns": {
  11. "column1": <#key1>,
  12. "column2": <#key2>,
  13. ...
  14. }
  15. }
  16. }

请求内容

参数 类型 必填 说明
database string 数据库名称
tableName string 数据表名称
columns map 字段关系说明
keyN表示源消息队列字段名称
columnN表示报表服务数据表字段名称

更新流式导出任务

请求语法

  1. PUT /v2/repos/<RepoName>/exports/<ExportName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "spec": <Spec>
  6. }

!> 注意:仅支持对 spec 的修改(不允许修改typewhence

查看所有流式导出任务

请求语法

  1. GET /v2/repos/<RepoName>/exports
  2. Authorization: Pandora <auth>

响应报文

  1. Content-Type: application/json
  2. {
  3. "name": <ExportName>,
  4. "type": <ExportSchema>,
  5. "spec": <Spec>,
  6. "whence": <ExportWhence>
  7. }

根据名称查看流式导出任务

请求语法

  1. GET /v2/repos/<RepoName>/exports/<ExportName>
  2. Authorization: Pandora <auth>

根据名称删除流式导出任务

请求语法

  1. DELETE /v2/repos/<RepoName>/exports/<ExportName>
  2. Authorization: Pandora <auth>

错误代码及相关说明

错误码 错误描述
500 服务器内部错误
411 E18003: 缺少内容长度
400 E18004: 无效的内容长度
413 E18005: 请求实体过大
400 E18006: 请求实体为空
400 E18007: 请求实体格式非法
400 E18008: 字段长度超过限制
409 E18101: 仓库已经存在
404 E18102: 仓库不存在
400 E18103: 无效的仓库名称
400 E18104: 无效的日期格式
400 E18105: 仓库Schema为空
400 E18106: 无效的字段名称
400 E18107: 不支持的字段类型
400 E18108: 源仓库数量超过限制
400 E18109: 无效的仓库模式
400 E18110: 无效的字段格式
404 E18111: 字段不存在
400 E18112: 仓库上存在着级联的转换任务或者导出任务
409 E18113: 仓库处于删除状态中
400 E18117: Plugin名称不合法
404 E18120: 共享资源池不存在
404 E18122: 导出的仓库在logd中不存在
202 E18124: 仓库处于创建中
400 E18125: 读取gzip的打点请求体出错
409 E18201: 计算任务已经存在
404 E18202: 计算任务不存在
415 E18203: 计算任务类型不支持
409 E18204: 计算任务的源仓库与目的仓库相同
409 E18205: 目的仓库已经被其他转换任务占用
400 E18206: 目的仓库必须通过删除计算任务的方式删除
400 E18207: 计算任务描述格式非法
400 E18208: 计算任务interval非法
400 E18209: 计算任务中的SQL语句非法
400 E18211: 计算任务中plugin输出字段类型非法
400 E18212: 仓库的区域信息和数据中心不相符
400 E18213: 计算任务中容器类型非法
400 E18214: 计算任务中容器数量非法
409 E18215: 共享资源池处于使用中
404 E18216: Plugin不存在
409 E18217: Plugin已存在
409 E18218: 共享资源池已存在
400 E18219: Plugin上传内容长度不一致
400 E18220: Plugin上传内容的MD5不一致
400 E18221: 共享资源池名称非法
400 E18222: 共享资源池的区域信息不一致
400 E18223: 不能向计算任务的目标仓库中打点
409 E18301: 导出任务已经存在
404 E18302: 导出任务不存在
400 E18303: 提交导出任务失败
400 E18304: 删除导出任务失败
400 E18305: 导出任务出现错误
401 bad token:鉴权不通过 、token已过期、机器时间未同步