## Create ship-to

### cURL

```bash
curl --request POST \
  --url https://prod01-apigw.yourcompany.fabric.zone/api-cart/ship-to/cart/{cartId} \
  --header 'Content-Type: application/json' \
  --header 'x-site-context: <x-site-context>' \
  --data '
{
  "shipToType": "SHIP_TO_ADDRESS",
  "shipMethod": {
    "shipMethodId": "1a2b3c4d5e6f7g8h9i0j",
    "cost": {
      "currency": "USD",
      "amount": 5.99
    },
    "shipmentCarrier": "Fedex",
    "shipmentMethod": "Next Day"
  },
  "address": {
    "street1": "123 Main Street",
    "city": "Seattle",
    "state": "WA",
    "country": "United States of America",
    "zipCode": "10008-1234",
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc",
    "attention": "Leave at the back door.",
    "street2": "ABC Boulevard",
    "kind": "TBD"
  },
  "warehouseId": "123456abcdef123456abcdef",
  "isPickup": true,
  "taxCode": "FR1000",
  "storeId": "TBD",
  "pickupPerson": {
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc"
  },
  "altPickupPerson": {
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc"
  }
}
'
```

### Python Example

```python
import requests

url = "https://prod01-apigw.yourcompany.fabric.zone/api-cart/ship-to/cart/{cartId}"

payload = {
    "shipToType": "SHIP_TO_ADDRESS",
    "shipMethod": {
        "shipMethodId": "1a2b3c4d5e6f7g8h9i0j",
        "cost": {
            "currency": "USD",
            "amount": 5.99
        },
        "shipmentCarrier": "Fedex",
        "shipmentMethod": "Next Day"
    },
    "address": {
        "street1": "123 Main Street",
        "city": "Seattle",
        "state": "WA",
        "country": "United States of America",
        "zipCode": "10008-1234",
        "name": {
            "first": "John",
            "last": "Smith"
        },
        "email": "johnsmith@fabric.inc",
        "attention": "Leave at the back door.",
        "street2": "ABC Boulevard",
        "kind": "TBD"
    },
    "warehouseId": "123456abcdef123456abcdef",
    "isPickup": True,
    "taxCode": "FR1000",
    "storeId": "TBD",
    "pickupPerson": {
        "name": {
            "first": "John",
            "last": "Smith"
        },
        "email": "johnsmith@fabric.inc"
    },
    "altPickupPerson": {
        "name": {
            "first": "John",
            "last": "Smith"
        },
        "email": "johnsmith@fabric.inc"
    }
}
headers = {
    "x-site-context": "<x-site-context>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

### JavaScript Fetch Example

```javascript
const options = {
  method: 'POST',
  headers: {'x-site-context': '<x-site-context>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    shipToType: 'SHIP_TO_ADDRESS',
    shipMethod: {
      shipMethodId: '1a2b3c4d5e6f7g8h9i0j',
      cost: {currency: 'USD', amount: 5.99},
      shipmentCarrier: 'Fedex',
      shipmentMethod: 'Next Day'
    },
    address: {
      street1: '123 Main Street',
      city: 'Seattle',
      state: 'WA',
      country: 'United States of America',
      zipCode: '10008-1234',
      name: {first: 'John', last: 'Smith'},
      email: 'johnsmith@fabric.inc',
      attention: 'Leave at the back door.',
      street2: 'ABC Boulevard',
      kind: 'TBD'
    },
    warehouseId: '123456abcdef123456abcdef',
    isPickup: true,
    taxCode: 'FR1000',
    storeId: 'TBD',
    pickupPerson: {name: {first: 'John', last: 'Smith'}, email: 'johnsmith@fabric.inc'},
    altPickupPerson: {name: {first: 'John', last: 'Smith'}, email: 'johnsmith@fabric.inc'}
  })
};

