# Component Claim REST API

**Note**  
Note that the IQ Server's UI currently only supports claiming components in the maven format. As such, viewing, adding, updating, and removing component claims in formats other than maven is currently only supported via this API.

## GET a Component Claim by Component Hash

To get a component's claim, you can issue a GET request to the following path

```
GET /api/v2/claim/components/{componentHash}
```

where `componentHash` is the SHA1 hash of the component.

Below is an example request

```
curl -u admin:admin123 http://localhost:8070/api/v2/claim/components/4632184fe1d932764efe
```

If a component claim does not exist for the given component hash, then the request yields HTTP status code 404. Otherwise, a JSON response will be returned with the following properties

| Property           | Description                                                                 |
|--------------------|-----------------------------------------------------------------------------|
| hash               | The truncated SHA1 hash of the component.                                  |
| comment            | The comment left (if any) when claiming the component.                     |
| createTime         | The date and time when the component was created/published, defining the age of the component.<br>Note that this timestamp is not to be confused with the moment when the component claim was made. |
| claimerId          | The username of the user who claimed the component.                        |
| claimerName        | The display name of the user who claimed the component.                    |
| componentIdentifier | The format and coordinates for the claimed component.                      |
| packageUrl         | The package URL for the claimed component.                                 |

The following is an example successful response

```
{
    "hash": "4632184fe1d932764efe",
    "comment": "c1",
    "createTime": "2020-02-14T00:00:00.000Z",
    "claimerId": "admin",
    "claimerName": "Admin BuiltIn",
    "componentIdentifier": {
        "format": "maven",
        "coordinates": {
            "artifactId": "a",
            "classifier": "c",
            "extension": "e",
            "groupId": "g",
            "version": "v"
        }
    },
    "packageUrl": "pkg:maven/g/a@v?classifier=c&type=e"
}
```

## GET all Component Claims

To get all component claims, a Policy Administrator can issue a GET request to the following path

```
GET /api/v2/claim/components
```

Below is an example request

```
curl -u admin:admin123 http://localhost:8070/api/v2/claim/components
```

The following is an example successful response

```
{
    "componentClaims": [
        {
            "hash": "4632184fe1d932764efe",
            "comment": "c1",
            "createTime": "2020-02-14T00:00:00.000Z",
            "claimerId": "admin",
            "claimerName": "Admin BuiltIn",
            "componentIdentifier": {
                "format": "maven",
                "coordinates": {
                    "artifactId": "a",
                    "classifier": "c",
                    "extension": "e",
                    "groupId": "g",
                    "version": "v"
                }
            },
            "packageUrl": "pkg:maven/g/a@v?classifier=c&type=e"
        },
        {
            "hash": "6d0684d8acf85cd6e7f2",
            "comment": "c2",
            "createTime": "2020-01-09T15:01:10.000Z",
            "componentIdentifier": {
                "format": "a-name",
                "coordinates": {
                    "name": "n",
                    "qualifier": "q",
                    "version": "v"
                }
            },
            "packageUrl": "pkg:a-name/n@v?qualifier=q"
        }
    ]
}
```

## POST/Add/Update a Component Claim

To add or update a component claim, a Policy Administrator can issue a POST request to the following path

```
POST /api/v2/claim/components
```

The request requires a JSON body/payload, using the same properties described above, and must include at least a `hash` (of the component being claimed) and a valid `componentIdentifier` / `packageUrl`.

Below is an example request

```
curl -u admin:admin123 -X POST -H "Content-Type: application/json" -d '{"hash":"a4d45b211072d89c0e54","comment":"c3","createTime":"2020-01-09T15:01:10.000Z","componentIdentifier":{"format":"npm","coordinates":{"packageId":"p","version":"v"}}}' http://localhost:8070/api/v2/claim/components
```

The following is an example successful response

```
{
    "hash": "a4d45b211072d89c0e54",
    "comment": "c3",
    "createTime": "2020-01-09T15:01:10.000Z",
    "claimerId": "admin",
    "claimerName": "Admin BuiltIn",
    "componentIdentifier": {
        "format": "npm",
        "coordinates": {
            "packageId": "p",
            "version": "v"
        }
    },
    "packageUrl": "pkg:npm/p@v"
}
```

## DELETE a Component Claim by Component Hash

To delete a component claim, you can issue a DELETE request to the following path

```
DELETE /api/v2/claim/components/{componentHash}
```

where `componentHash` is the SHA1 hash of the component. If a component claim does not exist for the given component hash, then the request yields HTTP status code 404.

Below is an example request

```
curl -X DELETE -u admin:admin123 http://localhost:8070/api/v2/claim/components/6d0684d8acf85cd6e7f2
```

## Search results

No results found
