> For the complete documentation index, see [llms.txt](https://rocketfy-1.gitbook.io/api-publica/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rocketfy-1.gitbook.io/api-publica/autenticacion/primeros-pasos.md).

# Primeros pasos

En esta página encontrarás las instrucciones para conectarte a nuestra API, autenticarte y recomendaciones para empezar a realizar tus primeras peticiones

## Obtener un token de autenticación

<mark style="color:green;">`POST`</mark> `https://api.rocketfy.co/api/public/connect`

Este método te permite retornar un token de acceso para realizar peticiones al API pública

#### Request Body

| Name      | Type   | Description                                                                                                    |
| --------- | ------ | -------------------------------------------------------------------------------------------------------------- |
| partnerID | string | Identificador que te proveeremos según el contrato de integración que tengas con Rocketfy y su área comercial. |
| api\_key  | string | Llave que te proveeremos según el contrato de integración que tengas con Rocketfy y su área comercial.         |

{% tabs %}
{% tab title="200 Ejemplo de respuesta de que te autenticaste correctamente." %}

```
{
  "success": true,
  "message": "Debes guardar el token",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ"
}
```

{% endtab %}

{% tab title="404 Ejemplo de error en caso de que no envíes los parametros correctamente." %}

```
{
  "success": false,
  "message": "ID or api_key incorrect"
}
```

{% endtab %}
{% endtabs %}

## Refrescar token de acceso

<mark style="color:green;">`POST`</mark> `https://api.rocketfy.co/api/public/refreshCustomerToken`

Este método te permite refrescar el token de acceso una vez haya expirado

#### Headers

| Name          | Type   | Description                                                                                                                                                               |
| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authorization | string | <p>Token que recibes del método de autenticación inicial en Primeros pasos y debe enviarse en el siguiente formato: <br><br><code>Bearer MI\_TOKEN\_DE\_ACCESO</code></p> |

#### Request Body

| Name       | Type   | Description                                                                                                                                                                                                   |
| ---------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| partnerID  | string | Identificador que te proveeremos según el contrato de integración que tengas con Rocketfy y su área comercial.                                                                                                |
| customerID | string | <p>Identificador de la tienda que se retorna al crear una tienda en Rocketfy y que debe de estar almacenado en tu base de datos. <br><br><strong>Ejemplo:</strong> <code>testpublicapi\_1325176081</code></p> |

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

```
{
    "mssg": "Login URL properly refreshed",
    "data": {
        "redirectUrl": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJodHRwczovL2FwcC5yb2NrZXRmeS5jby9sb2dpbiIsImlhdCI6MTYzMTAzNjc3MywiZXhwIjoxNjMxMDM4NTczLCJhdWQiOiJodHRwczovL3d3dy5yb2NrZXRmeS5jby8iLCJpc3MiOiJSb2NrZXRmeSIsInN1YiI6ImhvbGFAcm9ja2V0ZnkuY28ifQ.Bwxo6KXYI93n-9N1PvRkHIwQbX6shGd3yZ866Zte2e7rCmmXm7LWSx5TywMOPAs6rXV5muDloKi7jp4wblCNYDnxxpCwaxsj3R7kSxPzWRpUhc1zvDIaMe41o3f2j9apw3DkyckwaVctZnZC2m-va9ZfX7clhwzyA5hGQ7u6mB4"
    }
}
```

{% endtab %}
{% endtabs %}

### Verificar la firma del token de redirectUrl

El `redirectUrl` es un JWT con validez de 30 minutos firmado mediante llave asimétrica. Para validarla y poder hacer uso del token es necesario de una llave pública suministrada por nosotros.

Este es un ejemplo de cómo pueden validar y hacer uso del token para obtener la URL de re-dirección final. Es importante para poder validar el token, además de la clave pública, enviarle los parámetros complementarios que están en la variable `verifyOption`.

```
const publicKey = fs.readFileSync(`${__dirname}/keys/public_key.pem`, "utf8");

const iss = "Rocketfy";
const sub = "hola@rocketfy.co";
const aud = "https://www.rocketfy.co/";
const exp = "30m";

const verifyOption = {
  issuer: iss,
  subject: sub,
  audience: aud,
  maxAge: exp,
  algorithm: "RS256"
}

const { url } = jwt.verify(req.body.token, publicKey, verifyOption);
console.log('verified', url)
```
