
# 通过Checksum搜索文件 - SearchByChecksum
#### 功能介绍
通过Checksum搜索文件，分页返回文件所在仓库和文件名等信息。支持根据仓库类型进行过滤。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-cloudartifact/CloudArtifact_api_0008.html)。
#### 授权信息
账号根用户具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备如下身份策略权限，更多的权限说明请参见[权限和授权项](https://support.huaweicloud.com/api-cloudartifact/Permission.html)。
| 授权项                              | 访问级别 | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
|:---|:---|:---|:---|:---|:---|
| codeartsartifact:repository:list | List | -           | -   | -  | -      |
   
#### URI
GET /cloudartifact/v5/search/checksum
表1Query参数 
| 参数         | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| checksum   | 是    | String  | **参数解释**: 文件校验和，可在页面文件详细信息概览中获取，文件校验和的MD5, SHA-1, SHA-256, SHA-512任意值。 **约束限制**: 不涉及。 **取值范围**: 只能使用英文字符、数字，字符串长度32、40、64、128。 **默认取值**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| page_no    | 否    | Integer | **参数解释**: 分页查询的页数。 **约束限制**: (page_no - 1) \* page_size \< 2147483647。 **取值范围**: 1-2147483647。 **默认取值**: 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| page_size  | 否    | Integer | **参数解释**: 分页查询的每页数据量。 **约束限制**: (page_no - 1) \* page_size \< 2147483647。 **取值范围**: 1-100。 **默认取值**: 10                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| format     | 否    | String  | **参数解释**: 仓库类型。 **约束限制**: 不涉及。 **取值范围**: - maven   - maven2   - npm   - go   - pypi   - rpm   - composer   - debian   - conan   - nuget   - docker2   - cocoapods   - ohpm   - generic   - helm   - conda    **默认取值**: 不涉及。 |
| in_project | 否    | Boolean | **参数解释**: 是否在项目中。 **约束限制**: 配合project_id参数查询不同的数据。 **取值范围**: - true: project_id有值时，查询指定项目的仓库数据；project_id无值时，查询当前租户下"项目内"仓库数据。   - false: 查询当前租户下"租户内"仓库数据。    **默认取值**: false。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| project_id | 否    | String  | **参数解释**: 项目id，可以从调用API处获取，也可以从控制台获取。获取方式请参考[获取项目id](https://support.huaweicloud.com/api-cloudartifact/CloudArtifact_api_0015.html)。 **约束限制**: 参数in_project值为true值时此参数生效。 **取值范围**: 只能由英文字母、数字组成，且长度为32个字符。 **默认取值**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| x-auth-token | 是    | String | **参数解释**: 用户token。通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值），调用详情请参考章节。 **约束限制**: 不涉及。 **取值范围**: 字符串长度为1-100000。 **默认取值**: 不涉及。 |
   
#### 响应参数
**状态码：200**
表3响应Body参数 
| 参数       | 参数类型                                                                                      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| status   | String                                                                                    | **参数解释**: 请求成功或失败状态。 **取值范围**: - success：请求成功。   - error：请求失败。    |
| trace_id | String                                                                                    | **参数解释**: 请求id，当前请求的唯一标识。 **取值范围**: 数字及中划线(-)组成的字符串。                                                                                                                                                                                                                                                                                                              |
| result   | Array of [ArtifactSearchResult] objects | **参数解释**: 文件列表。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                    |
   
 表4ArtifactSearchResult 
| 参数              | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| name            | String | **参数解释**: 文件名称。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| relativePath    | String | **参数解释**: 文件相对路径。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| repo            | String | **参数解释**: 仓库id。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| repoName        | String | **参数解释**: 仓库名称。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| displayName     | String | **参数解释**: 展示名称。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| repoType        | String | **参数解释**: 制品类型。 **取值范围**: - maven   - npm   - go   - pypi   - rpm   - composer   - debian   - conan   - nuget   - docker   - cocoapods   - ohpm   - generic   - helm   - conda    |
| createdBy       | String | **参数解释**: 创建人id。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| createdUserName | String | **参数解释**: 创建人名称。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| created         | String | **参数解释**: 创建时间。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| modified        | String | **参数解释**: 修改时间。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| oldRepoId       | String | **参数解释**: 老仓库id。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 请求示例
通过Checksum搜索文件
```
https://artifact.example-1.com/cloudartifact/v5/search/checksum?checksum=eb05a9df1e3403a5f54e03de073a6ce6&page_no=1&page_size=10&in_project=true&project_id=e2ee90487d6349dd944a5767225f6f55&format=pypi
```
#### 响应示例
**状态码：200**
OK
```
{
  "status" : "success",
  "trace_id" : "143006-1701220804200-277",
  "result" : [ {
    "name" : "mod.txt",
    "relativePath" : "1/1/mod.txt",
    "createdBy" : null,
    "createdUserName" : "devcloud_devcloud_y00226182_01",
    "created" : null,
    "modified" : "2023-11-29T09:19:13.711+08:00",
    "repo" : "xx-xxxxx-x_5a775fdcb14f4431b6c0015618140bc3_pypi_40",
    "repoName" : "testpypi",
    "displayName" : null,
    "oldRepoId" : "xx-xxxxx-x_5a775fdcb14f4431b6c0015618140bc3_pypi_40",
    "repoType" : "pypi"
  } ]
}
```
#### SDK代码示例
SDK代码示例如下。
#### Java
```
package com.huaweicloud.sdk.test;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.codeartsartifact.v2.region.CodeArtsArtifactRegion;
import com.huaweicloud.sdk.codeartsartifact.v2.*;
import com.huaweicloud.sdk.codeartsartifact.v2.model.*;
public class SearchByChecksumSolution {
    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);
        CodeArtsArtifactClient client = CodeArtsArtifactClient.newBuilder()
                .withCredential(auth)
                .withRegion(CodeArtsArtifactRegion.valueOf("<YOUR REGION>"))
                .build();
        SearchByChecksumRequest request = new SearchByChecksumRequest();
        try {
            SearchByChecksumResponse response = client.searchByChecksum(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}
```
#### Python
```
# coding: utf-8
import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcodeartsartifact.v2.region.codeartsartifact_region import CodeArtsArtifactRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkcodeartsartifact.v2 import *
if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    credentials = BasicCredentials(ak, sk)
    client = CodeArtsArtifactClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(CodeArtsArtifactRegion.value_of("<YOUR REGION>")) \
        .build()
    try:
        request = SearchByChecksumRequest()
        response = client.search_by_checksum(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
```
#### Go
```
package main
import (
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    codeartsartifact "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartsartifact/v2"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartsartifact/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartsartifact/v2/region"
)
func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    auth, err := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        SafeBuild()
    if err != nil {
        fmt.Println(err)
        return
    }
    hcClient, err := codeartsartifact.CodeArtsArtifactClientBuilder().
         WithRegion(region.ValueOf("<YOUR REGION>")).
         WithCredential(auth).
         SafeBuild()
    if err != nil {
        fmt.Println(err)
        return
    }
    client := codeartsartifact.NewCodeArtsArtifactClient(hcClient)
    request := &model.SearchByChecksumRequest{}
response, err := client.SearchByChecksum(request)
if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}
```
#### 更多
更多编程语言的SDK代码示例，请参见[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/CodeArtsArtifact/sdk?api=SearchByChecksum)的代码示例页签，可生成自动对应的SDK代码示例。
#### 状态码
| 状态码 | 描述 |
|:---|:---|
| 200 | OK |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cloudartifact/ErrorCode.html)。
