Get, set, order
Three API requests - that's all it takes to order from Amazon Business straight from your terminal. In this tutorial, we'll walk you through how to make that happen.
No technical knowledge required! You'll just need a system with Mac or Linux. If you can open the terminal app on your computer, you can run through this tutorial!
Here's a video walkthrough of how it works:
Three API requests - that's all it takes to order from Amazon Business straight from your terminal. In this tutorial, we'll walk you through how to make that happen.
No technical knowledge required! You'll just need a system with Mac or Linux. If you can open the terminal app on your computer, you can run through this tutorial!
Here's a video walkthrough of how it works:
Three API requests - that's all it takes to order from Amazon Business straight from your terminal. In this tutorial, we'll walk you through how to make that happen.
No technical knowledge required! You'll just need a system with Mac or Linux. If you can open the terminal app on your computer, you can run through this tutorial!
Here's a video walkthrough of how it works:
Step 1: Input all the fields below
We built the marketplace on Medusa JS, an open-source Shopify. It enables composable, headless, and hyper-customizable eCommerce through community architecture. MedusaJS consists of 3 parts: the backend, the admin panel, and the storefront.
We built the marketplace on Medusa JS, an open-source Shopify. It enables composable, headless, and hyper-customizable eCommerce through community architecture. MedusaJS consists of 3 parts: the backend, the admin panel, and the storefront.
We built the marketplace on Medusa JS, an open-source Shopify. It enables composable, headless, and hyper-customizable eCommerce through community architecture. MedusaJS consists of 3 parts: the backend, the admin panel, and the storefront.
1RYE_API_KEY='Basic UllZlWVjYTlhZnU0NjIOYrQwNZgiMWk1Og=='
2RYE_SHOPPER_IP='184.13.22.47'
3RYE_CARD_TOKENIZATION_SECRET='Basic 5CVTNWcDB2M0dXYWFBaDNxdjJXaDF3dTU0eXE1Y2OOd21xzUU0bBFIeEpGNllUWXE='
5CREATE_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \
6 -H 'Content-Type: application/json' \
7 -H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \
8 -H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \
10 "query": "mutation (<span style="color: #9cdcfe">$input:</span> CartCreateInput!) { createCart(input: <span style="color: #9cdcfe">$input)</span> { cart { id } errors { code message } } }",
14 "amazonCartItemsInput": [{
16 "productId": "B004WVZ3"
22 "email": "dev@rye.com",
23 "phone": "+15555555555",
24 "address1": "123 Main St",
36CART_ID=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"id":"\([^"]*\)".*/\1/p')
37ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')
39<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$CART_ID"</span> ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>
40 <span style="color: #569cd6">echo</span> '✅ Cart successfully created!'
41<span style="color: #569cd6">else</span>
42 <span style="color: #569cd6">echo</span> '❌ Error: Unable to fetch CART_ID.'
43 <span style="color: #569cd6">echo</span> 'Response from server:'
44 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span>
45<span style="color: #569cd6">fi</span>
47CARD_TOKENIZATION_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://core.spreedly.com/v1/payment_methods.json' \
48 -H "Authorization: <span style="color: #9cdcfe">$RYE_CARD_TOKENIZATION_SECRET"</span> \
49 -H 'Content-Type: application/json' \
55 "number": "4111111111111111",
56 "verification_value": "123",
65PAYMENT_METHOD_TOKEN=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span> | sed -n 's/.*"payment_method":{"token":"\([^"]*\)".*/\1/p')
67<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span> ]; <span style="color: #569cd6">then</span>
68 <span style="color: #569cd6">echo</span> '✅ Card successfully tokenized!'
69<span style="color: #569cd6">else</span>
70 <span style="color: #569cd6">echo</span> "❌ Error: Unable to fetch PAYMENT_METHOD_TOKEN."
71 <span style="color: #569cd6">echo</span> 'Response from server:'
72 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span>
73<span style="color: #569cd6">fi</span>
75SUBMIT_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \
76-H 'Content-Type: application/json' \
77-H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \
78-H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \
79-d "<span style="color: #9cdcfe">$(cat</span> <<EOF
81 "query": "mutation (\<span style="color: #9cdcfe">$input:</span> CartSubmitInput!) { submitCart(input: \<span style="color: #9cdcfe">$input)</span> { cart { id stores { isSubmitted errors { code message } } } errors { code message } } }",
84 "id": "<span style="color: #9cdcfe">$CART_ID",</span>
85 "token": "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span>
92IS_SUBMITTED=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"isSubmitted":\([^,]*\).*/\1/p')
93ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')
95<span style="color: #569cd6">if</span> [ "<span style="color: #9cdcfe">$IS_SUBMITTED"</span> = "true" ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>
96 <span style="color: #569cd6">echo</span> '🎉 Hooray! You ordered an Amazon product from your terminal!'
97 <span style="color: #569cd6">echo</span> 'You can view your order on https://console.rye.com/orders'
98<span style="color: #569cd6">else</span>
99 <span style="color: #569cd6">echo</span> '❌ Error! Unable to submit cart.'
100 <span style="color: #569cd6">echo</span> 'Response from server:'
101 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span>
102<span style="color: #569cd6">fi</span>
1RYE_API_KEY='Basic UllZlWVjYTlhZnU0NjIOYrQwNZgiMWk1Og=='
2RYE_SHOPPER_IP='184.13.22.47'
3RYE_CARD_TOKENIZATION_SECRET='Basic 5CVTNWcDB2M0dXYWFBaDNxdjJXaDF3dTU0eXE1Y2OOd21xzUU0bBFIeEpGNllUWXE='
5CREATE_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \
6 -H 'Content-Type: application/json' \
7 -H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \
8 -H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \
10 "query": "mutation (<span style="color: #9cdcfe">$input:</span> CartCreateInput!) { createCart(input: <span style="color: #9cdcfe">$input)</span> { cart { id } errors { code message } } }",
14 "amazonCartItemsInput": [{
16 "productId": "B004WVZ3"
22 "email": "dev@rye.com",
23 "phone": "+15555555555",
24 "address1": "123 Main St",
36CART_ID=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"id":"\([^"]*\)".*/\1/p')
37ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')
39<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$CART_ID"</span> ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>
40 <span style="color: #569cd6">echo</span> '✅ Cart successfully created!'
41<span style="color: #569cd6">else</span>
42 <span style="color: #569cd6">echo</span> '❌ Error: Unable to fetch CART_ID.'
43 <span style="color: #569cd6">echo</span> 'Response from server:'
44 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span>
45<span style="color: #569cd6">fi</span>
47CARD_TOKENIZATION_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://core.spreedly.com/v1/payment_methods.json' \
48 -H "Authorization: <span style="color: #9cdcfe">$RYE_CARD_TOKENIZATION_SECRET"</span> \
49 -H 'Content-Type: application/json' \
55 "number": "4111111111111111",
56 "verification_value": "123",
65PAYMENT_METHOD_TOKEN=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span> | sed -n 's/.*"payment_method":{"token":"\([^"]*\)".*/\1/p')
67<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span> ]; <span style="color: #569cd6">then</span>
68 <span style="color: #569cd6">echo</span> '✅ Card successfully tokenized!'
69<span style="color: #569cd6">else</span>
70 <span style="color: #569cd6">echo</span> "❌ Error: Unable to fetch PAYMENT_METHOD_TOKEN."
71 <span style="color: #569cd6">echo</span> 'Response from server:'
72 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span>
73<span style="color: #569cd6">fi</span>
75SUBMIT_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \
76-H 'Content-Type: application/json' \
77-H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \
78-H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \
79-d "<span style="color: #9cdcfe">$(cat</span> <<EOF
81 "query": "mutation (\<span style="color: #9cdcfe">$input:</span> CartSubmitInput!) { submitCart(input: \<span style="color: #9cdcfe">$input)</span> { cart { id stores { isSubmitted errors { code message } } } errors { code message } } }",
84 "id": "<span style="color: #9cdcfe">$CART_ID",</span>
85 "token": "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span>
92IS_SUBMITTED=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"isSubmitted":\([^,]*\).*/\1/p')
93ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')
95<span style="color: #569cd6">if</span> [ "<span style="color: #9cdcfe">$IS_SUBMITTED"</span> = "true" ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>
96 <span style="color: #569cd6">echo</span> '🎉 Hooray! You ordered an Amazon product from your terminal!'
97 <span style="color: #569cd6">echo</span> 'You can view your order on https://console.rye.com/orders'
98<span style="color: #569cd6">else</span>
99 <span style="color: #569cd6">echo</span> '❌ Error! Unable to submit cart.'
100 <span style="color: #569cd6">echo</span> 'Response from server:'
101 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span>
102<span style="color: #569cd6">fi</span>
1RYE_API_KEY='Basic UllZlWVjYTlhZnU0NjIOYrQwNZgiMWk1Og=='
2RYE_SHOPPER_IP='184.13.22.47'
3RYE_CARD_TOKENIZATION_SECRET='Basic 5CVTNWcDB2M0dXYWFBaDNxdjJXaDF3dTU0eXE1Y2OOd21xzUU0bBFIeEpGNllUWXE='
5CREATE_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \
6 -H 'Content-Type: application/json' \
7 -H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \
8 -H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \
10 "query": "mutation (<span style="color: #9cdcfe">$input:</span> CartCreateInput!) { createCart(input: <span style="color: #9cdcfe">$input)</span> { cart { id } errors { code message } } }",
14 "amazonCartItemsInput": [{
16 "productId": "B004WVZ3"
22 "email": "dev@rye.com",
23 "phone": "+15555555555",
24 "address1": "123 Main St",
36CART_ID=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"id":"\([^"]*\)".*/\1/p')
37ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')
39<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$CART_ID"</span> ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>
40 <span style="color: #569cd6">echo</span> '✅ Cart successfully created!'
41<span style="color: #569cd6">else</span>
42 <span style="color: #569cd6">echo</span> '❌ Error: Unable to fetch CART_ID.'
43 <span style="color: #569cd6">echo</span> 'Response from server:'
44 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span>
45<span style="color: #569cd6">fi</span>
47CARD_TOKENIZATION_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://core.spreedly.com/v1/payment_methods.json' \
48 -H "Authorization: <span style="color: #9cdcfe">$RYE_CARD_TOKENIZATION_SECRET"</span> \
49 -H 'Content-Type: application/json' \
55 "number": "4111111111111111",
56 "verification_value": "123",
65PAYMENT_METHOD_TOKEN=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span> | sed -n 's/.*"payment_method":{"token":"\([^"]*\)".*/\1/p')
67<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span> ]; <span style="color: #569cd6">then</span>
68 <span style="color: #569cd6">echo</span> '✅ Card successfully tokenized!'
69<span style="color: #569cd6">else</span>
70 <span style="color: #569cd6">echo</span> "❌ Error: Unable to fetch PAYMENT_METHOD_TOKEN."
71 <span style="color: #569cd6">echo</span> 'Response from server:'
72 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span>
73<span style="color: #569cd6">fi</span>
75SUBMIT_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \
76-H 'Content-Type: application/json' \
77-H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \
78-H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \
79-d "<span style="color: #9cdcfe">$(cat</span> <<EOF
81 "query": "mutation (\<span style="color: #9cdcfe">$input:</span> CartSubmitInput!) { submitCart(input: \<span style="color: #9cdcfe">$input)</span> { cart { id stores { isSubmitted errors { code message } } } errors { code message } } }",
84 "id": "<span style="color: #9cdcfe">$CART_ID",</span>
85 "token": "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span>
92IS_SUBMITTED=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"isSubmitted":\([^,]*\).*/\1/p')
93ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')
95<span style="color: #569cd6">if</span> [ "<span style="color: #9cdcfe">$IS_SUBMITTED"</span> = "true" ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>
96 <span style="color: #569cd6">echo</span> '🎉 Hooray! You ordered an Amazon product from your terminal!'
97 <span style="color: #569cd6">echo</span> 'You can view your order on https://console.rye.com/orders'
98<span style="color: #569cd6">else</span>
99 <span style="color: #569cd6">echo</span> '❌ Error! Unable to submit cart.'
100 <span style="color: #569cd6">echo</span> 'Response from server:'
101 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span>
102<span style="color: #569cd6">fi</span>
Step 2: Run the commands in terminal
We built the marketplace on Medusa JS, an open-source Shopify. It enables composable, headless, and hyper-customizable eCommerce through community architecture. MedusaJS consists of 3 parts: the backend, the admin panel, and the storefront.
✅ Cart successfully created!
✅ Card successfully tokenized!
🎉 Hooray! You ordered an Amazon Business product from your terminal!
You can view your order on https://console.rye.com/ordersWe built the marketplace on Medusa JS, an open-source Shopify. It enables composable, headless, and hyper-customizable eCommerce through community architecture. MedusaJS consists of 3 parts: the backend, the admin panel, and the storefront.
✅ Cart successfully created!
✅ Card successfully tokenized!
🎉 Hooray! You ordered an Amazon Business product from your terminal!
You can view your order on https://console.rye.com/ordersWe built the marketplace on Medusa JS, an open-source Shopify. It enables composable, headless, and hyper-customizable eCommerce through community architecture. MedusaJS consists of 3 parts: the backend, the admin panel, and the storefront.
✅ Cart successfully created!
✅ Card successfully tokenized!
🎉 Hooray! You ordered an Amazon Business product from your terminal!
You can view your order on https://console.rye.com/orders