BugFree API原理:通过http协议向api.php发送请求,api.php将根据请求作出相应的操作和输出相应的结果。


预定义常量说明:
1.行分隔符:API_NEWLINE。ASCII码为03的字符,在php中可以用chr(0x03)获得
2.列分隔符:API_DEVIDER。ASCII码为04的字符,在php中可以用chr(0x04)获得
3.加密KEY:API_KEY。加密时使用的附加码。
以上三个常量定义在Include/Api.inc.php中,出于安全考虑,建议您修改API_KEY的值。


接口说明约定:
1.以$符号开头的均表示是变量
2.以下接口说明均采用GET请求方式


各个接口方法说明:

1. getsid
  描述:向BugFree系统获取一个session会话,为后面的方法提供保持会话的session。
  输入:api.php?mode=getsid
  参数:
        mode,接口方法名称
  输入:
    成功:
      返回:sessionname和sessionid信息。
      格式:字符串,分四个子段,子段之间用API_NEWLINE分隔,子段内的列之间用API_DEVIDER分隔
          第一段:success
          第二段:sessionname sessionid rand
          第三段:$sessionname $sessionid $rand (第二段对应的值)
          第四段:md5hash(前三段的md5值,用于校验)

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。


2.login接口:
  描述:使用用户名和加密后的密码登陆BugFree系统。
  输入:api.php?mode=login&username=$username&auth=$auth&$sessionname=$sessionid
  参数:
        mode,接口方法名称
        username,用户名
        auth,密码校验值。
              auth算法:md5(md5($username . $userpassword) . API_KEY . $rand) 
              其中$username为用户名,$userpassword为该用户在数据库中存储的加密后的密码(一般为密码md5后的值),$rand为getsid方法获得的rand值。
        sessionname和sessionid,可以由getsid方法获得(下同)
  输出:
    成功:
      返回:成功信息和过期时间戳
      格式:字符串,分四个子段,子段之间用API_NEWLINE分隔,子段内的列之间用API_DEVIDER分隔
          第一段:success
          第二段:timeout
          第三段:$timeout
          第四段:md5hash(前三段的md5值,用于校验)

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。

3.getbug接口:
  描述:获得bug信息
  输入:api.php?mode=getbug&BugID=$BugID&charset=$Charset&$sessionname=$sessionid
  参数:
        mode,接口方法名称
        charset,请求串的编码,不指定该参数则默认为UTF-8(以下接口均可以使用该参数,不再重复说明)
        BugID,Bug的ID号
  输出:
    成功:
      返回:Bug每个字段的信息
      格式:字符串,分四个子段,子段之间用API_NEWLINE分隔,子段内的列之间用API_DEVIDER分隔
          第一段:success
          第二段:BugID  ProjectID  ProjectName  ModuleID  ModulePath  BugTitle  BugSeverity  BugPriority  BugType  BugOS  BugBrowser  BugMachine  HowFound  ReproSteps  BugStatus  LinkID  CaseID  DuplicateID  MailTo  OpenedBy  OpenedDate  OpenedBuild  AssignedTo  AssignedDate  ResolvedBy  Resolution  ResolvedBuild  ResolvedDate  ClosedBy  ClosedDate  LastEditedBy  LastEditedDate  ModifiedBy  BugKeyword  ResultID  CustomField1  CustomField2  CustomField3  IsDroped  BugSubStatus  
          第三段:以上各个字段的值
          第四段:md5hash(前三段的md5值,用于校验)

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。

4.getcase接口
参考getbug接口

5.getresult接口
参考getbug接口

6.addbug接口
  描述:新增Bug
  输入:api.php?mode=addbug&ProjectID=$ProjectID&ModuleID=$ModuleID&BugTitle=$BugTitle&ReproSteps=$ReproSteps&AssignedTo=$AssignedTo&BugSeverity=$BugSeverity&BugType=$BugType&HowFound=$HowFound&OpenedBuild=$OpenedBuild&ReplyNote=$ReplyNote&$sessionname=$sessionid
  参数:
        mode,接口方法名称
        ProjectID,项目id  
        ModuleID,模块id   
        BugTitle,bug标题
        ReproSteps,重现步骤
        AssignedTo,指派给
        BugSeverity,严重程度
        BugType,Bug类型
        HowFound,如何发现
        OpenedBuild,创建Build
        ReplyNote,注释信息
  注:在增加bug时,可以省略部分参数,参数的默认值可以在Include/Api.inc.php中的$_CFG['API']['FieldsDefauleValue']['Bug']设定。

  输出:
    成功:
      返回:成功信息和新增的BugID
      格式:字符串,分四个子段,子段之间用API_NEWLINE分隔,子段内的列之间用API_DEVIDER分隔
          第一段:success
          第二段:BugID
          第三段:$BugID
          第四段:md5hash(前三段的md5值,用于校验)

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。

