服务端 API/审批/原生审批实例/获取单个审批实例详情
# 获取单个审批实例详情

通过审批实例 Instance Code  获取审批实例详情。Instance Code 由 [批量获取审批实例](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/instance/list) 接口获取。

## 请求

基本 | &nbsp;
---|---
HTTP URL | https://open.larksuite.com/open-apis/approval/v4/instances/:instance_id
HTTP Method | GET
支持的应用类型 | Custom App、Store App
权限要求<br>**调用该 API 所需的权限。开启其中任意一项权限即可调用**<br>开启任一权限即可 | 查看、创建、更新、删除审批应用相关信息(approval:approval)<br>访问审批应用(approval:approval:readonly)<br>查看、创建、更新、删除原生审批实例相关信息(approval:instance)
字段权限要求 | **注意事项**：该接口返回体中存在下列敏感字段，仅当开启对应的权限后才会返回；如果无需获取这些字段，则不建议申请<br>获取用户 user ID(contact:user.employee_id:readonly)

### 请求头

名称 | 类型 | 必填 | 描述
---|---|---|---
Authorization | string | 是 | `tenant_access_token`<br>**值格式**："Bearer `access_token`"<br>**示例值**："Bearer t-7f1bcd13fc57d46bac21793a18e560"<br>[了解更多：如何选择与获取 access token](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-choose-which-type-of-token-to-use)

### 路径参数

名称 | 类型 | 描述
---|---|---
instance_id | string | 审批实例 Code, 若在创建的时候传了uuid, 也可以通过传uuid获取<br>**示例值**："81D31358-93AF-92D6-7425-01A5D67C4E71"

### 查询参数

名称 | 类型 | 必填 | 描述
---|---|---|---
locale | string | 否 | 语言<br>**示例值**："zh-CN"<br>**可选值有**：<br>- zh-CN：中文<br>- en-US：英文<br>- ja-JP：日文
user_id | string | 否 | 发起审批用户id，仅自建应用可返回<br>**示例值**："f7cb567e"
user_id_type | string | 否 | 用户 ID 类型<br>**示例值**："open_id"<br>**可选值有**：<br>- open_id：标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多：如何获取 Open ID](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid)<br>- union_id：标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多：如何获取 Union ID？](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id)<br>- user_id：标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多：如何获取 User ID？](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id)<br>**默认值**：`open_id`<br>**当值为 `user_id`，字段权限要求**：<br>获取用户 user ID(contact:user.employee_id:readonly)

## 响应

### 响应体

