## Get order draft by ID

### cURL

curl --request GET \
      --url https://prod.cart.fabric.inc/v2/order-drafts/{id} \
      --header 'x-site-context: <x-site-context>'

### Python

import requests

url = "https://prod.cart.fabric.inc/v2/order-drafts/{id}"

headers = {"x-site-context": "<x-site-context>"}

response = requests.get(url, headers=headers)

print(response.text)

### JavaScript (Fetch API)

const options = {method: 'GET', headers: {'x-site-context': '<x-site-context>'}};

fetch('https://prod.cart.fabric.inc/v2/order-drafts/{id}', options)
      .then(res => res.json())
      .then(res => console.log(res))
      .catch(err => console.error(err));

### PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, [
      CURLOPT_URL => "https://prod.cart.fabric.inc/v2/order-drafts/{id}",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "GET",
      CURLOPT_HTTPHEADER => [
        "x-site-context: <x-site-context>"
      ],
    ]);

$response = curl_exec($curl);
    $err = curl_error($curl);

curl_close($curl);

if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }
    ?>

### Go

package main

import (
        "fmt"
        "net/http"
        "io"
    )

func main() {
        url := "https://prod.cart.fabric.inc/v2/order-drafts/{id}"

req, _ := http.NewRequest("GET", url, nil)
        req.Header.Add("x-site-context", "<x-site-context>")

res, _ := http.DefaultClient.Do(req)
        defer res.Body.Close()

body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))
    }

### Java (Unirest)

HttpResponse<String> response = Unirest.get("https://prod.cart.fabric.inc/v2/order-drafts/{id}")
      .header("x-site-context", "<x-site-context>")
      .asString();

### Ruby

require 'uri'
    require 'net/http'

url = URI("https://prod.cart.fabric.inc/v2/order-drafts/{id}")

http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true

request = Net::HTTP::Get.new(url)
    request["x-site-context"] = '<x-site-context>'

response = http.request(request)
    puts response.read_body

### Possible Responses

**200** - Ok

```json
{
  "cartId": "b8a64b52-dab4-8137-8d6a-f2c2337abc1",
  "orderStatus": {
    "paymentStatus": "<unknown>",
    "ready": true
  },
  "orderTotal": 60,
  "orderSubTotal": 60,
  "taxTotal": 60,
  "orderDiscount": 60,
  "currency": "USD",
  "createdAt": "2022-02-18T15:12:40.974580",
  "items": [
    {
      "itemId": "1000000001",
      "sku": "16B2GS8LD5FDS",
      ...
    }
  ],
  ...
}
```

**400** - Bad Request

```json
{
  "code": "Bad Request",
  "message": "User ID or Cart ID does not exist"
}
```

**404** - Not Found

```json
{
  "type": "NOT_FOUND",
  "message": "Order draft not found"
}
```

**500** - Internal Server Error

```json
{
  "code": "Internal Server Error",
  "message": "An internal error occurred. If the issue persists please contact support@fabric.inc."
}
```

### Headers

#### x-site-context

- **Type**: string
- **Required**: Yes

The `x-site-context` header is a JSON object that contains information about the source you wish to pull from. The mandatory `account` is the 24 character identifier found in Copilot. The `channel` (Sales channel ID), `stage` (environment name), and `date` attributes can be used to further narrow the scope of your data source.

**Example**:

``n"{\"date\": \"2023-01-01T00:00:00.000Z\", \"channel\": 12, \"account\": \"1234abcd5678efgh9ijklmno\",\"stage\":\"production\"}"
```

### Path Parameters

#### id

- **Type**: string
- **Required**: Yes

Order draft ID

**Example**:

``n"d7e78a21-bee3-4448-bf1c-d5b5461dbda2"`

### Response Structure

- **cartId**: Cart ID
- **orderStatus**: Order status details
- **orderTotal**: Total amount
- **orderSubTotal**: Amount without discounts
- **taxTotal**: Total tax
- **orderDiscount**: Total discount
- **currency**: Currency code
- **createdAt**: Creation timestamp
- **items**: Array of items in the order
- **shipInfo**: Shipping information
- **orderNumber**: Order number (if applicable)
- **orderType**: Type of order
- **orderSubType**: Sub-type of order
- **customer**: Customer details
- **attributes**: Additional attributes
- **payments**: Payment details
- **accountId**: Customer account ID
- **totalItems**: Total number of items
- **totalUniqueItems**: Number of unique items
- **configuration**: Cart configuration
- **fees**: Associated fees
- **orderTotalFees**: Total fees applied
- **error**: Error object if applicable.
