Rassmi Developers

Getting Started

Quickstart

From an API key to your first order in the agents' call queue, in three requests.

  1. Get the store's API key

    In your Rassmi dashboard, open API Key and generate the store's key. It starts with rsk_ and is shown once: keep it in a secret, never in code that runs in a browser.

  2. Check the key

    Read the store it belongs to. access.accepts_orders says whether new orders are taken right now.

    curl https://rassmi.com/api/v1/store \
      -H "Authorization: Bearer $RASSMI_API_KEY"
  3. Send an order

    It joins the call queue as pending_confirmation: an agent calls the customer.

    curl -X POST "https://rassmi.com/api/v1/orders" \
      -H "Authorization: Bearer $RASSMI_API_KEY" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d '{
        "customer_name": "Amina Benali",
        "customer_phone": "0555123456",
        "customer_address": "Cité 200 Logements, Bt 4",
        "customer_wilaya": "16",
        "customer_commune": "Bab Ezzouar",
        "total_amount": 5000,
        "shipping_fee": 500,
        "items": [
            {
                "product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
                "quantity": 1,
                "attributes": {
                    "Taille": "M"
                }
            }
        ]
    }'
    use Illuminate\Support\Facades\Http;
    
    $response = Http::withToken(env('RASSMI_API_KEY'))
        ->acceptJson()
        ->post('https://rassmi.com/api/v1/orders', [
            'customer_name' => 'Amina Benali',
            'customer_phone' => '0555123456',
            'customer_address' => 'Cité 200 Logements, Bt 4',
            'customer_wilaya' => '16',
            'customer_commune' => 'Bab Ezzouar',
            'total_amount' => 5000,
            'shipping_fee' => 500,
            'items' => [
                [
                    'product_id' => '0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e',
                    'quantity' => 1,
                    'attributes' => [
                        'Taille' => 'M',
                    ],
                ],
            ],
        ]);
    
    $data = $response->json();
    const response = await fetch('https://rassmi.com/api/v1/orders', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.RASSMI_API_KEY}`,
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
          "customer_name": "Amina Benali",
          "customer_phone": "0555123456",
          "customer_address": "Cité 200 Logements, Bt 4",
          "customer_wilaya": "16",
          "customer_commune": "Bab Ezzouar",
          "total_amount": 5000,
          "shipping_fee": 500,
          "items": [
              {
                  "product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
                  "quantity": 1,
                  "attributes": {
                      "Taille": "M"
                  }
              }
          ]
      }),
    });
    
    const data = await response.json();
    import os
    import requests
    
    response = requests.request(
        "POST",
        "https://rassmi.com/api/v1/orders",
        headers={"Authorization": f"Bearer {os.environ['RASSMI_API_KEY']}"},
        json={
            "customer_name": "Amina Benali",
            "customer_phone": "0555123456",
            "customer_address": "Cité 200 Logements, Bt 4",
            "customer_wilaya": "16",
            "customer_commune": "Bab Ezzouar",
            "total_amount": 5000,
            "shipping_fee": 500,
            "items": [
                {
                    "product_id": "0199a3c2-1b2c-7a10-8e3d-5f6a7b8c9d0e",
                    "quantity": 1,
                    "attributes": {
                        "Taille": "M",
                    },
                },
            ],
        },
    )
    
    data = response.json()
  4. Hear back with a webhook

    Register an endpoint for the events you need; Rassmi sends each one, signed, as it happens.

    curl -X POST "https://rassmi.com/api/v1/webhooks" \
      -H "Authorization: Bearer $RASSMI_API_KEY" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d '{
        "url": "https://example.com/hooks/rassmi",
        "events": [
            "order.created",
            "order.confirmed",
            "order.shipped"
        ]
    }'
    use Illuminate\Support\Facades\Http;
    
    $response = Http::withToken(env('RASSMI_API_KEY'))
        ->acceptJson()
        ->post('https://rassmi.com/api/v1/webhooks', [
            'url' => 'https://example.com/hooks/rassmi',
            'events' => [
                'order.created',
                'order.confirmed',
                'order.shipped',
            ],
        ]);
    
    $data = $response->json();
    const response = await fetch('https://rassmi.com/api/v1/webhooks', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.RASSMI_API_KEY}`,
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
          "url": "https://example.com/hooks/rassmi",
          "events": [
              "order.created",
              "order.confirmed",
              "order.shipped"
          ]
      }),
    });
    
    const data = await response.json();
    import os
    import requests
    
    response = requests.request(
        "POST",
        "https://rassmi.com/api/v1/webhooks",
        headers={"Authorization": f"Bearer {os.environ['RASSMI_API_KEY']}"},
        json={
            "url": "https://example.com/hooks/rassmi",
            "events": [
                "order.created",
                "order.confirmed",
                "order.shipped",
            ],
        },
    )
    
    data = response.json()

Next: verify each delivery's signature before trusting it.