Acesso Comercial / Docs / Office / API
Ctrl K
MUTATION

updateAvailableQuantity

Atualiza a quantidade disponível em estoque. Requer permissão products:write.

Assinatura

mutation {
  updateAvailableQuantity(input: OfficeApiUpdateAvailableQuantityInput!): OfficeApiProductResult

Parâmetros de Input

CampoTipoObrigatórioDescrição
idID!SimID global do produto.
availableQuantityChangeInt!SimAlteração na quantidade. Valor positivo adiciona estoque, negativo remove. Ex: +10 adiciona 10 unidades, -5 remove 5.
newUnitCostFloatNãoNovo custo unitário do produto (para controle de margem). Opcional.
Importante: O campo availableQuantityChange é um delta (diferença), não um valor absoluto. Para definir estoque = 50, primeiro consulte o estoque atual e calcule a diferença.

Retorno

CampoTipoDescrição
successBooleanSe a operação foi bem sucedida.
productIdIDID do produto atualizado.

Sincronização de Estoque

Para sincronizar estoque com um ERP externo, consulte o estoque atual e calcule o delta:

async function syncStock(productId, desiredQuantity) {
  // Consultar estoque atual
  const { product } = await officeApi(`
    query($id: ID!) {
      product(id: $id) {
        id
        availableQuantity
      }
    }
  `, { id: productId });

  const currentQuantity = product.availableQuantity;
  const change = desiredQuantity - currentQuantity;

  if (change === 0) return; // Já sincronizado

  // Aplicar delta
  await officeApi(`
    mutation($input: OfficeApiUpdateAvailableQuantityInput!) {
      updateAvailableQuantity(input: $input) {
        success
      }
    }
  `, {
    input: {
      id: productId,
      availableQuantityChange: change
    }
  });
}

Adicionar Estoque (+10)

GraphQL
mutation {
  updateAvailableQuantity(input: {
    id: "UHJvZHVjdDo2MTIz..."
    availableQuantityChange: 10
  }) {
    success
    productId
  }
}

Remover Estoque (-5)

GraphQL
mutation {
  updateAvailableQuantity(input: {
    id: "UHJvZHVjdDo2MTIz..."
    availableQuantityChange: -5
  }) {
    success
  }
}

Com Custo Unitário

GraphQL
mutation {
  updateAvailableQuantity(input: {
    id: "UHJvZHVjdDo2MTIz..."
    availableQuantityChange: 100
    newUnitCost: 25.50
  }) {
    success
  }
}