Cargo-Planner Docs

Comunicação bidirecional

Um padrão de uso frequente é que você envia alguns dados de entrada para nossa API, nós fazemos o processamento e você receberá um resultado, que pode ser incorporado em sua aplicação.

Às vezes, você quer fazer algumas reorganizações manualmente, onde pode querer excluir algumas cargas de um contêiner, e adicionar outras. Quando você faz esse tipo de modificação, seria ótimo se sua aplicação também recebesse essas alterações - você quer que o Cargo-Planner interaja com seu sistema também. Então você vai querer adicionar alguns webhooks.

Webhooks

Webhooks são basicamente endpoints que você configura para assinar certos eventos.

Digamos que assim que um plano de carga for salvo/atualizado por você, você queira que esse resultado seja enviado para o seu servidor. É assim que você consegue isso:

Criando um webhook

  1. Vá para o portal do Desenvolvedor na aplicação web
  2. Expanda a seção de webhooks
  3. Pressione criar webhook
  4. Insira a URL para a qual você deseja que os dados sejam enviados, além de selecionar qual evento você deseja assinar
  5. Pressione salvar

Ouvindo eventos

No seu servidor, adicione um endpoint, o mesmo que você especificou na seção de URL acima ao criar o endpoint


from flask import Flask, request, abort
import hmac
import hashlib

app = Flask(__name__)

@app.route('/events-from-cargoplanner/', methods=['POST'])
def receive_webhook():
    payload = request.get_data(as_text=True)
    received_signature = request.headers.get('X-Hub-Signature')

    secret = "_nf7TmrgTJt6Gk43d9aSAK_yOEE58KXlTgvotei3Xe4"  # Adicione o segredo gerado para o seu endpoint

    expected_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # Processar o payload
        return "Payload processed", 200
    else:
        abort(403, 'Falha na verificação da assinatura')

if __name__ == '__main__':
    app.run()

Ao criar um webhook, você receberá um segredo que pode ser usado no seu servidor para garantir que os dados realmente venham do Cargo-Planner.