fetch('https://prod01-apigw.yourcompany.fabric.zone/api-cart/ship-to/cart/{cartId}', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
```

### PHP Example

```php
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://prod01-apigw.yourcompany.fabric.zone/api-cart/ship-to/cart/{cartId}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POSTFIELDS => json_encode([
    'shipToType' => 'SHIP_TO_ADDRESS',
    'shipMethod' => [
        'shipMethodId' => '1a2b3c4d5e6f7g8h9i0j',
        'cost' => [
            'currency' => 'USD',
            'amount' => 5.99
        ],
        'shipmentCarrier' => 'Fedex',
        'shipmentMethod' => 'Next Day'
    ],
    'address' => [
        'street1' => '123 Main Street',
        'city' => 'Seattle',
        'state' => 'WA',
        'country' => 'United States of America',
        'zipCode' => '10008-1234',
        'name' => [
            'first' => 'John',
            'last' => 'Smith'
        ],
        'email' => 'johnsmith@fabric.inc',
        'attention' => 'Leave at the back door.',
        'street2' => 'ABC Boulevard',
        'kind' => 'TBD'
    ],
    'warehouseId' => '123456abcdef123456abcdef',
    'isPickup' => true,
    'taxCode' => 'FR1000',
    'storeId' => 'TBD',
    'pickupPerson' => [
        'name' => [
            'first' => 'John',
            'last' => 'Smith'
        ],
        'email' => 'johnsmith@fabric.inc'
    ],
    'altPickupPerson' => [
        'name' => [
            'first' => 'John',
            'last' => 'Smith'
        ],
        'email' => 'johnsmith@fabric.inc'
    ],
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "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 Example

```go
package main

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

func main() {

url := "https://prod01-apigw.yourcompany.fabric.zone/api-cart/ship-to/cart/{cartId}"

payload := strings.NewReader(`{
  "shipToType": "SHIP_TO_ADDRESS",
  "shipMethod": {
    "shipMethodId": "1a2b3c4d5e6f7g8h9i0j",
    "cost": {
      "currency": "USD",
      "amount": 5.99
    },
    "shipmentCarrier": "Fedex",
    "shipmentMethod": "Next Day"
  },
  "address": {
    "street1": "123 Main Street",
    "city": "Seattle",
    "state": "WA",
    "country": "United States of America",
    "zipCode": "10008-1234",
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc",
    "attention": "Leave at the back door.",
    "street2": "ABC Boulevard",
    "kind": "TBD"
  },
  "warehouseId": "123456abcdef123456abcdef",
  "isPickup": true,
  "taxCode": "FR1000",
  "storeId": "TBD",
  "pickupPerson": {
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc"
  },
  "altPickupPerson": {
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc"
  }
}`)

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-site-context", "<x-site-context>")
	req.Header.Add("Content-Type", "application/json")

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

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

fmt.Println(string(body))
}
```

### Responses

#### Successful Response

```json
{
  "shipToType": "SHIP_TO_ADDRESS",
  "warehouseId": "123456abcdef123456abcdef",
  "isPickup": true,
  "shipMethod": {
    "shipMethodId": "1a2b3c4d5e6f7g8h9i0j",
    "cost": {
      "currency": "USD",
      "amount": 5.99
    },
    "shipmentCarrier": "Fedex",
    "shipmentMethod": "Next Day"
  },
  "taxCode": "FR1000",
  "storeId": "TBD",
  "pickupPerson": {
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc"
  },
  "altPickupPerson": {
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc"
  },
  "address": {
    "attention": "Leave at the back door.",
    "street1": "123 Main Street",
    "street2": "ABC Boulevard",
    "city": "Seattle",
    "state": "WA",
    "country": "United States of America",
    "zipCode": "10008-1234",
    "kind": "TBD",
    "name": {
      "first": "John",
      "last": "Smith"
    },
    "email": "johnsmith@fabric.inc"
  },
  "cartId": "5e5818a84d030c206b2ffb02",
  "shipToId": 13812,
  "_id": "5fee9d59f2f08a1b3cbdea08",
  "createdAt": "2020-12-31T02:09:53.914Z",
  "updatedAt": "2020-12-31T02:09:53.914Z"
}
```

#### Error Responses

```json
{
  "code": "CART_NOT_FOUND",
  "message": "Cart not found."
}
```

### Headers

- **x-site-context**: A JSON object with source information that includes mandatory fields such as `account`, variably `channel`, `stage`, and `date` for the request. Example:

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