# 批量上传认证

## 批量上传认证

<mark style="color:green;">`POST`</mark> `https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert`

带有星号（`*`）的字段为必填项。

符号（`[*]`）用于表示特定字段是认证对象数组的一部分。

#### Headers

| Name                                                   | Type   | Description                                                                                                                                 |
| ------------------------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Content-Type<mark style="color:red;">\*</mark>         | String | application/json                                                                                                                            |
| x-http-authorization<mark style="color:red;">\*</mark> | String | <p>API密钥来自<https://iafcertsearch.org/import-management/api-integration></p><p>示例：</p><p><code>x-http-authorization: <\<API KEY>></code></p> |

#### Request Body

| Name                                                                                      | Type    | Description                                                                                                                                                                                                                                                                                                                          |
| ----------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| certifications.\[\*]<mark style="color:red;">\*</mark>                                    | String  | <p>{</p><p>"certifications" : \[</p><p>{</p><p>"certificate\_number": "string",</p><p>"certification\_status": "string",</p><p><strong>. . . .</strong></p><p>}</p><p>]</p><p>}</p>                                                                                                                                                  |
| certifications.\[\*].certificate\_number<mark style="color:red;">\*</mark>                | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certification\_status<mark style="color:red;">\*</mark>              | String  | <p>接受的值：</p><p>active</p><p>inactive</p><p>suspended</p><p>cancelled</p><p>hidden</p><p>withdrawn</p><p>expired</p><p>\*注意：通过API上传具有 <code>hidden</code> 认证状态的认证会在登录到IAF CertSearch时显示为“草稿”。</p>                                                                                                                                     |
| certifications.\[\*].certificate\_accreditation\_status                                   | String  | <p>接受的值：</p><p>Accredited</p><p>Unaccredited</p>                                                                                                                                                                                                                                                                                     |
| certifications.\[\*].certification\_type<mark style="color:red;">\*</mark>                | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certification\_scope                                                 | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certification\_original\_issue\_date                                 | String  | 格式：YYYYMMDD                                                                                                                                                                                                                                                                                                                          |
| certifications.\[\*].certification\_issue\_date<mark style="color:red;">\*</mark>         | String  | 格式：YYYYMMDD                                                                                                                                                                                                                                                                                                                          |
| certifications.\[\*].certification\_expiry\_date<mark style="color:red;">\*</mark>        | String  | 格式：YYYYMMDD                                                                                                                                                                                                                                                                                                                          |
| certifications.\[\*].certified\_entity\_name<mark style="color:red;">\*</mark>            | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_english\_name                                     | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_trading\_name                                     | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_unique\_id<mark style="color:red;">\*</mark>      | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_street\_address                                   | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_street\_city                                      | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_state                                             | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_post\_code                                        | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_country<mark style="color:red;">\*</mark>         | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].certified\_entity\_website                                           | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].accreditation\_body\_name<mark style="color:red;">\*</mark>          | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].accreditation\_body\_acronym\_name<mark style="color:red;">\*</mark> | String  |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].confidential\_certified\_entity                                      | Boolean |                                                                                                                                                                                                                                                                                                                                      |
| certifications.\[\*].schemes<mark style="color:red;">\*</mark>                            | Array   | <p>Example</p><p>{</p><p>"schemes": \[</p><p>{</p><p>"scheme\_name": "string",</p><p>"standard\_list": \[</p><p>{</p><p>"standards\_name": "string"</p><p>}</p><p>]</p><p>}</p><p>]</p><p>}</p>                                                                                                                                      |
| certifications.\[\*].sites                                                                | Array   | <p>示例</p><p>{</p><p>"sites": \[</p><p>{</p><p>"street": "string",</p><p>"city": "string",</p><p>"state": "string",</p><p>"country": "string",</p><p>"postcode": "string",</p><p>"scope\_description": "string</p><p>}</p><p>]</p><p>}</p><p>若要删除认证的所有现有地点，请将<code>sites</code>键的值设置为空数组，如下所示：</p><p>{</p><p>"sites": \[]</p><p>}</p> |

{% tabs %}
{% tab title="200: OK Request successful." %}

```json
{
  "data": {
    "success": true
  }
}
```

{% endtab %}

{% tab title="400: Bad Request 其他在API响应中描述的错误。" %}

```json
{
    "data": {
      "errors": {
        "record_index": 0,
        "errors": [
          {
            "message": "error_message",
            "code": "error_code",
            "meta": {
              "field_name": "input"
            }
          }
        ]
      }
    }
}
```

{% endtab %}

{% tab title="401: Unauthorized 当您使用无效的API密钥时发生。" %}

```json
{
    "error": true,
    "timestamp": number (Epoch time),
    "elapse": number,
    "errors": {
      "message": "Invalid Session token has been used.",
      "code": "invalid_session_token"
    }
}
```

{% endtab %}

{% tab title="422: Unprocessable Entity 未通过验证。" %}

```json
{
    "error": true,
    "timestamp": number (Epoch time),
    "elapse": number,
    "errors": {
        "code": "validation_error",
        "message": {
            "field_name": "error_message"
        }
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**批量上传认证**

我们建议在API请求之间设置10分钟的间隔，以避免在认证数据发布过程中出现错误。
{% endhint %}

{% hint style="info" %}
要查看响应数据示例，请单击响应描述右侧的右箭头。
{% endhint %}

{% hint style="info" %}
您还可以使用 <https://api.sandbox.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert> 在沙盒服务器上进行测试。
{% endhint %}

看一下你可能如何调用这个方法

{% tabs %}
{% tab title="cURL" %}

```shell
curl --location --request POST 'https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert' \
--header 'Content-Type: application/json' \
--header 'x-http-authorization: <<API_KEY>>' \
--data-raw '{
    "certifications": [
        {
            "certificate_number": "string",
            "certification_status": "string",
            "certificate_accreditation_status": "string",
            "certification_type": "string",
            "certification_scope": "string",
            "certification_original_issue_date": "string",
            "certification_issue_date": "string",
            "certification_expiry_date": "string",
            "certified_entity_name": "string",
            "certified_entity_english_name": "string",
            "certified_entity_trading_name": "string",
            "certified_entity_unique_id": "string",
            "certified_entity_street_address": "string",
            "certified_entity_street_city": "string",
            "certified_entity_state": "string",
            "certified_entity_post_code": "string",
            "certified_entity_country": "string",
            "certified_entity_website": "string",
            "accreditation_body_name": "string",
	    "accreditation_body_acronym_name": "string",
            "confidential_certified_entity": "boolean",
            "schemes": [
                {
                    "scheme_name": "string",
                    "standard_list": [
                        {
                            "standards_name": "string"
                        }
                    ]
                }
            ],
            "sites": [
                {
                    "street": "string",
                    "city": "string",
                    "state": "string",
                    "country": "string",
                    "postcode": "string",
                    "scope_description": "string"
                }
            ]
        }
    ]
}'
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require "uri"
require "json"
require "net/http"

url = URI("https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["x-http-authorization"] = "<<API_KEY>>"
request.body = JSON.dump({
  "certifications": [
    {
      "certificate_number": "string",
      "certification_status": "string",
      "certificate_accreditation_status": "string",
      "certification_type": "string",
      "certification_scope": "string",
      "certification_original_issue_date": "string",
      "certification_issue_date": "string",
      "certification_expiry_date": "string",
      "certified_entity_name": "string",
      "certified_entity_english_name": "string",
      "certified_entity_trading_name": "string",
      "certified_entity_unique_id": "string",
      "certified_entity_street_address": "string",
      "certified_entity_street_city": "string",
      "certified_entity_state": "string",
      "certified_entity_post_code": "string",
      "certified_entity_country": "string",
      "certified_entity_website": "string",
      "accreditation_body_name": "string",
      "accreditation_body_acronym_name": "string",
      "confidential_certified_entity": "boolean",
      "schemes": [
        {
          "scheme_name": "string",
          "standard_list": [
            {
              "standards_name": "string"
            }
          ]
        }
      ],
      "sites": [
        {
          "street": "string",
          "city": "string",
          "state": "string",
          "country": "string",
          "postcode": "string",
          "scope_description": "string"
        }
      ]
    }
  ]
})

response = https.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="Python" %}

```python
import http.client
import json

conn = http.client.HTTPSConnection("api.iafcertsearch.org")
payload = json.dumps({
  "certifications": [
    {
      "certificate_number": "string",
      "certification_status": "string",
      "certificate_accreditation_status": "string",
      "certification_type": "string",
      "certification_scope": "string",
      "certification_original_issue_date": "string",
      "certification_issue_date": "string",
      "certification_expiry_date": "string",
      "certified_entity_name": "string",
      "certified_entity_english_name": "string",
      "certified_entity_trading_name": "string",
      "certified_entity_unique_id": "string",
      "certified_entity_street_address": "string",
      "certified_entity_street_city": "string",
      "certified_entity_state": "string",
      "certified_entity_post_code": "string",
      "certified_entity_country": "string",
      "certified_entity_website": "string",
      "accreditation_body_name": "string",
      "accreditation_body_acronym_name": "string",
      "confidential_certified_entity": "boolean",
      "schemes": [
        {
          "scheme_name": "string",
          "standard_list": [
            {
              "standards_name": "string"
            }
          ]
        }
      ],
      "sites": [
        {
          "street": "string",
          "city": "string",
          "state": "string",
          "country": "string",
          "postcode": "string",
          "scope_description": "string"
        }
      ]
    }
  ]
})
headers = {
  'Content-Type': 'application/json',
  'x-http-authorization': '65603d8724a92'
}
conn.request("POST", "/api/client/v1/cb/bulk-upload-cert", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "certifications": [
        {
            "certificate_number": "string",
            "certification_status": "string",
            "certificate_accreditation_status": "string",
            "certification_type": "string",
            "certification_scope": "string",
            "certification_original_issue_date": "string",
            "certification_issue_date": "string",
            "certification_expiry_date": "string",
            "certified_entity_name": "string",
            "certified_entity_english_name": "string",
            "certified_entity_trading_name": "string",
            "certified_entity_unique_id": "string",
            "certified_entity_street_address": "string",
            "certified_entity_street_city": "string",
            "certified_entity_state": "string",
            "certified_entity_post_code": "string",
            "certified_entity_country": "string",
            "certified_entity_website": "string",
            "accreditation_body_name": "string",
	    "accreditation_body_acronym_name": "string",
            "confidential_certified_entity": "boolean",
            "schemes": [
                {
                    "scheme_name": "string",
                    "standard_list": [
                        {
                            "standards_name": "string"
                        }
                    ]
                }
            ],
            "sites": [
                {
                    "street": "string",
                    "city": "string",
                    "state": "string",
                    "country": "string",
                    "postcode": "string",
                    "scope_description": "string"
                }
            ]
        }
    ]
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'x-http-authorization: <<API_KEY>>'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
```

{% endtab %}

{% tab title="Java" %}

```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"certifications\": [\n        {\n            \"certificate_number\": \"string\",\n            \"certification_status\": \"string\",\n            \"certificate_accreditation_status\": \"string\",\n            \"certification_type\": \"string\",\n            \"certification_scope\": \"string\",\n            \"certification_original_issue_date\": \"string\",\n            \"certification_issue_date\": \"string\",\n            \"certification_expiry_date\": \"string\",\n            \"certified_entity_name\": \"string\",\n            \"certified_entity_english_name\": \"string\",\n            \"certified_entity_trading_name\": \"string\",\n            \"certified_entity_unique_id\": \"string\",\n            \"certified_entity_street_address\": \"string\",\n            \"certified_entity_street_city\": \"string\",\n            \"certified_entity_state\": \"string\",\n            \"certified_entity_post_code\": \"string\",\n            \"certified_entity_country\": \"string\",\n            \"certified_entity_website\": \"string\",\n            \"accreditation_body_name\": \"string\",\n            \"accreditation_body_acronym_name\": \"string\",\n            \"confidential_certified_entity\": \"boolean\",\n            \"schemes\": [\n                {\n                    \"scheme_name\": \"string\",\n                    \"standard_list\": [\n                        {\n                            \"standards_name\": \"string\"\n                        }\n                    ]\n                }\n            ],\n            \"sites\": [\n                {\n                    \"street\": \"string\",\n                    \"city\": \"string\",\n                    \"state\": \"string\",\n                    \"country\": \"string\",\n                    \"postcode\": \"string\",\n                    \"scope_description\": \"string\"\n                }\n            ]\n        }\n    ]\n}");
Request request = new Request.Builder()
  .url("https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("x-http-authorization", "<<API_KEY>>")
  .build();
Response response = client.newCall(request).execute();
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
var axios = require('axios');
var data = JSON.stringify({
  "certifications": [
    {
      "certificate_number": "string",
      "certification_status": "string",
      "certificate_accreditation_status": "string",
      "certification_type": "string",
      "certification_scope": "string",
      "certification_original_issue_date": "string",
      "certification_issue_date": "string",
      "certification_expiry_date": "string",
      "certified_entity_name": "string",
      "certified_entity_english_name": "string",
      "certified_entity_trading_name": "string",
      "certified_entity_unique_id": "string",
      "certified_entity_street_address": "string",
      "certified_entity_street_city": "string",
      "certified_entity_state": "string",
      "certified_entity_post_code": "string",
      "certified_entity_country": "string",
      "certified_entity_website": "string",
      "accreditation_body_name": "string",
      "accreditation_body_acronym_name": "string",
      "confidential_certified_entity": "boolean",
      "schemes": [
        {
          "scheme_name": "string",
          "standard_list": [
            {
              "standards_name": "string"
            }
          ]
        }
      ],
      "sites": [
        {
          "street": "string",
          "city": "string",
          "state": "string",
          "country": "string",
          "postcode": "string",
          "scope_description": "string"
        }
      ]
    }
  ]
});
var config = {
  method: 'post',
  url: 'https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert',
  headers: { 
    'Content-Type': 'application/json', 
    'x-http-authorization': '<<API_KEY>>'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert"
  method := "POST"

  payload := strings.NewReader(`{
    "certifications": [
        {
            "certificate_number": "string",
            "certification_status": "string",
            "certificate_accreditation_status": "string",
            "certification_type": "string",
            "certification_scope": "string",
            "certification_original_issue_date": "string",
            "certification_issue_date": "string",
            "certification_expiry_date": "string",
            "certified_entity_name": "string",
            "certified_entity_english_name": "string",
            "certified_entity_trading_name": "string",
            "certified_entity_unique_id": "string",
            "certified_entity_street_address": "string",
            "certified_entity_street_city": "string",
            "certified_entity_state": "string",
            "certified_entity_post_code": "string",
            "certified_entity_country": "string",
            "certified_entity_website": "string",
            "accreditation_body_name": "string",
	    "accreditation_body_acronym_name": "string",
            "confidential_certified_entity": "boolean",
            "schemes": [
                {
                    "scheme_name": "string",
                    "standard_list": [
                        {
                            "standards_name": "string"
                        }
                    ]
                }
            ],
            "sites": [
                {
                    "street": "string",
                    "city": "string",
                    "state": "string",
                    "country": "string",
                    "postcode": "string",
                    "scope_description": "string"
                }
            ]
        }
    ]
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("x-http-authorization", "<<API_KEY>>")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
var client = new RestClient("https://api.iafcertsearch.org/api/client/v1/cb/bulk-upload-cert");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("x-http-authorization", "<<API_KEY>>");
var body = @"{" + "\n" +
@"    ""certifications"": [" + "\n" +
@"        {" + "\n" +
@"            ""certificate_number"": ""string""," + "\n" +
@"            ""certification_status"": ""string""," + "\n" +
@"            ""certificate_accreditation_status"": ""string""," + "\n" +
@"            ""certification_type"": ""string""," + "\n" +
@"            ""certification_scope"": ""string""," + "\n" +
@"            ""certification_original_issue_date"": ""string""," + "\n" +
@"            ""certification_issue_date"": ""string""," + "\n" +
@"            ""certification_expiry_date"": ""string""," + "\n" +
@"            ""certified_entity_name"": ""string""," + "\n" +
@"            ""certified_entity_english_name"": ""string""," + "\n" +
@"            ""certified_entity_trading_name"": ""string""," + "\n" +
@"            ""certified_entity_unique_id"": ""string""," + "\n" +
@"            ""certified_entity_street_address"": ""string""," + "\n" +
@"            ""certified_entity_street_city"": ""string""," + "\n" +
@"            ""certified_entity_state"": ""string""," + "\n" +
@"            ""certified_entity_post_code"": ""string""," + "\n" +
@"            ""certified_entity_country"": ""string""," + "\n" +
@"            ""certified_entity_website"": ""string""," + "\n" +
@"            ""accreditation_body_name"": ""string""," + "\n" +
@"            ""accreditation_body_acronym_name"": ""string""," + "\n" +
@"            ""confidential_certified_entity"": ""boolean""," + "\n" +
@"            ""schemes"": [" + "\n" +
@"                {" + "\n" +
@"                    ""scheme_name"": ""string""," + "\n" +
@"                    ""standard_list"": [" + "\n" +
@"                        {" + "\n" +
@"                            ""standards_name"": ""string""" + "\n" +
@"                        }" + "\n" +
@"                    ]" + "\n" +
@"                }" + "\n" +
@"            ]," + "\n" +
@"            ""sites"": [" + "\n" +
@"                {" + "\n" +
@"                    ""street"": ""string""," + "\n" +
@"                    ""city"": ""string""," + "\n" +
@"                    ""state"": ""string""," + "\n" +
@"                    ""country"": ""string""," + "\n" +
@"                    ""postcode"": ""string""," + "\n" +
@"                    ""scope_description"": ""string""" + "\n" +
@"                }" + "\n" +
@"            ]" + "\n" +
@"        }" + "\n" +
@"    ]" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
```

{% endtab %}
{% endtabs %}
