API Reference

➡️Turn your order into a pickup order that will automatically be reserved in the storage robot as soon as available.

What happened before

✅ The customer was consulted and is happy
✅ You decided that this order needs to be picked up
✅ The order has already been paid


Send request to add a new pickup order

Tell us immediately about the order even if the article(s) are not available yet.

⬇️ Implement code sample

var client = new RestClient("http://api.pickup.bd.com/api/{api_version}/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/*+json");
request.AddHeader("x-api-key", "your-api-key");
request.AddParameter("application/*+json", "{\"customerDetails\":{\"fullName\":\"Sample Customer\",\"address\":\"Sample Street 1\",\"postalCode\":\"12345\",\"city\":\"Sample Town\",\"country\":\"Sample Country\",\"phoneNumber\":\"01234567890\",\"email\":\"[email protected]\"},\"orderNumber\":\"my-order-number\",\"relatedNotes\":\"store cold and dry\",\"dosageInformation\":\"2 pills a day – one in the morning and one in the evening\",\"sendCustomerPickupMail\":true,\"customerSelfRegistration\":false}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/*+json");
RequestBody body = RequestBody.create(mediaType, "{\"customerDetails\":{\"fullName\":\"Sample Customer\",\"address\":\"Sample Street 1\",\"postalCode\":\"12345\",\"city\":\"Sample Town\",\"country\":\"Sample Country\",\"phoneNumber\":\"01234567890\",\"email\":\"[email protected]\"},\"orderNumber\":\"my-order-number\",\"relatedNotes\":\"store cold and dry\",\"dosageInformation\":\"2 pills a day – one in the morning and one in the evening\",\"sendCustomerPickupMail\":true,\"customerSelfRegistration\":false}");
Request request = new Request.Builder()
  .url("http://api.pickup.bd.com/api/{api_version}/orders")
  .post(body)
  .addHeader("Accept", "application/json")
  .addHeader("Content-Type", "application/*+json")
  .addHeader("x-api-key", "your-api-key")
  .build();

