# Obtener token

Para utilizar cualquier servicio disponible en Trazo, es necesario contar con un token de acceso que autorice la solicitud.

La autenticación se realiza mediante el protocolo OAuth 2.0. Primero, debes solicitar un código de autorización y, con ese código, realizar una nueva solicitud para obtener el token de acceso.

<figure><picture><source srcset="https://3232306346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYa22ImIORqN5BuTagxcR%2Fuploads%2F9tWUmlqlc8nstLcnjRF9%2Fimage%202313.png?alt=media&#x26;token=c5f1bd8b-7c6d-4cee-bbd1-e9a5506d26c6" media="(prefers-color-scheme: dark)"><img src="https://3232306346-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYa22ImIORqN5BuTagxcR%2Fuploads%2FCbzgz624y2ZJ3wi8NXwp%2Fimage%202.png?alt=media&#x26;token=fd3fc043-3af0-4304-9a39-7d0e29a3e1aa" alt=""></picture><figcaption><p>Flujo de autenticación y uso de servicios</p></figcaption></figure>

***

## Obtener código de autorización

<mark style="color:green;">`GET`</mark> `/v1/merchant/oauth`

### Parámetros

<table><thead><tr><th>Name</th><th>Type<select><option value="Ztht9xO20EaR" label="string" color="blue"></option></select></th><th>Description</th></tr></thead><tbody><tr><td>client_id<mark style="color:red;">*</mark></td><td><span data-option="Ztht9xO20EaR">string</span></td><td>Identificador asignado al comercio</td></tr><tr><td>client_secret_key<mark style="color:red;">*</mark></td><td><span data-option="Ztht9xO20EaR">string</span></td><td>Clave o secreto asignado al comercio</td></tr></tbody></table>

### Respuesta

{% tabs %}
{% tab title="200 OK " %}
{% code overflow="wrap" %}

```json
{
    "token": "ZHavAS[...]RXSqSUFoqw=="
}
```

{% endcode %}
{% endtab %}

{% tab title="401 Unauthorized" %}

<pre class="language-json" data-overflow="wrap"><code class="lang-json">{
    "code": "Q0041-a12f2",
<strong>    "error": "The authorization is not in the correct format or does not exist."
</strong>}
</code></pre>

{% endtab %}
{% endtabs %}

***

### ¿Cómo usarlo?

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --request GET '{{base-url}}/v1/merchant/oauth?client_id={{client_id}}&client_secret_key={{client_secret_key}}'
```

{% endcode %}
{% endtab %}

{% tab title="NodeJs - Axios" %}
{% code overflow="wrap" %}

```javascript
const axios = require('axios');

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: '{{base-url}}/v1/merchant/oauth?client_id={{client_id}}&client_secret_key={{client_secret_key}}'
headers: { }
};

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

{% endcode %}
{% endtab %}

{% tab title="Python - Requests" %}
{% code overflow="wrap" %}

```python
import requests

url = "{{base-url}}/v1/merchant/oauth?client_id={{client_id}}&client_secret_key={{client_secret_key}}"

payload = {}
headers = {}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
```

{% endcode %}
{% endtab %}
{% endtabs %}

***

Después de obtener el código de autenticación, utilizando el método de autenticación *Bearer Token* puede obtener el token de acceso para hacer uso de los servicios de la API de Trazo.&#x20;

{% hint style="info" %}
Alternativamente, puedes omitir el paso anterior utilizando una combinación codificada en base64, donde el client\_id actúa como el nombre de usuario y el client\_secret\_key como la contraseña. La estructura de la combinación en base64 se presenta de la siguiente manera: `Bearer base64(client_id|client_secret_key).`
{% endhint %}

***

## Obtener token de acceso

<mark style="color:blue;">`GET`</mark> `/token`

### Encabezado

| Name                                             | Type   | Description                                        |
| ------------------------------------------------ | ------ | -------------------------------------------------- |
| Authorization <mark style="color:red;">\*</mark> | String | Bearer {{base64(client\_id\|client\_secret\_key)}} |

{% tabs %}
{% tab title="200 OK " %}

<pre class="language-json"><code class="lang-json">{
<strong>    "access_token": "das87afwh19f82fgj192f82fdh",
</strong>    "expires_in": 3600
}
</code></pre>

{% endtab %}

{% tab title="401 Unauthorized" %}
{% code overflow="wrap" %}

```json
{
    "code": "Q0141-a12f2",
    "error": "The authorization is not in the correct format or does not exist."
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

***

### ¿Cómo usarlo?

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --request GET '{{base-url}}/v1/merchant/token' \
--header 'Authorization: Bearer {{oauth}}'
```

{% endcode %}
{% endtab %}

{% tab title="NodeJs - Axios" %}

<pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">const axios = require('axios');

let config = {
  method: 'get',
  maxBodyLength: Infinity,
  url: '{{base-url}}/v1/merchant/token'
<strong>  headers: { 
</strong>    'Authorization': 'Bearer {{oauth}}'
  }
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});
</code></pre>

{% endtab %}

{% tab title="Python - Requests" %}
{% code overflow="wrap" %}

```python
import requests

url = "{{base-url}}/v1/merchant/token"

payload = {}
headers = { 
    'Authorization': 'Bearer {{oauth}}'
  }

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
```

{% endcode %}
{% endtab %}
{% endtabs %}

<details>

<summary>TIP! ¿Cómo usar estos ejemplos en <mark style="color:orange;">Postman</mark>? <mark style="color:orange;">💡</mark></summary>

1. Para usar este cURL puedes ingresar a Postman y seleccionar la opción "importar" o "import".

<img src="https://content.gitbook.com/content/Ya22ImIORqN5BuTagxcR/blobs/blM3fB50iaVpkJxrPc9u/image.png" alt="" data-size="line">

2. Después pega la información en la barra de información.

![](https://content.gitbook.com/content/Ya22ImIORqN5BuTagxcR/blobs/VIoA9vRRDiXh16UAItuc/image.png)

3. Ajusta la url y las credenciales de tu cuenta.
4. ¡Listo! ✅&#x20;

</details>
