POST /api/v2/server-side-api/vc/transactions/

Crear transacción de moneda virtual

Acredita o debita una o más monedas virtuales para un perfil en una única transacción atómica. Utiliza un amount positivo para acreditar (conceder) y un amount negativo para debitar (gastar). Todos los elementos se aplican de forma conjunta: si alguno falla, ninguno se aplica.

Cada código de moneda puede aparecer solo una vez por solicitud. Una acreditación a través de este endpoint siempre crea un saldo sin vencimiento.

Header parameters

adapty-customer-user-idstring

El ID único del cliente en tu sistema. Se requiere adapty-customer-user-id o adapty-profile-id.

adapty-profile-idstring

El ID único del perfil en tu sistema. Es la mejor opción si trabajas con perfiles anónimos. Se requiere adapty-customer-user-id o adapty-profile-id.

Idempotency-Keystring · uuid

Un UUID v4 que hace la solicitud idempotente. Si reintentas una solicitud con la misma clave, Adapty devuelve el resultado de la transacción original sin modificar los saldos nuevamente. Debe ser un UUID v4 válido.

Las claves se recuerdan hasta una hora, dentro del ámbito de un único perfil. Pasado ese período, una solicitud con la misma clave se aplica como una nueva transacción; por lo tanto, usa la clave para reintentar una llamada de forma segura, no para deduplicar una concesión a largo plazo.

Request body

Cuerpo de la solicitud para crear una transacción de moneda virtual.

itemsarray of objectrequired

Ajustes de saldo que se aplican de forma atómica. Cada código de moneda puede aparecer solo una vez.

currency_codestringrequired

El código de moneda virtual a ajustar.

amountintegerrequired

El importe a aplicar. Un valor positivo acredita (otorga) la moneda; un valor negativo debita (gasta) la moneda. No puede ser cero.

metadataobject

Pares clave-valor opcionales almacenados con la transacción. Como máximo 5 claves. Cada clave debe coincidir con ^[a-z0-9_]{1,30}$, y cada valor tiene como máximo 200 caracteres.

Responses

Transacción aplicada correctamente

Schema

Resultado de una transacción de moneda virtual.

transaction_idstringrequired

ID único de la transacción creada.

balancesarray of objectrequired

Saldo posterior a la transacción para cada moneda afectada por esta solicitud (una entrada por cada elemento en items). Para leer la lista completa de saldos del perfil, use GET /api/v2/server-side-api/vc/balances/.

codestringrequired

Código de moneda virtual.

namestringrequired

Nombre visible de la moneda virtual.

balanceintegerrequired

Saldo total, incluidos los importes retenidos actualmente.

heldintegerrequired

Suma de todas las retenciones activas (importes reservados). Actualmente siempre es 0.

availableintegerrequired

Saldo disponible para gastar, calculado como balance - held.

Example
{
  "transaction_id": "0190e8a4-1c2b-7def-8abc-2c1a4b6d8e90",
  "balances": [
    {
      "code": "COINS",
      "name": "Gold Coins",
      "balance": 12950,
      "held": 0,
      "available": 12950
    }
  ]
}

Solicitud incorrecta. El campo error_code identifica la causa: insufficient_balance, unknown_currency, duplicate_currency, amount_zero, balance_overflow, empty_items o idempotency_key_invalid.

Schema
errorsarray of objectrequired
sourcestring

Fuente del error

errorsarray of string

Array de mensajes de error

error_codestringrequired

Nombre corto del error

status_codeintegerrequired

Código de estado HTTP

Example
{
  "errors": [
    {
      "source": "currency_code",
      "errors": [
        "Insufficient balance for currency COINS"
      ]
    }
  ],
  "error_code": "insufficient_balance",
  "status_code": 400
}

No autorizado. La clave de API falta o no es válida.

Schema
errorsarray of objectrequired
sourcestring

Fuente del error

errorsarray of string

Array de mensajes de error

error_codestringrequired

Nombre corto del error

status_codeintegerrequired

Código de estado HTTP

Prohibido. La Server API para monedas virtuales no está habilitada para esta aplicación. Contacta con el soporte de Adapty para solicitar acceso.

Schema
errorsarray of objectrequired
sourcestring

Fuente del error

errorsarray of string

Array de mensajes de error

error_codestringrequired

Nombre corto del error

status_codeintegerrequired

Código de estado HTTP

Example
{
  "errors": [
    {
      "source": null,
      "errors": [
        "Server API for virtual currencies is not enabled for this app. Contact Adapty support to request access."
      ]
    }
  ],
  "error_code": "feature_not_enabled",
  "status_code": 403
}

Perfil no encontrado.

Schema
errorsarray of objectrequired
sourcestring

Fuente del error

errorsarray of string

Array de mensajes de error

error_codestringrequired

Nombre corto del error

status_codeintegerrequired

Código de estado HTTP

Conflicto. El campo error_code identifica la causa:

  • idempotency_in_flight — una solicitud con el mismo Idempotency-Key aún está siendo procesada. Reintenta después del intervalo indicado en el encabezado de respuesta Retry-After.
  • duplicate_source_transaction — la transacción de store subyacente ya fue acreditada, por lo que no se aplica de nuevo.
Schema
errorsarray of objectrequired
sourcestring

Fuente del error

errorsarray of string

Array de mensajes de error

error_codestringrequired

Nombre corto del error

status_codeintegerrequired

Código de estado HTTP

Example
{
  "errors": [
    {
      "source": null,
      "errors": [
        "A similar request is being processed."
      ]
    }
  ],
  "error_code": "idempotency_in_flight",
  "status_code": 409
}

Entidad no procesable. El cuerpo de la solicitud no superó la validación del esquema; por ejemplo, items contiene más de 20 entradas, o una clave o valor de metadata incumple sus restricciones.

Schema
errorsarray of objectrequired
sourcestring

Fuente del error

errorsarray of string

Array de mensajes de error

error_codestringrequired

Nombre corto del error

status_codeintegerrequired

Código de estado HTTP

Demasiadas solicitudes. Se superó el límite de velocidad por aplicación o global (error_code es rate_limited). Los límites predeterminados son 600 solicitudes por minuto por aplicación y 6000 solicitudes por minuto a nivel global.

Schema
errorsarray of objectrequired
sourcestring

Fuente del error

errorsarray of string

Array de mensajes de error

error_codestringrequired

Nombre corto del error

status_codeintegerrequired

Código de estado HTTP

Error interno del servidor