Saltar al contenido principal

Setup

Antes de que Mercatto pueda hacer algo, necesita existir en Ishtaran: una Organization, una Application que aloje su integración, un Environment, y una key para autenticarse. Una sola llamada hace las cuatro cosas.

examples/marketplace-mercatto/setup.ts
const owner = createClient();
const signup = await owner.auth.signUp(`Mercatto ${runId}`, emails.owner, STORY_PASSWORD);

const mercatto = createClient(signup.apiKeyPlainText!);

Resultado

{
"organizationId": "…",
"applicationId": "…",
"environmentId": "…",
"apiKeyPlainText": "isht_sandbox_…"
}

De este paso salen dos clientes, y Mercatto conserva ambos:

  • owner — una sesión de Member. Un puñado de operaciones reales más adelante requieren específicamente esto, no una API Key (ver Architecture).
  • mercatto — la Application API Key. Todo lo demás usa esta, igual que lo haría cualquier integrador real.

Qué pasó por debajo

auth.signUp()OrganizationTenancy crea la Organization, su Application por defecto, el Environment Sandbox de esa Application, y una primera API Key — todo de forma atómica, en una sola llamada HTTP real. El Asset Network en el que operará Mercatto (USDT en Tron, en Sandbox) no está hardcodeado: setup.ts lo busca por símbolo/código de red, de la misma forma que lo haría un integrador al apuntar a un Sandbox que no sembró él mismo.

examples/marketplace-mercatto/setup.ts
async function resolveUsdtTronAssetNetworkId(owner) {
const assetNetworks = await owner.assetNetworkCatalog.listAssetNetworks();
for (const candidate of assetNetworks) {
const [asset, network] = await Promise.all([
owner.assetNetworkCatalog.getAsset(candidate.assetId),
owner.assetNetworkCatalog.getNetwork(candidate.networkId),
]);
if (asset.symbol === 'USDT' && network.code === 'tron') return candidate.assetNetworkId;
}
throw new Error('No USDT/Tron Asset Network found in this Sandbox.');
}

assetNetworkCatalog es real, pero — igual que workflows y accounts.authorizeApplication — hoy es exclusivo para Member, no alcanzable con una API Key. Por eso esta búsqueda corre sobre owner, no sobre mercatto.