名称 | 类型 | 描述
---|---|---
code | int | 错误码，非 0 表示失败
msg | string | 错误描述
data | \- | \-
approval_name | string | 审批名称
start_time | string | 审批创建时间
end_time | string | 审批完成时间，未完成为 0
user_id | string | 发起审批用户
open_id | string | 发起审批用户 open id
serial_number | string | 审批单编号
department_id | string | 发起审批用户所在部门
status | string | 审批实例状态<br>**可选值有**：<br>- PENDING：审批中<br>- APPROVED：通过<br>- REJECTED：拒绝<br>- CANCELED：撤回<br>- DELETED：删除
uuid | string | 用户的唯一标识id
form | string | json字符串，控件值详情见下方
task_list | instance_task\[\] | 审批任务列表
id | string | task id
user_id | string | 审批人的用户id，自动通过、自动拒绝 时为空
open_id | string | 审批人 open id
status | string | 任务状态<br>**可选值有**：<br>- PENDING：审批中<br>- APPROVED：同意<br>- REJECTED：拒绝<br>- TRANSFERRED：已转交<br>- DONE：完成
node_id | string | task 所属节点 id
node_name | string | task 所属节点名称
custom_node_id | string | task 所属节点自定义 id, 如果没设置自定义 id, 则不返回该字段
type | string | 审批方式<br>**可选值有**：<br>- AND：会签<br>- OR：或签<br>- AUTO_PASS：自动通过<br>- AUTO_REJECT：自动拒绝<br>- SEQUENTIAL：按顺序
start_time | string | task 开始时间
end_time | string | task 完成时间, 未完成为 0
comment_list | instance_comment\[\] | 评论列表
id | string | 评论 id
user_id | string | 发表评论用户
open_id | string | 发表评论用户 open id
comment | string | 评论内容
create_time | string | 1564590532967
files | file\[\] | 评论附件
url | string | 附件路径
file_size | int | 附件大小
title | string | 附件标题
type | string | 附件类别
timeline | instance_timeline\[\] | 审批动态
type | string | 动态类型，不同类型 ext 内的 user_id_list 含义不一样<br>**可选值有**：<br>- START：审批开始<br>- PASS：通过<br>- REJECT：拒绝<br>- AUTO_PASS：自动通过<br>- AUTO_REJECT：自动拒绝<br>- REMOVE_REPEAT：去重<br>- TRANSFER：转交<br>- ADD_APPROVER_BEFORE：前加签<br>- ADD_APPROVER：并加签<br>- ADD_APPROVER_AFTER：后加签<br>- DELETE_APPROVER：减签<br>- ROLLBACK_SELECTED：指定回退<br>- ROLLBACK：全部回退<br>- CANCEL：撤回<br>- DELETE：删除<br>- CC：抄送
create_time | string | 发生时间
user_id | string | 动态产生用户
open_id | string | 动态产生用户 open id
user_id_list | string\[\] | 被抄送人列表
open_id_list | string\[\] | 被抄送人列表
task_id | string | 产生动态关联的task_id
comment | string | 理由
cc_user_list | instance_cc_user\[\] | 抄送人列表
user_id | string | 抄送人 user id
cc_id | string | 审批实例内抄送唯一标识
open_id | string | 抄送人 open id
ext | string | 动态其他信息，json格式，目前包括 user_id_list, user_id，open_id_list，open_id
node_key | string | 产生task的节点key
files | file\[\] | 审批附件
url | string | 附件路径
file_size | int | 附件大小
title | string | 附件标题
type | string | 附件类别
modified_instance_code | string | 修改的原实例 code,仅在查询修改实例时显示该字段
reverted_instance_code | string | 撤销的原实例 code,仅在查询撤销实例时显示该字段
approval_code | string | 审批定义 Code
reverted | boolean | 单据是否被撤销
instance_code | string | 审批实例 Code

### 响应体示例
```json
{
    "code": 0,
    "msg": "success",
    "data": {
        "approval_name": "Payment",
        "start_time": "1564590532967",
        "end_time": "1564590532967",
        "user_id": "f3ta757q",
        "open_id": "ou_3cda9c969f737aaa05e6915dce306cb9",
        "serial_number": "202102060002",
        "department_id": "od-8ec33ffec336c3a39a278bc25e931676",
        "status": "PENDING",
        "uuid": "1234567",
        "form": "[{\"id\": \"widget1\",\"custom_id\": \"user_info\",\"name\": \"Item application\",\"type\": \"textarea\"},\"value\":\"aaaa\"]",
        "task_list": [
            {
                "id": "1234",
                "user_id": "f7cb567e",
                "open_id": "ou_123457",
                "status": "PENDING",
                "node_id": "46e6d96cfa756980907209209ec03b64",
                "node_name": "开始",
                "custom_node_id": "manager",
                "type": "AND",
                "start_time": "1564590532967",
                "end_time": "0"
            }
        ],
        "comment_list": [
            {
                "id": "1234",
                "user_id": "f7cb567e",
                "open_id": "ou_123456",
                "comment": "ok",
                "create_time": "评论时间",
                "files": [
                    {
                        "url": "https://p3-approval-sign.byteimg.com/lark-approval-attachment/image/20220714/1/332f3596-0845-4746-a4bc-818d54ad435b.png~tplv-ottatrvjsm-image.image?x-expires=1659033558&x-signature=6edF3k%2BaHeAuvfcBRGOkbckoUl4%3D#.png",
                        "file_size": 186823,
                        "title": "e018906140ed9388234bd03b0.png",
                        "type": "image"
                    }
                ]
            }
        ],
        "timeline": [
            {
                "type": "PASS",
                "create_time": "1564590532967",
                "user_id": "f7cb567e",
                "open_id": "ou_123456",
                "user_id_list": [
                    "eea5gefe"
                ],
                "open_id_list": [
                    "ou_123456"
                ],
                "task_id": "1234",
                "comment": "ok",
                "cc_user_list": [
                    {
                        "user_id": "eea5gefe",
                        "cc_id": "123445",
                        "open_id": "ou_12345"
                    }
                ],
                "ext": "{\"user_id\":\"62d4a44c\",\"open_id\":\"ou_123456\"}",
                "node_key": "APPROVAL_240330_4058663",
                "files": [
                    {
                        "url": "https://p3-approval-sign.byteimg.com/lark-approval-attachment/image/20220714/1/332f3596-0845-4746-a4bc-818d54ad435b.png~tplv-ottatrvjsm-image.image?x-expires=1659033558&x-signature=6edF3k%2BaHeAuvfcBRGOkbckoUl4%3D#.png",
                        "file_size": 186823,
                        "title": "e018906140ed9388234bd03b0.png",
                        "type": "image"
                    }
                ]
            }
        ],
        "modified_instance_code": "81D31358-93AF-92D6-7425-01A5D67C4E71",
        "reverted_instance_code": "81D31358-93AF-92D6-7425-01A5D67C4E71",
        "approval_code": "7C468A54-8745-2245-9675-08B7C63E7A85",
        "reverted": false,
        "instance_code": "81D31358-93AF-92D6-7425-01A5D67C4E71"
    }
}
```

