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
} -
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"
}
]
} -
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.