# Create Registry Token

This section shows you how to create a registry token. We assume the following prerequisite:

* [<mark style="color:blue;">A container registry</mark>](/cloud/containers/private-container-registry/api-howtos/create_registry.md)

In this guide, we used test named repository to create registry tokens. Therefore, it is important that the you know your container registry name.

With the `POST` request, you get the registry token. You will need to provide registry ID:

## Request

{% hint style="info" %}
**Note:** The sample `requestID` is `789f8e3c-d5c8-4359-8f85-c200fb89e97c`.
{% endhint %}

```bash
curl --location  \
--request POST 'https://api.ionos.com/containerregistries/registries/:789f8e3c-d5c8-4359-8f85-c200fb89e97c/tokens' \
--header 'Authorization: Bearer ${TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "properties": {
    "name": "test",
    "expiryDate": null,
    "scopes": [
      {
        "name": "*",
        "actions": [
          "pull", "push", "delete"
        ],
        "type": "repository"
      }
    ]
  }
}'
```

## Response

**200 OK - Successfully showed the list of registries**

```json
{
    "id": "8fb592e4-494c-11ed-b878-0242ac120002",
    "type": "token",
    "href": "",
    "metadata": {
        "createdBy": "sample@sample.com",
        "createdByUserId": "8hb792e4-494c-11ed-b878-0242ac120002",
        "createdDate": "2022-10-08T15:56:04Z",
        "state": "enabled"
    },
    "properties": {
        "name": "test",
        "scopes": [
            {
                "actions": [
                    "pull",
                    "push",
                    "delete"
                ],
                "name": "*",
                "type": "repository"
            }
        ],
        "expiryDate": null,
        "status": "enabled",
        "credentials": {
            "username": "test",
            "password": "148g592e4-494c-11ed-b878-0242ac120002"
        }
    }
}
```

### Response fields

| **Field**           | **Type** |                           **Description**                           | **Example**                            |
| ------------------- | :------: | :-----------------------------------------------------------------: | -------------------------------------- |
| **id**              |  string  |                     The id of the created token.                    | `8fb592e4-494c-11ed-b878-0242ac120002` |
| **createdBy**       |  string  |                   The user who created the token.                   | `sample@sample.com`                    |
| **createdByUserId** |  string  | The ID of the user or service account that initiated the operation. | `8fb59000-494c-11ed-0242ac120002`      |
| **state**           |  string  |                     The status of the registry.                     | `Running`                              |
| **hostname**        |  string  |         The allocated hostname for the particular registry.         | `demo.cr.de-fra.test.com`              |

{% hint style="info" %}
**Note:**

* Your values will differ from those in the sample code. Your response will have a different `id` for your token.
* Save the **username** and **password** in the reponse sample for using the [<mark style="color:blue;">**Docker commands**</mark>](https://docs.docker.com/registry/spec/api/).
  {% endhint %}

**409 - Conflict**

```json
{
   "httpStatus": 409,
   "messages": [
       {
           "errorCode": "0",
           "message": "already exists: name is not available"
       }
   ]
}
```

## Docker CLI

If you want to push your local images to docker repository, you need to login to it using:

```bash
docker login [OPTIONS] [SERVER]
```

You need to enter the following options to login:

* **Hostname**
* **Username**
* **Password**

For more information, refer to the the [<mark style="color:blue;">**Docker Commands**</mark>](https://docs.docker.com/registry/spec/api/).

You can push the images to your registry by providing all required information. You can query registries and look at images manifest, discover tags, delete layers and delete manifest etc. In the Docker API calls:

* **You can use the name of registry**
* **Authenticate the API calls with a token**

To know more, explore the [<mark style="color:blue;">**Docker Documentation**</mark>](https://docs.docker.com/registry/spec/api/). The Data Center Designer (DCD) also uses an easy to opt passthrough feature which as discussed uses **Basic Auth** feature, so you do not need to use a separate authentication method for the DCD.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ionos.com/cloud/containers/private-container-registry/api-howtos/create_token.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