7.addcase接口
  描述:新增Case
  输入:api.php?mode=addcase&ProjectID=$ProjectID&...&$sessionname=$sessionid(更多参数如下)
  参数:
       mode,接口方法名称
       ProjectID,项目ID
       ModuleID,模块ID
       CaseTitle,Case标题
       CaseSteps,Case步骤
       CaseStatus,Case状态
       CaseType,Case类型
       AssignedTo,指派人
       CasePriority,Case优先级
       CaseMethod,测试方法
       ReplyNote,注释信息
       ScriptedBy,脚本编写者
       ScriptedDate,脚本编写时间
       ScriptStatus,脚本状态
       ScriptLocation,脚本地址
  注:在增加case时,可以省略部分参数,参数的默认值可以在Include/Api.inc.php中$_CFG['API']['FieldsDefauleValue']['Case']设定。

  输出:
    成功:
      返回:成功信息和新增的CaseID
      格式:字符串,分四个子段,子段之间用API_NEWLINE分隔,子段内的列之间用API_DEVIDER分隔
          第一段:success
          第二段:CaseID
          第三段:$CaseID
          第四段:md5hash(前三段的md5值,用于校验)

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。

8.addresult接口
  描述:新增Result
  输入:api.php?mode=addresult&CaseID=$CaseID&ResultValue=$ResultValue&...&$sessionname=$sessionid(更多参数如下)
  参数: 
       mode,接口方法名称
       CaseID,CaseID
       ResultValue,Result结果(Pass,Fail)
       ResultBuild,运行Build
       ResultStatus,运行状态
       CaseType,Case类型
       AssignedTo,指派给
       ReplyNote,注释
  注:在增加result时,可以省略部分参数,参数的默认值可以在Include/Api.inc.php中$_CFG['API']['FieldsDefauleValue']['Result']设定。

  输出:
    成功:
      返回:成功信息和新增的ResultID
      格式:字符串,分四个子段,子段之间用API_NEWLINE分隔,子段内的列之间用API_DEVIDER分隔
          第一段:success
          第二段:ResultID
          第三段:$ResultID
          第四段:md5hash(前三段的md5值,用于校验)

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。

9.updatebug接口
  描述:编辑Bug信息
  输入:api.php?mode=updatebug&BugID=$BugID&ProjectID=$ProjectID&ModuleID=$ModuleID&BugTitle=$BugTitle&ReproSteps=$ReproSteps&AssignedTo=$AssignedTo&BugSeverity=$BugSeverity&BugType=$BugType&HowFound=$HowFound&OpenedBuild=$OpenedBuild&ReplyNote=$ReplyNote&$sessionname=$sessionid
  参数:
        mode,接口方法名称
        BugID, 需要编辑的BugID
        ProjectID,项目id  
        ModuleID,模块id   
        BugTitle,bug标题
        ReproSteps,重现步骤
        AssignedTo,指派给
        BugSeverity,严重程度
        BugType,Bug类型
        HowFound,如何发现
        OpenedBuild,创建Build
        ReplyNote,注释信息
  注:在编辑bug时,可以省略部分参数,参数的默认值可以在Include/Api.inc.php中的$_CFG['API']['FieldsDefauleValue']['Bug']设定。

  输出:
    成功:
      返回:成功信息
      格式:一行字符串:
            success

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。

9.updatecase接口
  描述:编辑Case信息
  输入:api.php?mode=editcase&CaseID=$CaseID&ProjectID=$ProjectID&...&$sessionname=$sessionid(更多参数如下)
  参数:
       mode,接口方法名称
       CaseID,CaseID
       ProjectID,项目ID
       ModuleID,模块ID
       CaseTitle,Case标题
       CaseSteps,Case步骤
       CaseStatus,Case状态
       CaseType,Case类型
       AssignedTo,指派人
       CasePriority,Case优先级
       CaseMethod,测试方法
       ReplyNote,注释信息
       ScriptedBy,脚本编写者
       ScriptedDate,脚本编写时间
       ScriptStatus,脚本状态
       ScriptLocation,脚本地址
  注:在编辑case时,可以省略部分参数,参数的默认值可以在Include/Api.inc.php中$_CFG['API']['FieldsDefauleValue']['Case']设定。

  输出:
    成功:
      返回:成功信息
      格式:一行字符串:
            success

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。

10.updateresult接口
  描述:编辑Result信息
  输入:api.php?mode=updateresult&ResultID=$ResultID&...&$sessionname=$sessionid(更多参数如下)
  参数: 
       mode,接口方法名称
       ResultID,ResultID
       ResultValue,Result结果(Pass,Fail)
       ResultBuild,运行Build
       ResultStatus,运行状态
       CaseType,Case类型
       AssignedTo,指派给
       ReplyNote,注释
  注:在编辑result时,可以省略部分参数,参数的默认值可以在Include/Api.inc.php中$_CFG['API']['FieldsDefauleValue']['Result']设定。

  输出:
    成功:
      返回:成功信息
      格式:一行字符串:
            success

    失败:
      返回:error信息。
      格式:error=errorcode(errorcode可以在api.php中修改)。