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.