Response response = client.newCall(request).execute();
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/*+json',
    'x-api-key': 'your-api-key'
  },
  body: '{"customerDetails":{"fullName":"Sample Customer","address":"Sample Street 1","postalCode":"12345","city":"Sample Town","country":"Sample Country","phoneNumber":"01234567890","email":"[email protected]"},"orderNumber":"my-order-number","relatedNotes":"store cold and dry","dosageInformation":"2 pills a day – one in the morning and one in the evening","sendCustomerPickupMail":true,"customerSelfRegistration":false}'
};

fetch('http://api.pickup.bd.com/api/{api_version}/orders', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
import requests

url = "http://api.pickup.bd.com/api/{api_version}/orders"

payload = "{\"customerDetails\":{\"fullName\":\"Sample Customer\",\"address\":\"Sample Street 1\",\"postalCode\":\"12345\",\"city\":\"Sample Town\",\"country\":\"Sample Country\",\"phoneNumber\":\"01234567890\",\"email\":\"[email protected]\"},\"orderNumber\":\"my-order-number\",\"relatedNotes\":\"store cold and dry\",\"dosageInformation\":\"2 pills a day – one in the morning and one in the evening\",\"sendCustomerPickupMail\":true,\"customerSelfRegistration\":false}"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/*+json",
    "x-api-key": "your-api-key"
}

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'http://api.pickup.bd.com/api/{api_version}/orders', [
  'body' => '{"customerDetails":{"fullName":"Sample Customer","address":"Sample Street 1","postalCode":"12345","city":"Sample Town","country":"Sample Country","phoneNumber":"01234567890","email":"[email protected]"},"orderNumber":"my-order-number","relatedNotes":"store cold and dry","dosageInformation":"2 pills a day – one in the morning and one in the evening","sendCustomerPickupMail":true,"customerSelfRegistration":false}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/*+json',
    'x-api-key' => 'your-api-key',
  ],
]);

echo $response->getBody();

➡️ Notice: Fill in the API Version for the Parameter {api_version}.
{api_version} should be replaced with the Version you want to use e.g. v2.0 so the url should be https://api.pickup.bd.com/api/v2.0/orders.

Use Parameters:

uri: http://api.pickup.bd.com/api/{api_version}/orders

API Key: You've received the API Key directly from us via E-Mail.
If not, contact us here!

httpMethod: POST

content: NewOrderRequest


⬇️ Most of the times, orders will present themselves in 4 common cases.

Order ExampleDetails
Order with complete data This case will present you with everything about the order and the customer.

You have the complete customerDetails and the orderNumber.

It might also contain other parameters such as the dosageInformation. If the Order is coming from a Webshop this is probably a regular case for you.
Order only with an email This case will only contain the customer's email and the details about the order.

This is a common case if customers want to enter their customer details later on. If customerSelfRegistration is enabled the Customer will receive an email with a link that opens a Webpage to enter their (missing) personal data.

It might also contain other parameters such as the dosageinformation.
No email and no customer Information This case only contains the order number.

As there is no email address, we can't inform the customer via email about the Order and cant send out the Pickup Code. This means the customer needs their pickup code upon order creation.

It might also contain other parameters such as the dosageInformation.
Order only with customer details This case contains the order number as well as the customer details, except the customer's email.

As there is no email address, we can't inform the customer later on via email, so the customer needs their pickup code upon order creation.

It might also contain other parameters such as the dosageInformation.
{
     "customerDetails": {
          "fullName": "Max Mustermann",
          "address": "Ansbacher Strasse 75",
          "postalCode": "55608",
          "city": "Schneppenbach",
          "country": "Deutschland",
          "phoneNumber": "+49 06544 97 08 25",
          "email": "[email protected]"
     },
     "orderNumber": "8e7c4ac1-91e5-4882-a914-05f7fc50e124",
     "relatedNotes": "store cold and dry",
     "sendCustomerPickupMail": true,
     "dosageInformation": "2 pills a day – one in the morning and one in the evening",
     "customerSelfRegistration": false
}
{
     "customerDetails": {
          "email": "[email protected]"
     },
     "orderNumber": "8e7c4ac1-91e5-4882-a914-05f7fc50e124",
     "relatedNotes": "store cold and dry",
     "sendCustomerPickupMail": true,
     "dosageInformation": "2 pills a day – one in the morning and one in the evening",
     "customerSelfRegistration": true
}
{
     "orderNumber": "8e7c4ac1-91e5-4882-a914-05f7fc50e124",
     "relatedNotes": "store cold and dry",
     "dosageInformation": "2 pills a day – one in the morning and one in the evening",
}
{
     "customerDetails": {
          "fullName": "Max Mustermann",
          "address": "Ansbacher Strasse 75",
          "postalCode": "55608",
          "city": "Schneppenbach",
          "country": "Deutschland",
          "phoneNumber": "+49 06544 97 08 25",
     },
     "orderNumber": "8e7c4ac1-91e5-4882-a914-05f7fc50e124",
     "relatedNotes": "store cold and dry",
     "dosageInformation": "2 pills a day – one in the morning and one in the evening",
     "customerSelfRegistration": false
}

What happens after

❓You chose that we should handle the pickup code handover to the patient?
➡️ You can relax – we do the rest.


❓Don't want to use the order number for getting the pickup order status later on?
➡️ Save the pickup code to retrieve the order status at a later point.

❓Do you want to send the pickup code (e.g. via email) to your patient?
➡️ Convert the pickup code into a scannable QR code.
⚠️ Wait until you get the order status "ready for pickup".

❓You want to give out the pickup code immediately to the customer?
➡️ Convert the pickup code into a scannable QR code and print it out for your patient.
🤓 Don't forget to tell the patient when they can pick it up.

❓You want to print out a storage label to store the articles in the storage robot?
➡️ Convert the storage code into scannable DataMatrix code and print it on a label which a pharmacist can stick onto the articles to input into the storage robot.
🤓 If the pharmacists needs to check these articles (by hand) before releasing to the patient this has to be mandatory done by the BD Rowa pickup cloud web interface or implemented by you.


Next Step

➡️ Get Pickup Status