Errores

Codigos de error y manejo de excepciones.

Formato de error

{
  "success": false,
  "error": {
    "message": "Descripcion del error",
    "code": "ERROR_CODE"
  }
}

Codigos de error

Autenticacion

CodigoHTTPDescripcion
MISSING_API_KEY401Falta el header Authorization
MISSING_ORG_ID401Falta el header X-Org-Id
INVALID_API_KEY401API key invalida o desactivada
API_KEY_EXPIRED401API key expirada
ORG_NOT_FOUND404Organizacion no encontrada

Validacion

CodigoHTTPDescripcion
VALIDATION_ERROR400Datos de entrada invalidos
NOT_FOUND404Recurso no encontrado

Campanas

CodigoHTTPDescripcion
CAMPAIGN_INACTIVE400La campana no esta activa
CAMPAIGN_NOT_FOUND404Campana no encontrada

Codigos

CodigoHTTPDescripcion
CODE_NOT_FOUND404Codigo no existe
CODE_INACTIVE400Codigo desactivado
CODE_EXPIRED400Codigo expirado
CODE_MAX_USES_REACHED400Sin usos restantes

Puntos

CodigoHTTPDescripcion
INSUFFICIENT_BALANCE400Saldo de puntos insuficiente
POINTS_NOT_ENABLED400Sistema de puntos no habilitado

Manejo en Flutter

try {
  await SouthGamesSDK.redeem(code: 'INVALID');
} on SouthGamesException catch (e) {
  print(e.message);    // "Codigo no encontrado"
  print(e.code);       // "CODE_NOT_FOUND"
  print(e.statusCode); // 404

  switch (e.code) {
    case 'CODE_NOT_FOUND':
      showError('El codigo no existe');
      break;
    case 'CODE_EXPIRED':
      showError('El codigo ya expiro');
      break;
    case 'CODE_MAX_USES_REACHED':
      showError('El codigo ya fue usado');
      break;
    default:
      showError('Error: ${e.message}');
  }
}

Manejo en HTTP

const response = await fetch(url, { headers });
const data = await response.json();

if (!data.success) {
  console.error(`Error ${data.error.code}: ${data.error.message}`);
}