**控件值**: 
|类型|说明|
|-|-|
|input|--|
|textarea|--|
|date|RFC3339格式，2019-10-01T08:12:01+08:00|
|radio/radioV2|option 中的 text 字段|
|address|China/Beijing/Beijing/Chaoyang Qu/chang an jie<br>如果地址控件允许输入详细地址，则最后一项为用户输入的详细地址|
```json
{
    "id": "widget1",
    "custom_id": "user_info",
    "name": "Item application",
    "type": "input",
    "value": "data"
}
```
|类型|说明|
|-|-|
|number|--|
|amount|--|
|formula|--|
```json
{
    "id": "widget1",
    "name": "Item application",
    "type": "number",
    "value": 1234.56
}
```
|类型|说明|
|-|-|
|contact|`user_id`|
```json
{
    "id": "widget1",
    "name": "Item application",
    "type": "contact",
    "value": ["f8ca557e"],
    "open_ids": ["ou_12345"]
}
```

|类型|说明|
|-|-|
|connect|`instance_code`|
|attachmentV2|附件控件, ext为附件名字,value为附件地址, 按逗号分隔|且链接有效时长为12小时
|image/imageV2|图片控件, ext为图片名字,value为图片地址, 按逗号分隔|且链接有效时长为12小时

```json
{
    "id": "widget1",
    "name": "Item application",
    "type": "attachmentV2",
    "ext": "'Item 1 name','Item 2 name'",
    "value": ["Item 1", "Item 2"]
}
```

|类型|说明|
|-|-|
|connect|`instance_code`|
|attachment|附件控件,建议用attachmentV2|
|checkbox/checkboxV2|option中的text字段|

```json
{
    "id": "widget1",
    "name": "Item application",
    "type": "checkbox",
    "value": ["Item 1"]
}
```
|类型|说明|
|-|-|
|dateInterval|start和end满足RFC3339格式|
```json
{
    "id": "widget1",
    "name": "Item application",
    "type": "dateInterval",
    "value": {
         "start": "2019-10-01T08:12:01+08:00",
         "end": "2019-10-02T08:12:01+08:00",
         "interval": 2.0
     }
}
```

|类型|说明|
|-|-|
|fieldList|value是二维数组|

```json
{
    "id": "widget1",
    "name": "Item application",
    "type": "fieldList",
    "value": [
         [   
            {
                "id": "widget1",
                "type": "checkbox",
                "value": ["jxpsebqp-0"]
            }
         ]
     ]
}
```
|类型|说明|
|-|-|
|document|--|

```json
{
    "id":"widget1",
    "type":"document",
    "value":
        {
          "token": "doxcx7B8OzLFHExkiwYuPGAwf",
          "type": "doc",
          "title": "title",
          "url": "https://bytedance..larksuite.com/docx/doxcx7B8OzLFHExkiwYuPGAwf"
       }
}
```

|类型|说明|
|-|-|
|department|--|

