Saltar al contenido principal

Autorización

Para interactuar de manera segura con nuestra API y acceder a sus diferentes endpoints, es esencial obtener primero un token de autenticación. Este token asegura que tus solicitudes estén autorizadas y ayuda a mantener la integridad y seguridad de nuestra API.

Requerimientos

Para consumir la API, debes tener un clientId válido y una clave privada ECDSA, registrada de manera privada a través de Goat. La huella digital de tu clave ECDSA, utilizada como keyId, es crítica para la autenticación de las solicitudes. Asegúrate de que tanto tu clientId como tu keyId estén registrados de forma segura con Goat para consumir los servicios de la API.

Generar secreto

Necesitas crear un token de solicitud con la información de tu cliente, utilizando un token 0Auth firmado.

Ejemplo de código

JAVASCRIPT

import jwt from 'jsonwebtoken';

function generateSecret(clientId, keyId, privateKey) {

const timestamp = Math.floor(Date.now() / 1000);

const payload = {
aud: 'https://api.goat.ar/v1/oauth/token',
iss: clientId,
iat: timestamp,
exp: timestamp + 3600,
sub: clientId,
}

const header = {
alg: 'ES256',
kid: keyId,
};

return jwt.sign(payload, privateKey, {
algorithm: 'ES256',
expireIn: "1h",
header,
});
}

PYTHON

import time
import jwt

def generate_secret(client_id, key_id, private_key):
timestamp = int(time.time())
payload = {
'aud': 'https://api.goat.ar/v1/oauth/token',
'iss': client_id,
'iat': timestamp,
'exp': timestamp + 3600, # Expira en 1 hora
'sub': client_id,
}

headers = {
'alg': 'ES256',
'kid': key_id,
}

token = jwt.encode(payload, private_key, algorithm='ES256', headers=headers)
return token

Get API token

Aquí te mostramos cómo obtener el toke:

POST /oauth/app/token

Get token for customer authorization

Petición de ejemplo:

POST /oauth/app/token HTTP/1.1
Host: example.com
Content-Type: application/json

{
"appId": "string",
"token": "string",
"grantType": "client_credentials"
}
  • Status Codes:

    • 200 OK

      Session token generated

      Ejemplo de respuesta:

      HTTP/1.1 200 OK
      Content-Type: application/json

      {
      "type": "Bearer",
      "accessToken": "string",
      "expiresIn": 1
      }
    • 400 Bad Request

      Invalid payload

      Ejemplo de respuesta:

      HTTP/1.1 400 Bad Request
      Content-Type: application/json

      {
      "errorId": "string",
      "code": 1,
      "message": "string",
      "detail": [
      {
      "path": "string",
      "message": "string",
      "type": "invalid"
      }
      ]
      }
    • 401 Unauthorized

      Unauthorized

      Ejemplo de respuesta:

      HTTP/1.1 401 Unauthorized
      Content-Type: application/json

      {
      "errorId": "string",
      "code": 1,
      "message": "string"
      }

Usar token

Al realizar solicitudes a otros endpoints de la API, incluye este token en el encabezado Authorization como un token de tipo Bearer.​

Ejemplo:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Recuerda, el token es esencial para acceder a los endpoints protegidos de la API. Debe almacenarse y transmitirse de manera segura a través de HTTPS para evitar accesos no autorizados. Si enfrentas problemas con la generación del token o recibes un error de “Unauthorized” al realizar llamadas a la API, asegúrate de que tu clientId y secret sean correctos y que tengas los permisos necesarios para los scopes solicitados.