Code Examples

Integration examples for AS2aaS across programming languages and use cases.

Node.js Examples

Basic Message Sending

const AS2aaS = require('as2aas');
const client = new AS2aaS('pk_live_your_api_key');

async function sendMessage(partnerAs2Id, orderData) {
  const message = await client.messages.create({
    partner_id: partnerAs2Id,
    subject: `Purchase Order ${orderData.orderNumber}`,
    payload: {
      content: generateEDI850(orderData)
    },
    content_type: 'application/edi-x12'
  });
  
  return message;
}

Webhook Handler

app.post('/webhooks/as2', (req, res) => {
  const event = req.body;
  
  switch (event.event) {
    case 'message.received':
      handleIncomingMessage(event.data);
      break;
    case 'message.delivered':
      updateOrderStatus(event.data.id, 'delivered');
      break;
  }
  
  res.status(200).send('OK');
});

Python Examples

Django Integration

import requests

class AS2aaSService:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = 'https://api.as2aas.com'
    
    def send_message(self, partner_id, subject, payload, content_type):
        headers = {
            'Authorization': f'Bearer {self.api_key}',
            'Content-Type': 'application/json'
        }
        
        data = {
            'partner_id': partner_id,
            'subject': subject,
            'payload': {'content': payload},
            'content_type': content_type
        }
        
        response = requests.post(f'{self.base_url}/v1/messages', 
                               headers=headers, json=data)
        return response.json()

Error Handling

Retry Logic

async function sendWithRetry(messageData, maxRetries = 3) {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      return await as2.messages.create(messageData);
    } catch (error) {
      if (error.status === 422) throw error;
      if (attempt === maxRetries) throw error;
      
      const delay = Math.pow(2, attempt) * 1000;
      await new Promise(resolve => setTimeout(resolve, delay));
    }
  }
}