```json
{
    "id":"widget1",
    "type":"department",
    "value":[
        {
            "open_id":"od-xxx"
        }
    ]
}
```
|字段|说明|
|-|-|
|id|控件 ID|
|name|控件名称|
|type|leaveGroup|
|value|--|
|&emsp;∟name|假期名称|
|&emsp;∟start|开始时间，满足 RFC3339 格式|
|&emsp;∟end|结束时间，满足 RFC3339 格式|
|&emsp;∟interval|时长，单位天，有些假期类型用户手动输入请假时长|

```json
{
    "id": "widget1",
    "name": "leave",
    "type": "leaveGroup",
    "value": {
         "name": "annual leave"
         "start": "2019-10-01T00:00:00+08:00",
         "end": "2019-10-02T00:0:00+08:00",
         "interval": 2.0
     }
}
```

|字段|说明|
|-|-|
|id|控件 ID|
|name|控件名称|
|type|leaveGroupV2|
|value|--|
|&emsp;∟name|假期名称|
|&emsp;∟start|开始时间，满足 RFC3339 格式|
|&emsp;∟end|结束时间，满足 RFC3339 格式|
|&emsp;∟interval|时长，有些假期类型用户手动输入请假时长|
|&emsp;∟unit|时长单位, DAY/HOUR ，有些假期类型用户手动输入请假时长|
|&emsp;∟reason|原因|

```json
{
    "id": "widget1",
    "name": "leave",
    "type": "widgetLeaveGroupV2",
    "value": {
         "name": "annual leave"
         "start": "2019-10-01T00:00:00+08:00",
         "end": "2019-10-02T00:0:00+08:00",
         "interval": 2.0,
         "unit": "DAY",
         "reason": "out going"
     }
}
```

|类型|说明|
|-|-|
|remedyGroup|time满足RFC3339格式|

```json
{
    "id": "widget1",
    "name": "remedy",
    "type": "remedyGroup",
    "value": {
         "time": "2019-10-01T08:12:01+08:00",
         "reason": "forgot"
     }
}
```

|类型|说明|
|-|-|
|shiftGroup|shiftTime和returnTime满足RFC3339格式|

```json
{
    "id": "widget1",
    "name": "shift",
    "type": "shiftGroup",
    "value": {
         "shiftTime": "2019-10-01T08:12:01+08:00",
         "returnTime": "2019-10-02T08:12:01+08:00",
         "reason": "ask for leave"
     }
}
```

|类型|说明|
|-|-|
|workGroup|start和end满足RFC3339格式|

```json
{
    "id": "widget1",
    "name": "work",
    "type": "workGroup",
    "value": {
         "name": "Overtime pay"
         "start": "2019-10-01T08:12:01+08:00",
         "end": "2019-10-02T08:12:01+08:00",
         "interval": 2.0,
         "reason": "ask for leave"
     }
}
```

|类型|说明|
|-|-|
|tripGroup|start和end满足RFC3339格式|

```json
{
    "id": "widget1",
    "name": "trip",
    "type": "tripGroup",
    "value": {
         "schedule": [{
                "start": "2019-10-0T00:00:00Z+08:00",
                "end": "2019-10-01T00:00:00Z+08:00",
                "interval": 123.45,
                "departure": "China/Beijing/Beijing",
                "destination": "China/Shanghai/Shanghai",
                "transportation": "Airplane",
                "oneRound": "One Way",
                "remark": "business",
         }],
         "interval": 2.0,
         "reason": "business",
         "peer": ["f7cb567e"],
    }
}
```
|类型|说明|
|-|-|
|telephone|电话|
```json
{
    "id":"widget1",
    "type":"telephone",
    "value": {
        "country_code":"+86",
        "national_number":"13122222222"
    }
}
```

### 错误码

HTTP状态码 | 错误码 | 描述 | 排查建议
---|---|---|---
400 | 1390001 | param is invalid | 参数错误
400 | 1395001 | There have been some errors. Please try again later | 服务出现错误，请稍候再试
400 | 1390003 | instance code not found | 检查审批实例code是否正确
403 | 1390009 | no operation permission | 检查操作权限是否正确
400 | 1390004 | user_id or open_id not found | 检查user_id,open_id是否正确

