· 7 years ago · Dec 22, 2017, 03:40 AM
1swagger: '2.0'
2info:
3 title: 'Shoppy API'
4 description: 'shoppy.mn REST API gateway for catalog, cart, checkout, order, shipping, customer etc.'
5 version: "1.0.0"
6 contact:
7 email: gundee@pantera.mn
8consumes:
9 - application/json
10produces:
11 - application/json
12 - image/jpeg
13 - image/png
14basePath: /api/v1
15schemes:
16 - https
17paths:
18 /manifest:
19 get:
20 operationId: getManifest
21 summary: Get app manifest file
22 description: Returns application metadata configuration
23 tags:
24 - meta
25 schemes:
26 - https
27 - http
28 responses:
29 '200':
30 description: Manifest is found and returned in the body
31 schema:
32 $ref: '#/definitions/Manifest'
33 '429':
34 $ref: '#/responses/ErrorTooManyRequests'
35 '500':
36 $ref: '#/responses/ErrorServerError'
37 '503':
38 $ref: '#/responses/ErrorUnavailable'
39 /ping:
40 get:
41 operationId: ping
42 summary: Ping endpoint for availability monitoring
43 description: Returns simple pong reponse for availability monitoring purposes
44 tags:
45 - meta
46 schemes:
47 - https
48 - http
49 responses:
50 '200':
51 description: Pong
52 schema:
53 type: object
54 properties:
55 ping:
56 type: string
57 '429':
58 $ref: '#/responses/ErrorTooManyRequests'
59 '500':
60 $ref: '#/responses/ErrorServerError'
61 '503':
62 $ref: '#/responses/ErrorUnavailable'
63 '/catalog/product/{sku}':
64 get:
65 operationId: getProduct
66 summary: Get product by SKU
67 description: Returns a product document by its configurable SKU
68 tags:
69 - catalog
70 schemes:
71 - https
72 - http
73 parameters:
74 - name: sku
75 in: path
76 description: Product SKU. Must be a configurable SKU
77 required: true
78 type: string
79 responses:
80 '200':
81 description: Product is found and project entity is returned in the response body
82 schema:
83 $ref: '#/definitions/Product'
84 '404':
85 $ref: '#/responses/ErrorNotFound'
86 '429':
87 $ref: '#/responses/ErrorTooManyRequests'
88 '500':
89 $ref: '#/responses/ErrorServerError'
90 '503':
91 $ref: '#/responses/ErrorUnavailable'
92 '/catalog/browse/{category_id}':
93 get:
94 operationId: browseByCategory
95 summary: Get products by category
96 description: 'Returns list of product documents associated with specified category id and facets of categories, price ranges, size curves and colours available'
97 tags:
98 - catalog
99 schemes:
100 - https
101 - http
102 parameters:
103 - name: category_id
104 in: path
105 description: Category Id to get products by
106 required: true
107 type: integer
108 format: int32
109 default: 2
110 - name: order
111 in: query
112 description: Field to order by
113 required: false
114 type: string
115 default: ''
116 enum:
117 - ''
118 - relevance
119 - latest
120 - price
121 - name
122 - name: dir
123 in: query
124 description: Order ascending/descending
125 required: false
126 type: string
127 default: ''
128 enum:
129 - ''
130 - asc
131 - desc
132 - name: brand
133 in: query
134 description: Brand id to filter by. Derived from the brand facet array included in all category and search responses
135 required: false
136 type: string
137 - name: color
138 in: query
139 description: Color id to filter by. Derived from the color facet array included in all category and search responses
140 required: false
141 type: string
142 - name: price
143 in: query
144 description: Price range to filter by. Derived from the prices facet array included in all category and search responses
145 required: false
146 type: string
147 default: ''
148 - name: size
149 in: query
150 description: Size id to filter by. Derived from the size facet array included in most category and search responses. Sometimes excluded in broader categories
151 required: false
152 type: string
153 - name: p
154 in: query
155 description: Indicates the page number. 48 products per page. Clients expected to manage pagination state (for time being)
156 required: false
157 type: integer
158 format: int32
159 default: 1
160 responses:
161 '200':
162 description: Matching products found
163 schema:
164 $ref: '#/definitions/ProductResultSet'
165 '404':
166 $ref: '#/responses/ErrorNotFound'
167 '429':
168 $ref: '#/responses/ErrorTooManyRequests'
169 '500':
170 $ref: '#/responses/ErrorServerError'
171 '502':
172 $ref: '#/responses/ErrorBadGateway'
173 '503':
174 $ref: '#/responses/ErrorUnavailable'
175 /catalog/search-trends:
176 get:
177 operationId: searchTrends
178 summary: Get a list of search trends
179 description: Get a list of random search terms
180 tags:
181 - catalog
182 schemes:
183 - https
184 - http
185 responses:
186 '200':
187 description: Successful request.
188 schema:
189 $ref: '#/definitions/SearchTrends'
190 '404':
191 $ref: '#/responses/ErrorNotFound'
192 '429':
193 $ref: '#/responses/ErrorTooManyRequests'
194 '500':
195 $ref: '#/responses/ErrorServerError'
196 '502':
197 $ref: '#/responses/ErrorBadGateway'
198 '503':
199 $ref: '#/responses/ErrorUnavailable'
200 /catalog/search:
201 get:
202 operationId: search
203 summary: Search catalog for matching products
204 description: 'Returns list of product documents via full-text query and facets of categories, price ranges, size curves and colours available'
205 tags:
206 - catalog
207 schemes:
208 - https
209 - http
210 parameters:
211 - name: q
212 in: query
213 description: Search phrase
214 required: true
215 type: string
216 - name: cat
217 in: query
218 description: Category Id to filter search result by
219 required: true
220 type: integer
221 format: int32
222 default: 2
223 - name: order
224 in: query
225 description: Field to order by
226 required: false
227 type: string
228 default: ''
229 enum:
230 - ''
231 - relevance
232 - price
233 - name
234 - name: dir
235 in: query
236 description: Order ascending/descending
237 required: false
238 type: string
239 default: ''
240 enum:
241 - ''
242 - asc
243 - desc
244 - name: brand
245 in: query
246 description: Brand id to filter by. Derived from the brand facet array included in all category and search responses
247 required: false
248 type: string
249 - name: color
250 in: query
251 description: Color id to filter by. Derived from the color facet array included in all category and search responses
252 required: false
253 type: string
254 - name: price
255 in: query
256 description: Price range to filter by. Derived from the prices facet array included in all category and search responses
257 required: false
258 type: string
259 default: ''
260 - name: size
261 in: query
262 description: Size id to filter by. Derived from the size facet array included in most category and search responses. Sometimes excluded in broader categories
263 required: false
264 type: string
265 - name: p
266 in: query
267 description: Indicates the page number. 48 products per page. Clients expected to manage pagination state (for time being)
268 required: false
269 type: integer
270 format: int32
271 default: 1
272 responses:
273 '200':
274 description: Successful request.
275 schema:
276 $ref: '#/definitions/ProductResultSet'
277 '404':
278 $ref: '#/responses/ErrorNotFound'
279 '429':
280 $ref: '#/responses/ErrorTooManyRequests'
281 '500':
282 $ref: '#/responses/ErrorServerError'
283 '502':
284 $ref: '#/responses/ErrorBadGateway'
285 '503':
286 $ref: '#/responses/ErrorUnavailable'
287 '/catalog/more-like-this/{sku}':
288 get:
289 operationId: moreLikeThis
290 summary: Find similar products by SKU
291 description: Returns a product document by its configurable SKU
292 tags:
293 - catalog
294 schemes:
295 - https
296 - http
297 parameters:
298 - name: sku
299 in: path
300 description: Product SKU. Must be a configurable SKU
301 required: true
302 type: string
303 - name: limit
304 in: query
305 description: Maximum number of matches to return
306 required: false
307 type: integer
308 default: 10
309 responses:
310 '200':
311 description: Successful request.
312 schema:
313 $ref: '#/definitions/MoreLikeThisResultSet'
314 '404':
315 $ref: '#/responses/ErrorNotFound'
316 '429':
317 $ref: '#/responses/ErrorTooManyRequests'
318 '500':
319 $ref: '#/responses/ErrorServerError'
320 '502':
321 $ref: '#/responses/ErrorBadGateway'
322 '503':
323 $ref: '#/responses/ErrorUnavailable'
324 '/catalog/product/thumbnail/{sku}/{type}/{size}{file}':
325 get:
326 operationId: getThumbnail
327 summary: Get product image thumbail
328 description: Returns a product document by its configurable SKU
329 tags:
330 - catalog
331 schemes:
332 - https
333 - http
334 produces:
335 - image/jpeg
336 - image/png
337 parameters:
338 - name: sku
339 in: path
340 description: Product SKU. Must be a configurable SKU
341 required: true
342 type: string
343 - name: type
344 in: path
345 description: Thumbnail type as managed by Mage Catalog backoffice UI eg. small_image
346 required: true
347 type: string
348 enum:
349 - small_image
350 - hover_image
351 - image
352 - thumbnail
353 - product_upsell_color_image
354 - name: size
355 in: path
356 description: 'Image dimensions eg. 100x100. Note: there is a whitelist of allowable values'
357 required: true
358 type: string
359 enum:
360 - 53x73
361 - 76x102
362 - 140x190
363 - 206x284
364 - 345x464
365 - 600x820
366 - 1200x
367 - name: file
368 in: path
369 description: "Mage filesystem URI for the image. I know it's lame eg. /s/c/sc1402oct30pictga10100.jpg"
370 required: true
371 type: string
372 responses:
373 '200':
374 description: Successful request. An image will be sent. Promise.
375 '400':
376 $ref: '#/responses/ErrorBadRequest'
377 '404':
378 $ref: '#/responses/ErrorNotFound'
379 '429':
380 $ref: '#/responses/ErrorTooManyRequests'
381 '500':
382 $ref: '#/responses/ErrorServerError'
383 '502':
384 $ref: '#/responses/ErrorBadGateway'
385 '503':
386 $ref: '#/responses/ErrorUnavailable'
387 /catalog/brands:
388 get:
389 operationId: listBrands
390 summary: Get a list of brands
391 description: Get a brands that have products
392 tags:
393 - catalog
394 schemes:
395 - https
396 - http
397 responses:
398 '200':
399 description: Successful request.
400 schema:
401 $ref: '#/definitions/Brands'
402 '429':
403 $ref: '#/responses/ErrorTooManyRequests'
404 '500':
405 $ref: '#/responses/ErrorServerError'
406 '502':
407 $ref: '#/responses/ErrorBadGateway'
408 '503':
409 $ref: '#/responses/ErrorUnavailable'
410 '/catalog/brand/{brand_id}':
411 get:
412 operationId: browseByBrandId
413 summary: Get products by brand
414 description: 'Returns list of product documents associated with specified brand id and facets of categories, price ranges, size curves and colours available'
415 tags:
416 - catalog
417 schemes:
418 - https
419 - http
420 parameters:
421 - name: brand_id
422 in: path
423 description: Brand Id to get products by
424 required: true
425 type: integer
426 format: int32
427 - name: order
428 in: query
429 description: Field to order by
430 required: false
431 type: string
432 default: ''
433 enum:
434 - ''
435 - relevance
436 - latest
437 - price
438 - name
439 - name: dir
440 in: query
441 description: Order ascending/descending
442 required: false
443 type: string
444 default: ''
445 enum:
446 - ''
447 - asc
448 - desc
449 - name: color
450 in: query
451 description: Color id to filter by. Derived from the color facet array included in all category and search responses
452 required: false
453 type: string
454 - name: price
455 in: query
456 description: Price range to filter by. Derived from the prices facet array included in all category and search responses
457 required: false
458 type: string
459 default: ''
460 - name: size
461 in: query
462 description: Size id to filter by. Derived from the size facet array included in most category and search responses. Sometimes excluded in broader categories
463 required: false
464 type: string
465 - name: p
466 in: query
467 description: Indicates the page number. 48 products per page. Clients expected to manage pagination state (for time being)
468 required: false
469 type: integer
470 format: int32
471 default: 1
472 responses:
473 '200':
474 description: Matching products found
475 schema:
476 $ref: '#/definitions/ProductResultSet'
477 '404':
478 $ref: '#/responses/ErrorNotFound'
479 '429':
480 $ref: '#/responses/ErrorTooManyRequests'
481 '500':
482 $ref: '#/responses/ErrorServerError'
483 '502':
484 $ref: '#/responses/ErrorBadGateway'
485 '503':
486 $ref: '#/responses/ErrorUnavailable'
487 /checkout/shipping:
488 patch:
489 tags:
490 - checkout
491 summary: Modify a writable checkout shipping field
492 description: Used to modify a writable checkout field eg. shipping/shipping_address_id. This method is idempotent. Only one field can be updated per call (except for Pargo). On success a full representation of the Checkout entity is returned. Please note Pargo fields are required if setting the shipping method to Pargo.
493 operationId: setShippingOption
494 consumes:
495 - application/x-www-form-urlencoded
496 produces:
497 - application/json
498 schemes:
499 - https
500 parameters:
501 - name: shipping_address_id
502 in: formData
503 description: Customer address id to set as the shipping address
504 required: false
505 type: integer
506 - name: shipping_method_code
507 in: formData
508 description: Shipping method code to set as the shipping method. For Pargo shipping method set the pargo relevant fields as noted below.
509 required: false
510 type: string
511 - name: billing_address_id
512 in: formData
513 description: Customer address id to set as the billing address
514 required: false
515 type: integer
516 - name: instructions
517 in: formData
518 description: "Free text field for capturing special shipping instructions eg. don't open the gate. pls ring doorbell. i have a vicious poodle"
519 required: false
520 type: string
521 - name: billing_same_as_shipping
522 in: formData
523 description: Set to true if you want the billing address to automatically be set to the shipping address. Subsequent changes to shipping address will be tracked and applied automatically
524 required: false
525 type: boolean
526 - name: 'street[]'
527 in: formData
528 description: 'Pargo partner street address. Note this parameter may be repeated in the PATCH body to support multiple input lines for a street eg. street[]=19th Floor Media 24 Building && street[]=40 Heerengracht street. Required for pargo shipping method.'
529 required: true
530 type: string
531 - name: contact_number
532 in: formData
533 description: "Recipient's mobile number eg. 0824547703. Required for pargo shipping method.'"
534 required: true
535 type: string
536 - name: suburb
537 in: formData
538 description: Pargo partner suburb name eg. Diep River. Required for pargo shipping method.
539 required: true
540 type: string
541 - name: postal_code
542 in: formData
543 description: "Pargo partner postal code eg. 7943. Required for pargo shipping method.'"
544 required: true
545 type: string
546 - name: city
547 in: formData
548 description: Pargo partner city name eg. Cape Town. Required for pargo shipping method.
549 required: true
550 type: string
551 - name: country_code
552 in: formData
553 description: 'Pargo partner country code/identifier eg. ZA. Note: Only ZA supported right now. Required for pargo shipping method.'
554 required: true
555 type: string
556 - name: pargo_store_name
557 in: formData
558 description: Pargo partner store name. Required for pargo shipping method.
559 required: true
560 type: string
561 - name: pargo_store_owner
562 in: formData
563 description: Pargo partner store owner name. Required for pargo shipping method.
564 required: false
565 type: string
566 - name: pargo_point_code
567 in: formData
568 description: Pargo partner pickup point id e.g. pup10. Required for pargo shipping method.
569 required: true
570 type: string
571 - name: pargo_business_hours
572 in: formData
573 description: 'Pargo partner business hours e.g. Open: Mon to Sun, 24 hours. Required for pargo shipping method.'
574 required: true
575 type: string
576 - name: pargo_latitude
577 in: formData
578 description: Pargo partner store latitude e.g. -33.91795. Required for pargo shipping method.
579 required: true
580 type: number
581 format: float
582 - name: pargo_longitude
583 in: formData
584 description: Pargo partner store longitude e.g. 18.42848. Required for pargo shipping method.
585 required: true
586 type: number
587 format: float
588 - name: pargo_photo
589 in: formData
590 description: Pargo partner photo URL. Required for pargo shipping method.
591 required: true
592 type: string
593 responses:
594 '200':
595 description: successful operation
596 schema:
597 $ref: '#/definitions/Checkout'
598 '400':
599 $ref: '#/responses/ErrorBadRequest'
600 '401':
601 $ref: '#/responses/ErrorUnauthorized'
602 '403':
603 $ref: '#/responses/ErrorForbidden'
604 '412':
605 $ref: '#/responses/ErrorPreconditionNotMet'
606 '429':
607 $ref: '#/responses/ErrorTooManyRequests'
608 '500':
609 $ref: '#/responses/ErrorServerError'
610 '502':
611 $ref: '#/responses/ErrorBadGateway'
612 '503':
613 $ref: '#/responses/ErrorUnavailable'
614 security:
615 - shoppy_oauth2:
616 - basic
617 /checkout/shipping/shipping-address:
618 post:
619 tags:
620 - checkout
621 summary: Creates and updates a new shipping address to the checkout entity
622 description: Creates and updates a new shipping address to the checkout entity
623 operationId: saveNewShippingAddress
624 consumes:
625 - application/x-www-form-urlencoded
626 produces:
627 - application/json
628 schemes:
629 - https
630 parameters:
631 - $ref: '#/parameters/first_name'
632 - $ref: '#/parameters/last_name'
633 - $ref: '#/parameters/street'
634 - $ref: '#/parameters/contact_number'
635 - $ref: '#/parameters/company'
636 - $ref: '#/parameters/suburb'
637 - $ref: '#/parameters/postal_code'
638 - $ref: '#/parameters/city'
639 - $ref: '#/parameters/country_code'
640 responses:
641 '200':
642 description: Address saved successfully
643 schema:
644 $ref: '#/definitions/Checkout'
645 '400':
646 $ref: '#/responses/ErrorBadRequest'
647 '401':
648 $ref: '#/responses/ErrorUnauthorized'
649 '403':
650 $ref: '#/responses/ErrorForbidden'
651 '429':
652 $ref: '#/responses/ErrorTooManyRequests'
653 '500':
654 $ref: '#/responses/ErrorServerError'
655 '502':
656 $ref: '#/responses/ErrorBadGateway'
657 '503':
658 $ref: '#/responses/ErrorUnavailable'
659 security:
660 - shoppy_oauth2:
661 - basic
662 /checkout/shipping/billing-address:
663 post:
664 tags:
665 - checkout
666 summary: Creates and updates a new billing address on the checkout entity
667 description: Creates and updates a new billing address to the checkout entity
668 operationId: saveNewBillingAddress
669 consumes:
670 - application/x-www-form-urlencoded
671 produces:
672 - application/json
673 schemes:
674 - https
675 parameters:
676 - $ref: '#/parameters/first_name'
677 - $ref: '#/parameters/last_name'
678 - $ref: '#/parameters/street'
679 - $ref: '#/parameters/contact_number'
680 - $ref: '#/parameters/company'
681 - $ref: '#/parameters/suburb'
682 - $ref: '#/parameters/postal_code'
683 - $ref: '#/parameters/city'
684 - $ref: '#/parameters/country_code'
685 responses:
686 '200':
687 description: successful operation
688 schema:
689 $ref: '#/definitions/Checkout'
690 '400':
691 $ref: '#/responses/ErrorBadRequest'
692 '401':
693 $ref: '#/responses/ErrorUnauthorized'
694 '403':
695 $ref: '#/responses/ErrorForbidden'
696 '429':
697 $ref: '#/responses/ErrorTooManyRequests'
698 '500':
699 $ref: '#/responses/ErrorServerError'
700 '502':
701 $ref: '#/responses/ErrorBadGateway'
702 '503':
703 $ref: '#/responses/ErrorUnavailable'
704 security:
705 - shoppy_oauth2:
706 - basic
707 /shipping/areas:
708 get:
709 tags:
710 - shipping
711 summary: Autocompletes shipping suburb names
712 description: Autocompletes shipping suburb names. Returns matches by suburb name
713 operationId: autocompleteArea
714 consumes:
715 - application/x-www-form-urlencoded
716 produces:
717 - application/json
718 schemes:
719 - http
720 - https
721 parameters:
722 - name: q
723 in: query
724 description: Alphanumeric characters to search on
725 required: true
726 type: string
727 - name: size
728 in: query
729 description: Max no of suggestions to return in the response
730 required: false
731 type: integer
732 default: 10
733 responses:
734 '200':
735 description: successful operation
736 schema:
737 type: array
738 items:
739 $ref: '#/definitions/ShippingArea'
740 '400':
741 $ref: '#/responses/ErrorBadRequest'
742 '429':
743 $ref: '#/responses/ErrorTooManyRequests'
744 '500':
745 $ref: '#/responses/ErrorServerError'
746 '502':
747 $ref: '#/responses/ErrorBadGateway'
748 '503':
749 $ref: '#/responses/ErrorUnavailable'
750 /checkout/payment/card-token:
751 post:
752 tags:
753 - checkout
754 summary: Add new card-token and set payment method to credit card
755 description: One step method to allow adding of a new card token and setting payment method to credit card
756 operationId: setPaymentCardToken
757 consumes:
758 - application/x-www-form-urlencoded
759 produces:
760 - application/json
761 schemes:
762 - https
763 parameters:
764 - name: expire_month
765 in: formData
766 description: Card Expiry Month
767 required: true
768 type: integer
769 - name: expire_year
770 in: formData
771 description: Card Expiry Year
772 required: true
773 type: integer
774 - name: token
775 in: formData
776 description: The generated token of the card
777 required: true
778 type: string
779 - name: last_four
780 in: formData
781 description: The last 4 digits of the credit card
782 required: true
783 type: number
784 - name: brand
785 in: formData
786 description: The issuer of the credit card
787 required: true
788 type: string
789 - name: last_used
790 in: formData
791 description: When this card was last used
792 required: false
793 type: string
794 - name: save_card
795 in: formData
796 description: Save the token for future use
797 required: false
798 type: boolean
799 responses:
800 '200':
801 description: successful operation. Existing card token added for customer
802 schema:
803 $ref: '#/definitions/Checkout'
804 '201':
805 description: successful operation. New card token added for customer
806 schema:
807 $ref: '#/definitions/Checkout'
808 '400':
809 $ref: '#/responses/ErrorBadRequest'
810 '401':
811 $ref: '#/responses/ErrorUnauthorized'
812 '403':
813 $ref: '#/responses/ErrorForbidden'
814 '429':
815 $ref: '#/responses/ErrorTooManyRequests'
816 '500':
817 $ref: '#/responses/ErrorServerError'
818 '502':
819 $ref: '#/responses/ErrorBadGateway'
820 '503':
821 $ref: '#/responses/ErrorUnavailable'
822 security:
823 - shoppy_oauth2:
824 - basic
825 /checkout/payment:
826 patch:
827 tags:
828 - checkout
829 summary: Modify a writable checkout payment field
830 description: Used to modify a writable checkout payment field eg. payment/method_code. This method is idempotent. Only one field can be updated per call. On success a full representation of the Checkout object is returned
831 operationId: setPaymentOption
832 consumes:
833 - application/x-www-form-urlencoded
834 produces:
835 - application/json
836 schemes:
837 - https
838 parameters:
839 - name: method_code
840 in: formData
841 description: Payment method code to set as the desired payment method
842 required: false
843 type: string
844 - name: redeem_store_credit
845 in: formData
846 description: Applies/unapplies store credit to order when/if available
847 required: false
848 type: boolean
849 responses:
850 '200':
851 description: successful operation
852 schema:
853 $ref: '#/definitions/Checkout'
854 '400':
855 $ref: '#/responses/ErrorBadRequest'
856 '401':
857 $ref: '#/responses/ErrorUnauthorized'
858 '403':
859 $ref: '#/responses/ErrorForbidden'
860 '429':
861 $ref: '#/responses/ErrorTooManyRequests'
862 '500':
863 $ref: '#/responses/ErrorServerError'
864 '502':
865 $ref: '#/responses/ErrorBadGateway'
866 '503':
867 $ref: '#/responses/ErrorUnavailable'
868 security:
869 - shoppy_oauth2:
870 - basic
871 /checkout/shipping/gift-message:
872 post:
873 tags:
874 - checkout
875 summary: Creates and adds a new gift message to the checkout object
876 description: Creates and adds a new gift message to the checkout object. Please use PATCH instead to modify the message an an already existing gift message
877 operationId: saveNewGiftMessage
878 consumes:
879 - application/x-www-form-urlencoded
880 produces:
881 - application/json
882 schemes:
883 - https
884 parameters:
885 - name: message
886 in: formData
887 description: The personal message to attach to the order on shipping
888 required: true
889 type: string
890 responses:
891 '201':
892 description: successful operation
893 schema:
894 $ref: '#/definitions/Checkout'
895 '400':
896 $ref: '#/responses/ErrorBadRequest'
897 '401':
898 $ref: '#/responses/ErrorUnauthorized'
899 '403':
900 $ref: '#/responses/ErrorForbidden'
901 '429':
902 $ref: '#/responses/ErrorTooManyRequests'
903 '500':
904 $ref: '#/responses/ErrorServerError'
905 '502':
906 $ref: '#/responses/ErrorBadGateway'
907 '503':
908 $ref: '#/responses/ErrorUnavailable'
909 security:
910 - shoppy_oauth2:
911 - basic
912 delete:
913 tags:
914 - checkout
915 summary: "Delete/remove a gift message from a customers' checkout/cart/quote"
916 description: ''
917 operationId: removeGiftMessage
918 consumes:
919 - application/x-www-form-urlencoded
920 produces:
921 - application/json
922 responses:
923 '200':
924 description: On successful removal of the gift message. This is the non-idempotent response for repeat attempts
925 schema:
926 $ref: '#/definitions/Checkout'
927 '400':
928 $ref: '#/responses/ErrorBadRequest'
929 '401':
930 $ref: '#/responses/ErrorUnauthorized'
931 '403':
932 $ref: '#/responses/ErrorForbidden'
933 '404':
934 $ref: '#/responses/ErrorNotFound'
935 '429':
936 $ref: '#/responses/ErrorTooManyRequests'
937 '500':
938 $ref: '#/responses/ErrorServerError'
939 '502':
940 $ref: '#/responses/ErrorBadGateway'
941 '503':
942 $ref: '#/responses/ErrorUnavailable'
943 security:
944 - shoppy_oauth2:
945 - basic
946 patch:
947 tags:
948 - checkout
949 summary: Modify a writable checkout field
950 description: Used to modify a writable field on /checkout/gift-message object eg. message
951 operationId: setGiftMessage
952 consumes:
953 - application/x-www-form-urlencoded
954 produces:
955 - application/json
956 schemes:
957 - https
958 parameters:
959 - name: message
960 in: formData
961 description: Update teh already set personal message
962 required: false
963 type: integer
964 responses:
965 '200':
966 description: successful operation
967 schema:
968 $ref: '#/definitions/Checkout'
969 '400':
970 $ref: '#/responses/ErrorBadRequest'
971 '429':
972 $ref: '#/responses/ErrorTooManyRequests'
973 '500':
974 $ref: '#/responses/ErrorServerError'
975 '502':
976 $ref: '#/responses/ErrorBadGateway'
977 '503':
978 $ref: '#/responses/ErrorUnavailable'
979 security:
980 - shoppy_oauth2:
981 - basic
982 '/cart/gift-cards/{code}':
983 delete:
984 tags:
985 - cart
986 summary: "Delete/remove a gift card from customers' cart by the specified gift card code"
987 description: ''
988 operationId: removeGiftCard
989 consumes:
990 - application/x-www-form-urlencoded
991 produces:
992 - application/json
993 schemes:
994 - https
995 parameters:
996 - name: code
997 in: path
998 description: Gift voucher code
999 required: true
1000 type: string
1001 responses:
1002 '200':
1003 description: On successful removal of the specified item id. This is the idempotent response for repeat attempts. Rarely sent. If ever
1004 schema:
1005 $ref: '#/definitions/Cart'
1006 '401':
1007 $ref: '#/responses/ErrorUnauthorized'
1008 '403':
1009 $ref: '#/responses/ErrorForbidden'
1010 '429':
1011 $ref: '#/responses/ErrorTooManyRequests'
1012 '500':
1013 $ref: '#/responses/ErrorServerError'
1014 '502':
1015 $ref: '#/responses/ErrorBadGateway'
1016 '503':
1017 $ref: '#/responses/ErrorUnavailable'
1018 security:
1019 - shoppy_oauth2:
1020 - basic
1021 /cart:
1022 get:
1023 tags:
1024 - cart
1025 summary: Retrieves customer cart data
1026 description: ''
1027 operationId: get
1028 consumes:
1029 - application/x-www-form-urlencoded
1030 produces:
1031 - application/json
1032 responses:
1033 '200':
1034 description: successful operation
1035 schema:
1036 $ref: '#/definitions/Cart'
1037 '401':
1038 $ref: '#/responses/ErrorUnauthorized'
1039 '403':
1040 $ref: '#/responses/ErrorForbidden'
1041 '429':
1042 $ref: '#/responses/ErrorTooManyRequests'
1043 '500':
1044 $ref: '#/responses/ErrorServerError'
1045 '502':
1046 $ref: '#/responses/ErrorBadGateway'
1047 '503':
1048 $ref: '#/responses/ErrorUnavailable'
1049 security:
1050 - shoppy_oauth2:
1051 - basic
1052 post:
1053 tags:
1054 - cart
1055 summary: Apply coupons and/or gift vouchers to the cart
1056 description: ''
1057 operationId: setOption
1058 consumes:
1059 - application/x-www-form-urlencoded
1060 produces:
1061 - application/json
1062 schemes:
1063 - https
1064 parameters:
1065 - name: coupon_or_gift_card_code
1066 in: formData
1067 description: Coupon or gift voucher code to apply to cart. An empty value will remove a coupon
1068 required: true
1069 type: string
1070 responses:
1071 '200':
1072 description: Coupon and/or voucher applied successfully
1073 schema:
1074 $ref: '#/definitions/Cart'
1075 '400':
1076 $ref: '#/responses/ErrorBadRequest'
1077 '401':
1078 $ref: '#/responses/ErrorUnauthorized'
1079 '403':
1080 $ref: '#/responses/ErrorForbidden'
1081 '404':
1082 $ref: '#/responses/ErrorNotFound'
1083 '412':
1084 $ref: '#/responses/ErrorPreconditionNotMet'
1085 '429':
1086 $ref: '#/responses/ErrorTooManyRequests'
1087 '500':
1088 $ref: '#/responses/ErrorServerError'
1089 '502':
1090 $ref: '#/responses/ErrorBadGateway'
1091 '503':
1092 $ref: '#/responses/ErrorUnavailable'
1093 security:
1094 - shoppy_oauth2:
1095 - basic
1096 /cart/qty:
1097 get:
1098 tags:
1099 - cart
1100 summary: "Returns the total quantity of items in the customers' cart"
1101 description: ''
1102 operationId: getQty
1103 consumes:
1104 - application/x-www-form-urlencoded
1105 produces:
1106 - application/json
1107 responses:
1108 '200':
1109 description: successful operation
1110 schema:
1111 $ref: '#/definitions/CartQty'
1112 '401':
1113 $ref: '#/responses/ErrorUnauthorized'
1114 '403':
1115 $ref: '#/responses/ErrorForbidden'
1116 '429':
1117 $ref: '#/responses/ErrorTooManyRequests'
1118 '500':
1119 $ref: '#/responses/ErrorServerError'
1120 '502':
1121 $ref: '#/responses/ErrorBadGateway'
1122 '503':
1123 $ref: '#/responses/ErrorUnavailable'
1124 security:
1125 - shoppy_oauth2:
1126 - basic
1127 /cart/coupon-code:
1128 delete:
1129 tags:
1130 - cart
1131 summary: "Delete/remove a coupon code from cart from a customers' cart"
1132 description: ''
1133 operationId: removeItem
1134 consumes:
1135 - application/x-www-form-urlencoded
1136 produces:
1137 - application/json
1138 responses:
1139 '200':
1140 description: On successful removal of the coupon
1141 schema:
1142 $ref: '#/definitions/Cart'
1143 '400':
1144 $ref: '#/responses/ErrorBadRequest'
1145 '401':
1146 $ref: '#/responses/ErrorUnauthorized'
1147 '403':
1148 $ref: '#/responses/ErrorForbidden'
1149 '404':
1150 description: Cart item does not exist and so deleting it is impossible
1151 schema:
1152 $ref: '#/definitions/Error'
1153 '429':
1154 $ref: '#/responses/ErrorTooManyRequests'
1155 '500':
1156 $ref: '#/responses/ErrorServerError'
1157 '502':
1158 $ref: '#/responses/ErrorBadGateway'
1159 '503':
1160 $ref: '#/responses/ErrorUnavailable'
1161 security:
1162 - shoppy_oauth2:
1163 - basic
1164 /orders:
1165 post:
1166 tags:
1167 - orders
1168 summary: "Creates an order from logged in customer's checkout/quote state"
1169 description: ''
1170 operationId: place
1171 consumes:
1172 - application/x-www-form-urlencoded
1173 produces:
1174 - application/json
1175 responses:
1176 '201':
1177 description: Order placed/created
1178 schema:
1179 $ref: '#/definitions/Order'
1180 '400':
1181 $ref: '#/responses/ErrorBadRequest'
1182 '401':
1183 $ref: '#/responses/ErrorUnauthorized'
1184 '403':
1185 $ref: '#/responses/ErrorForbidden'
1186 '412':
1187 $ref: '#/responses/ErrorPreconditionNotMet'
1188 '429':
1189 $ref: '#/responses/ErrorTooManyRequests'
1190 '500':
1191 $ref: '#/responses/ErrorServerError'
1192 '502':
1193 $ref: '#/responses/ErrorBadGateway'
1194 '503':
1195 $ref: '#/responses/ErrorUnavailable'
1196 security:
1197 - shoppy_oauth2:
1198 - basic
1199 get:
1200 tags:
1201 - orders
1202 summary: List orders by customer
1203 description: ''
1204 operationId: list
1205 consumes:
1206 - application/x-www-form-urlencoded
1207 produces:
1208 - application/json
1209 schemes:
1210 - https
1211 parameters:
1212 - name: p
1213 in: query
1214 description: Indicates the page number
1215 required: false
1216 type: integer
1217 format: int32
1218 default: 1
1219 - name: page_size
1220 in: query
1221 description: Indicates the size of the desired page
1222 required: false
1223 type: integer
1224 format: int32
1225 default: 10
1226 responses:
1227 '200':
1228 description: successful operation
1229 schema:
1230 $ref: '#/definitions/OrderResultSet'
1231 '401':
1232 $ref: '#/responses/ErrorBadRequest'
1233 '403':
1234 $ref: '#/responses/ErrorForbidden'
1235 '429':
1236 $ref: '#/responses/ErrorTooManyRequests'
1237 '500':
1238 $ref: '#/responses/ErrorServerError'
1239 '503':
1240 $ref: '#/responses/ErrorUnavailable'
1241 security:
1242 - shoppy_oauth2:
1243 - basic
1244 '/orders/{orderId}':
1245 get:
1246 tags:
1247 - orders
1248 summary: Get customer order by id
1249 description: ''
1250 operationId: getOrder
1251 consumes:
1252 - application/x-www-form-urlencoded
1253 produces:
1254 - application/json
1255 schemes:
1256 - https
1257 parameters:
1258 - $ref: '#/parameters/order_id'
1259 responses:
1260 '200':
1261 description: successful operation
1262 schema:
1263 $ref: '#/definitions/Order'
1264 '401':
1265 $ref: '#/responses/ErrorBadRequest'
1266 '403':
1267 $ref: '#/responses/ErrorForbidden'
1268 '404':
1269 $ref: '#/responses/ErrorNotFound'
1270 '429':
1271 $ref: '#/responses/ErrorTooManyRequests'
1272 '500':
1273 $ref: '#/responses/ErrorServerError'
1274 '502':
1275 $ref: '#/responses/ErrorBadGateway'
1276 '503':
1277 $ref: '#/responses/ErrorUnavailable'
1278 security:
1279 - shoppy_oauth2:
1280 - basic
1281 '/orders/{orderId}/items':
1282 get:
1283 tags:
1284 - orders
1285 summary: Get items for given order id
1286 description: ''
1287 operationId: getItems
1288 consumes:
1289 - application/x-www-form-urlencoded
1290 produces:
1291 - application/json
1292 schemes:
1293 - https
1294 parameters:
1295 - $ref: '#/parameters/order_id'
1296 responses:
1297 '200':
1298 description: successful operation
1299 schema:
1300 type: array
1301 items:
1302 $ref: '#/definitions/OrderItem'
1303 '401':
1304 $ref: '#/responses/ErrorBadRequest'
1305 '403':
1306 $ref: '#/responses/ErrorForbidden'
1307 '404':
1308 $ref: '#/responses/ErrorNotFound'
1309 '429':
1310 $ref: '#/responses/ErrorTooManyRequests'
1311 '500':
1312 $ref: '#/responses/ErrorServerError'
1313 '502':
1314 $ref: '#/responses/ErrorBadGateway'
1315 '503':
1316 $ref: '#/responses/ErrorUnavailable'
1317 security:
1318 - shoppy_oauth2:
1319 - basic
1320 /customer:
1321 get:
1322 tags:
1323 - customers
1324 summary: Get logged in customer personal details
1325 description: 'Returns object representing basic personal details for the logged in customer ie. first name, last name, email, store credit etc.'
1326 operationId: getCustomer
1327 consumes:
1328 - application/x-www-form-urlencoded
1329 produces:
1330 - application/json
1331 responses:
1332 '200':
1333 description: successful operation
1334 schema:
1335 $ref: '#/definitions/Customer'
1336 '401':
1337 $ref: '#/responses/ErrorUnauthorized'
1338 '403':
1339 $ref: '#/responses/ErrorForbidden'
1340 '429':
1341 $ref: '#/responses/ErrorTooManyRequests'
1342 '500':
1343 $ref: '#/responses/ErrorServerError'
1344 '502':
1345 $ref: '#/responses/ErrorBadGateway'
1346 '503':
1347 $ref: '#/responses/ErrorUnavailable'
1348 security:
1349 - shoppy_oauth2:
1350 - basic
1351 post:
1352 tags:
1353 - customers
1354 summary: Registers a new customer
1355 description: Registers a new customer and sends a welcome email
1356 operationId: register
1357 consumes:
1358 - application/x-www-form-urlencoded
1359 produces:
1360 - application/json
1361 schemes:
1362 - https
1363 parameters:
1364 - $ref: '#/parameters/first_name'
1365 - $ref: '#/parameters/last_name'
1366 - $ref: '#/parameters/email'
1367 - name: dob
1368 in: formData
1369 description: Date of birth in format YYYY-MM-DD
1370 required: false
1371 type: string
1372 format: date
1373 - name: gender
1374 in: formData
1375 description: Gender. Male or female. Certainly not a multi select field
1376 required: true
1377 type: string
1378 enum:
1379 - M
1380 - F
1381 - name: password
1382 in: formData
1383 description: Password
1384 required: true
1385 type: string
1386 - name: 'newsletters[]'
1387 in: formData
1388 description: "Newsletter optin preferences. Valid values is 'Ladies', 'Men', 'Kids'. Use multiple occurrences to specify multiple selections"
1389 required: false
1390 type: array
1391 collectionFormat: multi
1392 items:
1393 type: string
1394 responses:
1395 '200':
1396 description: successful operation
1397 schema:
1398 $ref: '#/definitions/Customer'
1399 '400':
1400 $ref: '#/responses/ErrorBadRequest'
1401 '401':
1402 $ref: '#/responses/ErrorUnauthorized'
1403 '403':
1404 $ref: '#/responses/ErrorForbidden'
1405 '429':
1406 $ref: '#/responses/ErrorTooManyRequests'
1407 '500':
1408 $ref: '#/responses/ErrorServerError'
1409 '502':
1410 $ref: '#/responses/ErrorBadGateway'
1411 '503':
1412 $ref: '#/responses/ErrorUnavailable'
1413 /customer/reset-password:
1414 post:
1415 tags:
1416 - customers
1417 summary: Performs reset password operation
1418 description: Sends the customer a new password via email on success
1419 operationId: resetPassword
1420 consumes:
1421 - application/x-www-form-urlencoded
1422 produces:
1423 - application/json
1424 schemes:
1425 - https
1426 parameters:
1427 - name: email
1428 in: formData
1429 description: Email addy
1430 required: true
1431 type: string
1432 format: email
1433 responses:
1434 '201':
1435 description: successful operation. New password sent via email
1436 '400':
1437 $ref: '#/responses/ErrorBadRequest'
1438 '401':
1439 $ref: '#/responses/ErrorUnauthorized'
1440 '403':
1441 $ref: '#/responses/ErrorForbidden'
1442 '429':
1443 $ref: '#/responses/ErrorTooManyRequests'
1444 '500':
1445 $ref: '#/responses/ErrorServerError'
1446 '502':
1447 $ref: '#/responses/ErrorBadGateway'
1448 '503':
1449 $ref: '#/responses/ErrorUnavailable'
1450 '/customer/card-tokens/{id}/last-used':
1451 post:
1452 tags:
1453 - customers
1454 summary: Update the last used date of card token by id
1455 description: ''
1456 operationId: updateCardTokenLastUsed
1457 consumes:
1458 - application/x-www-form-urlencoded
1459 produces:
1460 - application/json
1461 schemes:
1462 - https
1463 parameters:
1464 - name: id
1465 in: path
1466 description: Id of the card token to be updated
1467 required: true
1468 type: integer
1469 responses:
1470 '200':
1471 description: successful operation
1472 schema:
1473 $ref: '#/definitions/CustomerCardToken'
1474 '404':
1475 $ref: '#/responses/ErrorNotFound'
1476 '429':
1477 $ref: '#/responses/ErrorTooManyRequests'
1478 '500':
1479 $ref: '#/responses/ErrorServerError'
1480 '503':
1481 $ref: '#/responses/ErrorUnavailable'
1482 /customer/card-tokens/:
1483 get:
1484 tags:
1485 - customers
1486 summary: Get logged in customer tokenised credit cards
1487 description: Returns object representing customers stored tokenised credit cards
1488 operationId: getCardTokens
1489 consumes:
1490 - application/x-www-form-urlencoded
1491 produces:
1492 - application/json
1493 responses:
1494 '200':
1495 description: successful operation
1496 schema:
1497 $ref: '#/definitions/CustomerCardToken'
1498 '401':
1499 $ref: '#/responses/ErrorUnauthorized'
1500 '403':
1501 $ref: '#/responses/ErrorForbidden'
1502 '429':
1503 $ref: '#/responses/ErrorTooManyRequests'
1504 '500':
1505 $ref: '#/responses/ErrorServerError'
1506 '502':
1507 $ref: '#/responses/ErrorBadGateway'
1508 '503':
1509 $ref: '#/responses/ErrorUnavailable'
1510 security:
1511 - shoppy_oauth2:
1512 - basic
1513 post:
1514 tags:
1515 - customers
1516 summary: Performs an add card token for customer
1517 description: Adds token of credit card for a customer
1518 operationId: addCardToken
1519 consumes:
1520 - application/x-www-form-urlencoded
1521 produces:
1522 - application/json
1523 schemes:
1524 - https
1525 parameters:
1526 - name: expire_month
1527 in: formData
1528 description: Card Expiry Month
1529 required: true
1530 type: integer
1531 - name: expire_year
1532 in: formData
1533 description: Card Expiry Year
1534 required: true
1535 type: integer
1536 - name: token
1537 in: formData
1538 description: The generated token of the card
1539 required: true
1540 type: string
1541 - name: last_four
1542 in: formData
1543 description: The last 4 digits of the credit card
1544 required: true
1545 type: number
1546 - name: brand
1547 in: formData
1548 description: The issuer of the credit card
1549 required: true
1550 type: string
1551 - name: last_used
1552 in: formData
1553 description: When this card was last used
1554 required: false
1555 type: string
1556 responses:
1557 '201':
1558 description: successful operation. New card token added for customer
1559 '400':
1560 $ref: '#/responses/ErrorBadRequest'
1561 '401':
1562 $ref: '#/responses/ErrorUnauthorized'
1563 '403':
1564 $ref: '#/responses/ErrorForbidden'
1565 '429':
1566 $ref: '#/responses/ErrorTooManyRequests'
1567 '500':
1568 $ref: '#/responses/ErrorServerError'
1569 '502':
1570 $ref: '#/responses/ErrorBadGateway'
1571 '503':
1572 $ref: '#/responses/ErrorUnavailable'
1573 security:
1574 - shoppy_oauth2:
1575 - basic
1576 /cart/items:
1577 post:
1578 tags:
1579 - cart
1580 summary: Adds an item or increases quantity for an already existing item by its product sku
1581 description: ''
1582 operationId: addItem
1583 consumes:
1584 - application/x-www-form-urlencoded
1585 produces:
1586 - application/json
1587 schemes:
1588 - https
1589 parameters:
1590 - name: sku
1591 in: formData
1592 description: Product simple SKU
1593 required: true
1594 type: string
1595 - name: qty
1596 in: formData
1597 description: Quantity of items to be added
1598 required: false
1599 type: integer
1600 default: 1
1601 responses:
1602 '200':
1603 description: Returned when the product is already in the cart. The quantity will thus be incremented by the specified quantity
1604 schema:
1605 $ref: '#/definitions/Cart'
1606 '201':
1607 description: Returned when a product is added to the cart for the first time and therefore a new cart item is created
1608 schema:
1609 $ref: '#/definitions/Cart'
1610 '400':
1611 $ref: '#/responses/ErrorBadRequest'
1612 '401':
1613 $ref: '#/responses/ErrorUnauthorized'
1614 '403':
1615 $ref: '#/responses/ErrorForbidden'
1616 '429':
1617 $ref: '#/responses/ErrorTooManyRequests'
1618 '500':
1619 $ref: '#/responses/ErrorServerError'
1620 '502':
1621 $ref: '#/responses/ErrorBadGateway'
1622 '503':
1623 $ref: '#/responses/ErrorUnavailable'
1624 security:
1625 - shoppy_oauth2:
1626 - basic
1627 delete:
1628 tags:
1629 - cart
1630 summary: "Delete/remove all cart items from a customers' cart"
1631 description: ''
1632 operationId: deleteItems
1633 consumes:
1634 - application/x-www-form-urlencoded
1635 produces:
1636 - application/json
1637 schemes:
1638 - https
1639 responses:
1640 '200':
1641 description: On successful removal of all items
1642 schema:
1643 $ref: '#/definitions/Cart'
1644 '401':
1645 $ref: '#/responses/ErrorUnauthorized'
1646 '403':
1647 $ref: '#/responses/ErrorForbidden'
1648 '429':
1649 $ref: '#/responses/ErrorTooManyRequests'
1650 '500':
1651 $ref: '#/responses/ErrorServerError'
1652 '502':
1653 $ref: '#/responses/ErrorBadGateway'
1654 '503':
1655 $ref: '#/responses/ErrorUnavailable'
1656 security:
1657 - shoppy_oauth2:
1658 - basic
1659 '/cart/items/{itemId}':
1660 delete:
1661 tags:
1662 - cart
1663 summary: "Delete/remove a cart item from a customers' cart by the specified cart item id"
1664 description: ''
1665 operationId: deleteItem
1666 consumes:
1667 - application/x-www-form-urlencoded
1668 produces:
1669 - application/json
1670 schemes:
1671 - https
1672 parameters:
1673 - name: itemId
1674 in: path
1675 description: Id of the cart item to be deleted/removed from the cart
1676 required: true
1677 type: integer
1678 responses:
1679 '200':
1680 description: On successful removal of the specified item id
1681 schema:
1682 $ref: '#/definitions/Cart'
1683 '401':
1684 $ref: '#/responses/ErrorUnauthorized'
1685 '403':
1686 $ref: '#/responses/ErrorForbidden'
1687 '404':
1688 $ref: '#/responses/ErrorNotFound'
1689 '429':
1690 $ref: '#/responses/ErrorTooManyRequests'
1691 '500':
1692 $ref: '#/responses/ErrorServerError'
1693 '502':
1694 $ref: '#/responses/ErrorBadGateway'
1695 '503':
1696 $ref: '#/responses/ErrorUnavailable'
1697 security:
1698 - shoppy_oauth2:
1699 - basic
1700 patch:
1701 tags:
1702 - cart
1703 summary: Update the requested quantity of a cart item by its cart item id
1704 description: ''
1705 operationId: setItemQuantity
1706 consumes:
1707 - application/x-www-form-urlencoded
1708 produces:
1709 - application/json
1710 schemes:
1711 - https
1712 parameters:
1713 - name: itemId
1714 in: path
1715 description: Id of the cart item to be updated
1716 required: true
1717 type: integer
1718 - name: qty
1719 in: formData
1720 description: Requested quantity
1721 required: true
1722 type: integer
1723 responses:
1724 '200':
1725 description: successful operation
1726 schema:
1727 $ref: '#/definitions/Cart'
1728 '400':
1729 $ref: '#/responses/ErrorBadRequest'
1730 '401':
1731 $ref: '#/responses/ErrorUnauthorized'
1732 '403':
1733 $ref: '#/responses/ErrorForbidden'
1734 '404':
1735 $ref: '#/responses/ErrorNotFound'
1736 '429':
1737 $ref: '#/responses/ErrorTooManyRequests'
1738 '500':
1739 $ref: '#/responses/ErrorServerError'
1740 '502':
1741 $ref: '#/responses/ErrorBadGateway'
1742 '503':
1743 $ref: '#/responses/ErrorUnavailable'
1744 security:
1745 - shoppy_oauth2:
1746 - basic
1747 /oauth/token:
1748 post:
1749 tags:
1750 - auth
1751 summary: Generates an OAuth2 JWT token
1752 description: 'Generates an returns an OAuth2 JWT access token. Only user/password credentials flow is supported. See http://bshaffer.github.io/oauth2-server-php-docs/grant-types/user-credentials/. NB! In line with the oAuth2 spec one is required to authenticate using HTTP basic auth. Talk to the API guy about a username/password combination for your device ecosystem ie. Android/iOS'
1753 operationId: createToken
1754 consumes:
1755 - application/x-www-form-urlencoded
1756 produces:
1757 - application/json
1758 schemes:
1759 - https
1760 parameters:
1761 - name: grant_type
1762 in: formData
1763 description: "Should be 'password'"
1764 required: true
1765 type: string
1766 default: password
1767 enum:
1768 - password
1769 - name: username
1770 in: formData
1771 description: Customer username/email
1772 required: true
1773 type: string
1774 default: dev+106@spreeza.net
1775 - name: password
1776 in: formData
1777 description: Customer password
1778 required: true
1779 type: string
1780 default: hello123
1781 - name: scope
1782 in: formData
1783 description: "Should be 'basic'. Other scopes not supported (yet)"
1784 required: true
1785 type: string
1786 default: basic
1787 enum:
1788 - basic
1789 responses:
1790 '200':
1791 description: Token is granted as a JWT in the response body
1792 schema:
1793 type: array
1794 items:
1795 $ref: '#/definitions/OAuthToken'
1796 '400':
1797 $ref: '#/responses/ErrorBadRequest'
1798 '429':
1799 $ref: '#/responses/ErrorTooManyRequests'
1800 '500':
1801 $ref: '#/responses/ErrorServerError'
1802 '502':
1803 $ref: '#/responses/ErrorBadGateway'
1804 '503':
1805 $ref: '#/responses/ErrorUnavailable'
1806 security:
1807 - basic_auth: []
1808 /oauth/refresh:
1809 post:
1810 tags:
1811 - auth
1812 summary: Refreshes an OAuth2 JWT token
1813 description: 'Refreshes an OAuth2 JWT token when a valid refresh token is provided via POST body. See http://bshaffer.github.io/oauth2-server-php-docs/grant-types/refresh-token/. NB! In line with the oAuth2 spec one is required to authenticate using HTTP basic auth. Talk to the API guy about a username/password combination for your device ecosystem ie. Android/iOS'
1814 operationId: refreshToken
1815 consumes:
1816 - application/x-www-form-urlencoded
1817 produces:
1818 - application/json
1819 schemes:
1820 - https
1821 parameters:
1822 - name: grant_type
1823 in: formData
1824 description: "Should be 'refresh_token'"
1825 required: true
1826 type: string
1827 default: refresh_token
1828 enum:
1829 - refresh_token
1830 - name: refresh_token
1831 in: formData
1832 description: 'A valid refresh token ie. not expired!'
1833 required: true
1834 type: string
1835 default: ''
1836 responses:
1837 '200':
1838 description: successful operation
1839 schema:
1840 type: array
1841 items:
1842 $ref: '#/definitions/OAuthToken'
1843 '400':
1844 $ref: '#/responses/ErrorBadRequest'
1845 '429':
1846 $ref: '#/responses/ErrorTooManyRequests'
1847 '500':
1848 $ref: '#/responses/ErrorServerError'
1849 '502':
1850 $ref: '#/responses/ErrorBadGateway'
1851 '503':
1852 $ref: '#/responses/ErrorUnavailable'
1853 security:
1854 - basic_auth: []
1855 /oauth/verify:
1856 post:
1857 tags:
1858 - auth
1859 summary: Verifies the validity of an OAuth2 JWT token
1860 description: 'For testing/debugging purposes (mostly). See http://bshaffer.github.io/oauth2-server-php-docs/overview/jwt-access-tokens/#client-verification. NB! In line with the oAuth2 spec one is required to authenticate using HTTP basic auth. Talk to the API guy about a username/password combination for your device ecosystem ie. Android/iOS'
1861 operationId: verifyToken
1862 consumes:
1863 - application/x-www-form-urlencoded
1864 produces:
1865 - application/json
1866 schemes:
1867 - https
1868 parameters:
1869 - name: access_token
1870 in: formData
1871 description: OAuth access token. Must be in JWT format
1872 required: true
1873 type: string
1874 responses:
1875 '200':
1876 description: Verified successfully. Both a valid signature and within expiration date/time. This operation exists solely for debugging purposes and is disabled in production
1877 '429':
1878 $ref: '#/responses/ErrorTooManyRequests'
1879 '500':
1880 $ref: '#/responses/ErrorServerError'
1881 '502':
1882 $ref: '#/responses/ErrorBadGateway'
1883 '503':
1884 $ref: '#/responses/ErrorUnavailable'
1885 /oauth/exchange:
1886 post:
1887 tags:
1888 - auth
1889 summary: Exchanges a Magento Session Cookie for an OAuth2 JWT token
1890 description: 'Exchanges the Magento "frontend" session cookie for an OAuth2 JWT access token. The session cookie should be submitted as usual via the Cookie header. This is indeed a custom OAuth2 grant type unique to Spree. The use case is simple. A customer with a logged in magento session can POST to this endpoint (implicitly sending the Cookie header containing the session cookie identifier) and will receive on OAUTH JWT Access Token as a response. Basic HTTP Authorization applies.'
1891 operationId: exchangeToken
1892 consumes:
1893 - application/x-www-form-urlencoded
1894 produces:
1895 - application/json
1896 schemes:
1897 - https
1898 parameters:
1899 - name: grant_type
1900 in: formData
1901 description: "Should be 'magento_session'"
1902 required: true
1903 type: string
1904 default: magento_session
1905 enum:
1906 - magento_session
1907 - name: Cookie
1908 in: header
1909 description: Valid cookies for the Spree domains containing the Magento frontend session identifier
1910 required: true
1911 type: string
1912 - name: scope
1913 in: formData
1914 description: "Should be 'basic'. Other scopes not supported (yet)"
1915 required: true
1916 type: string
1917 default: basic
1918 enum:
1919 - basic
1920 responses:
1921 '200':
1922 description: Token is granted as a JWT in the response body
1923 schema:
1924 type: array
1925 items:
1926 $ref: '#/definitions/OAuthToken'
1927 '400':
1928 $ref: '#/responses/ErrorBadRequest'
1929 '412':
1930 $ref: '#/responses/ErrorBadRequest'
1931 '429':
1932 $ref: '#/responses/ErrorTooManyRequests'
1933 '500':
1934 $ref: '#/responses/ErrorServerError'
1935 '502':
1936 $ref: '#/responses/ErrorBadGateway'
1937 '503':
1938 $ref: '#/responses/ErrorUnavailable'
1939 security:
1940 - basic_auth: []
1941 /checkout:
1942 get:
1943 tags:
1944 - checkout
1945 summary: Gets the state of current checkout. Useful for refreshing a view of checkout data
1946 description: ''
1947 operationId: getCheckout
1948 consumes:
1949 - application/x-www-form-urlencoded
1950 produces:
1951 - application/json
1952 responses:
1953 '200':
1954 description: successful operation
1955 schema:
1956 $ref: '#/definitions/Checkout'
1957 '401':
1958 $ref: '#/responses/ErrorUnauthorized'
1959 '403':
1960 $ref: '#/responses/ErrorForbidden'
1961 '412':
1962 $ref: '#/responses/ErrorPreconditionNotMet'
1963 '429':
1964 $ref: '#/responses/ErrorTooManyRequests'
1965 '500':
1966 $ref: '#/responses/ErrorServerError'
1967 '502':
1968 $ref: '#/responses/ErrorBadGateway'
1969 '503':
1970 $ref: '#/responses/ErrorUnavailable'
1971 security:
1972 - shoppy_oauth2:
1973 - basic
1974 post:
1975 tags:
1976 - checkout
1977 summary: Starts/initalizes a checkout. Responds with sufficient data to commence step one of checkout
1978 description: ''
1979 operationId: initialise
1980 consumes:
1981 - application/x-www-form-urlencoded
1982 produces:
1983 - application/json
1984 responses:
1985 '200':
1986 description: successful operation
1987 schema:
1988 $ref: '#/definitions/Checkout'
1989 '401':
1990 $ref: '#/responses/ErrorUnauthorized'
1991 '403':
1992 $ref: '#/responses/ErrorForbidden'
1993 '412':
1994 $ref: '#/responses/ErrorPreconditionNotMet'
1995 '429':
1996 $ref: '#/responses/ErrorTooManyRequests'
1997 '500':
1998 $ref: '#/responses/ErrorServerError'
1999 '502':
2000 $ref: '#/responses/ErrorBadGateway'
2001 '503':
2002 $ref: '#/responses/ErrorUnavailable'
2003 security:
2004 - shoppy_oauth2:
2005 - basic
2006 /navigation/menu:
2007 get:
2008 tags:
2009 - navigation
2010 summary: Returns list of menu items
2011 operationId: getMenu
2012 consumes:
2013 - application/json
2014 produces:
2015 - application/json
2016 responses:
2017 '200':
2018 description: successful operation
2019 schema:
2020 type: array
2021 items:
2022 $ref: '#/definitions/MenuItem'
2023 '429':
2024 $ref: '#/responses/ErrorTooManyRequests'
2025 '500':
2026 $ref: '#/responses/ErrorServerError'
2027 '502':
2028 $ref: '#/responses/ErrorBadGateway'
2029 '503':
2030 $ref: '#/responses/ErrorUnavailable'
2031 /navigation/departments:
2032 get:
2033 tags:
2034 - navigation
2035 summary: Returns list of department categories
2036 operationId: getDepartments
2037 consumes:
2038 - application/json
2039 produces:
2040 - application/json
2041 responses:
2042 '200':
2043 description: successful operation
2044 schema:
2045 type: array
2046 items:
2047 $ref: '#/definitions/Department'
2048 '429':
2049 $ref: '#/responses/ErrorTooManyRequests'
2050 '500':
2051 $ref: '#/responses/ErrorServerError'
2052 '502':
2053 $ref: '#/responses/ErrorBadGateway'
2054 '503':
2055 $ref: '#/responses/ErrorUnavailable'
2056 /customer/addresses:
2057 get:
2058 tags:
2059 - customers
2060 summary: Gets all addresses stored for a customer
2061 description: Returns list/array of customer addresses. Marks default shipping address if available. Returns empty array if customer does not have any saved shipping addresses. Filters out addresses other than South Africa
2062 operationId: getAddresses
2063 consumes:
2064 - application/x-www-form-urlencoded
2065 produces:
2066 - application/json
2067 responses:
2068 '200':
2069 description: successful operation
2070 schema:
2071 type: array
2072 items:
2073 $ref: '#/definitions/Address'
2074 '401':
2075 $ref: '#/responses/ErrorUnauthorized'
2076 '403':
2077 $ref: '#/responses/ErrorForbidden'
2078 '429':
2079 $ref: '#/responses/ErrorTooManyRequests'
2080 '500':
2081 $ref: '#/responses/ErrorServerError'
2082 '502':
2083 $ref: '#/responses/ErrorBadGateway'
2084 '503':
2085 $ref: '#/responses/ErrorUnavailable'
2086 security:
2087 - shoppy_oauth2:
2088 - basic
2089 /returns:
2090 post:
2091 tags:
2092 - returns
2093 summary: Creates a return for an order
2094 description: ''
2095 operationId: createReturn
2096 consumes:
2097 - application/x-www-form-urlencoded
2098 produces:
2099 - application/json
2100 schemes:
2101 - https
2102 parameters:
2103 - name: order_id
2104 in: formData
2105 description: Order Id (The one we display to customers)
2106 required: true
2107 type: integer
2108 - name: email
2109 in: formData
2110 description: Email address
2111 required: true
2112 type: string
2113 format: email
2114 - name: contact_number
2115 in: formData
2116 description: Customer contact number
2117 required: true
2118 type: string
2119 - name: alternative_contact_number
2120 in: formData
2121 description: Customer alternative contact number
2122 required: false
2123 type: string
2124 - name: method
2125 in: formData
2126 description: "Indicates how the customer wants to return the items. Valid values are 'send_to_address' if courier pickup is required or 'send_to_spree' if the customer is posting the parcel back to spree"
2127 required: true
2128 type: string
2129 enum:
2130 - send_to_address
2131 - send_to_spree
2132 - name: refund_method
2133 in: formData
2134 description: Refund method
2135 required: true
2136 type: string
2137 enum:
2138 - store_credit
2139 - refund_via_card
2140 - refund_via_EFT
2141 - name: comment
2142 in: formData
2143 description: Customer comment
2144 required: false
2145 type: string
2146 - name: collection_address_id
2147 in: formData
2148 description: 'The customer existing address id. Required if courier pickup (send_to_address) is selected. If this is left blank, then a new collection address must be added'
2149 required: false
2150 type: integer
2151 - name: collection_address_street
2152 in: formData
2153 description: 'Street address. Note this parameter may be repeated in the POST body to support multiple input lines for a street eg. street=19th Floor Media 24 Building & street=40 Heerengracht street. Required if courier pickup (send_to_address) is selected and adding a new collection address'
2154 required: false
2155 type: string
2156 - name: collection_address_suburb
2157 in: formData
2158 description: Suburb name eg. Diep River. Required if courier pickup (send_to_address) is selected and adding a new collection address
2159 required: false
2160 type: string
2161 - name: collection_address_city
2162 in: formData
2163 description: City name eg. Cape Town. Required if courier pickup (send_to_address) is selected and adding a new collection address
2164 required: false
2165 type: string
2166 - name: collection_address_postal_code
2167 in: formData
2168 description: Postal code eg. 7943. Required if courier pickup (send_to_address) is selected and adding a new collection address
2169 required: false
2170 type: string
2171 - name: collection_address_country_code
2172 in: formData
2173 description: Country code/identifier eg. ZA. Required if courier pickup (send_to_address) is selected and adding a new collection address
2174 required: false
2175 type: string
2176 - name: bank_account_holder_name
2177 in: formData
2178 description: Bank account holder name. Required if an EFT refund is requested
2179 required: false
2180 type: string
2181 - name: bank_account_number
2182 in: formData
2183 description: Bank account number. Required if an EFT refund is requested
2184 required: false
2185 type: integer
2186 format: int64
2187 - name: bank_account_type
2188 in: formData
2189 description: Bank account holder name. Required if an EFT refund is requested
2190 required: false
2191 type: string
2192 enum:
2193 - Cheque
2194 - Savings
2195 - Transmission
2196 - name: bank_name
2197 in: formData
2198 description: Bank name. Required if an EFT refund is requested
2199 required: false
2200 type: string
2201 - name: bank_branch_code
2202 in: formData
2203 description: Bank branch code. Required if an EFT refund is requested
2204 required: false
2205 type: integer
2206 format: int32
2207 - name: item_id
2208 in: formData
2209 description: Order item id of the product customer is returning
2210 required: true
2211 type: array
2212 collectionFormat: multi
2213 items:
2214 type: integer
2215 - name: item_qty
2216 in: formData
2217 description: Quantity of the item customer is returning
2218 required: true
2219 type: array
2220 collectionFormat: multi
2221 items:
2222 type: integer
2223 - name: item_reason
2224 in: formData
2225 description: The reason the customer is returning the item
2226 required: true
2227 type: array
2228 collectionFormat: multi
2229 items:
2230 type: string
2231 - name: item_comment
2232 in: formData
2233 description: Additional customer comment regarding the item being returned
2234 required: true
2235 type: array
2236 collectionFormat: multi
2237 items:
2238 type: string
2239 responses:
2240 '201':
2241 description: Return created
2242 schema:
2243 $ref: '#/definitions/Return'
2244 '400':
2245 $ref: '#/responses/ErrorBadRequest'
2246 '401':
2247 $ref: '#/responses/ErrorUnauthorized'
2248 '403':
2249 $ref: '#/responses/ErrorForbidden'
2250 '412':
2251 $ref: '#/responses/ErrorPreconditionNotMet'
2252 '429':
2253 $ref: '#/responses/ErrorTooManyRequests'
2254 '500':
2255 $ref: '#/responses/ErrorServerError'
2256 '502':
2257 $ref: '#/responses/ErrorBadGateway'
2258 '503':
2259 $ref: '#/responses/ErrorUnavailable'
2260 security:
2261 - shoppy_oauth2:
2262 - basic
2263 get:
2264 tags:
2265 - returns
2266 summary: List all the returns logged by a customer.
2267 description: ''
2268 operationId: getReturns
2269 consumes:
2270 - application/x-www-form-urlencoded
2271 produces:
2272 - application/json
2273 schemes:
2274 - https
2275 parameters:
2276 - name: order_id
2277 in: query
2278 description: 'If specified, gets all the returns logged against that order'
2279 required: false
2280 type: integer
2281 format: int64
2282 - name: p
2283 in: query
2284 description: Indicates the page number
2285 required: false
2286 type: integer
2287 format: int32
2288 default: 1
2289 - name: page_size
2290 in: query
2291 description: Indicates the size of the desired page
2292 required: false
2293 type: integer
2294 format: int32
2295 default: 10
2296 responses:
2297 '200':
2298 description: successful operation
2299 schema:
2300 $ref: '#/definitions/ReturnResultSet'
2301 '401':
2302 $ref: '#/responses/ErrorBadRequest'
2303 '403':
2304 $ref: '#/responses/ErrorForbidden'
2305 '429':
2306 $ref: '#/responses/ErrorTooManyRequests'
2307 '500':
2308 $ref: '#/responses/ErrorServerError'
2309 '503':
2310 $ref: '#/responses/ErrorUnavailable'
2311 security:
2312 - shoppy_oauth2:
2313 - basic
2314 '/returns/{returnId}':
2315 get:
2316 tags:
2317 - returns
2318 summary: Gets a return by return reference
2319 description: ''
2320 operationId: getReturn
2321 consumes:
2322 - application/x-www-form-urlencoded
2323 produces:
2324 - application/json
2325 schemes:
2326 - https
2327 parameters:
2328 - $ref: '#/parameters/return_id'
2329 responses:
2330 '200':
2331 description: successful operation
2332 schema:
2333 $ref: '#/definitions/Return'
2334 '401':
2335 $ref: '#/responses/ErrorBadRequest'
2336 '403':
2337 $ref: '#/responses/ErrorForbidden'
2338 '404':
2339 $ref: '#/responses/ErrorNotFound'
2340 '429':
2341 $ref: '#/responses/ErrorTooManyRequests'
2342 '500':
2343 $ref: '#/responses/ErrorServerError'
2344 '502':
2345 $ref: '#/responses/ErrorBadGateway'
2346 '503':
2347 $ref: '#/responses/ErrorUnavailable'
2348 security:
2349 - shoppy_oauth2:
2350 - basic
2351 '/returns/{returnId}/items':
2352 get:
2353 tags:
2354 - returns
2355 summary: Gets all the items for a given return id
2356 description: ''
2357 operationId: getReturnItems
2358 consumes:
2359 - application/x-www-form-urlencoded
2360 produces:
2361 - application/json
2362 schemes:
2363 - https
2364 parameters:
2365 - $ref: '#/parameters/return_id'
2366 responses:
2367 '200':
2368 description: successful operation
2369 schema:
2370 type: array
2371 items:
2372 $ref: '#/definitions/ReturnItem'
2373 '401':
2374 $ref: '#/responses/ErrorBadRequest'
2375 '403':
2376 $ref: '#/responses/ErrorForbidden'
2377 '404':
2378 $ref: '#/responses/ErrorNotFound'
2379 '429':
2380 $ref: '#/responses/ErrorTooManyRequests'
2381 '500':
2382 $ref: '#/responses/ErrorServerError'
2383 '502':
2384 $ref: '#/responses/ErrorBadGateway'
2385 '503':
2386 $ref: '#/responses/ErrorUnavailable'
2387 security:
2388 - shoppy_oauth2:
2389 - basic
2390 /favourites:
2391 get:
2392 tags:
2393 - favourites
2394 summary: "Retrieves customer's favourites"
2395 description: ''
2396 operationId: getFavouriteItems
2397 consumes:
2398 - application/x-www-form-urlencoded
2399 produces:
2400 - application/json
2401 parameters:
2402 - name: p
2403 in: query
2404 description: Indicates the page number
2405 required: false
2406 type: integer
2407 format: int32
2408 default: 1
2409 - name: page_size
2410 in: query
2411 description: Indicates the size of the desired page
2412 required: false
2413 type: integer
2414 format: int32
2415 default: 10
2416 responses:
2417 '200':
2418 description: successful operation
2419 schema:
2420 $ref: '#/definitions/Favourites'
2421 '401':
2422 $ref: '#/responses/ErrorUnauthorized'
2423 '403':
2424 $ref: '#/responses/ErrorForbidden'
2425 '429':
2426 $ref: '#/responses/ErrorTooManyRequests'
2427 '500':
2428 $ref: '#/responses/ErrorServerError'
2429 '502':
2430 $ref: '#/responses/ErrorBadGateway'
2431 '503':
2432 $ref: '#/responses/ErrorUnavailable'
2433 security:
2434 - shoppy_oauth2:
2435 - basic
2436 post:
2437 tags:
2438 - favourites
2439 summary: "Add a product to customer's favourites"
2440 description: ''
2441 operationId: addFavouriteItem
2442 consumes:
2443 - application/x-www-form-urlencoded
2444 produces:
2445 - application/json
2446 schemes:
2447 - https
2448 parameters:
2449 - name: sku
2450 in: formData
2451 description: Product SKU. Must be a configurable SKU
2452 required: true
2453 type: string
2454 - name: description
2455 in: formData
2456 description: Customer comment
2457 required: false
2458 type: string
2459 responses:
2460 '200':
2461 description: "Product added in customer's favourites"
2462 schema:
2463 $ref: '#/definitions/FavouriteItem'
2464 '400':
2465 $ref: '#/responses/ErrorBadRequest'
2466 '401':
2467 $ref: '#/responses/ErrorUnauthorized'
2468 '412':
2469 $ref: '#/responses/ErrorPreconditionNotMet'
2470 '429':
2471 $ref: '#/responses/ErrorTooManyRequests'
2472 '500':
2473 $ref: '#/responses/ErrorServerError'
2474 '502':
2475 $ref: '#/responses/ErrorBadGateway'
2476 '503':
2477 $ref: '#/responses/ErrorUnavailable'
2478 security:
2479 - shoppy_oauth2:
2480 - basic
2481 /favourites/count:
2482 get:
2483 tags:
2484 - favourites
2485 summary: "Returns the count of items in the customer's favourites"
2486 description: ''
2487 operationId: getFavouriteItemsCount
2488 consumes:
2489 - application/x-www-form-urlencoded
2490 produces:
2491 - application/json
2492 responses:
2493 '200':
2494 description: successful operation
2495 schema:
2496 $ref: '#/definitions/FavouritesCount'
2497 '401':
2498 $ref: '#/responses/ErrorUnauthorized'
2499 '403':
2500 $ref: '#/responses/ErrorForbidden'
2501 '429':
2502 $ref: '#/responses/ErrorTooManyRequests'
2503 '500':
2504 $ref: '#/responses/ErrorServerError'
2505 '502':
2506 $ref: '#/responses/ErrorBadGateway'
2507 '503':
2508 $ref: '#/responses/ErrorUnavailable'
2509 security:
2510 - shoppy_oauth2:
2511 - basic
2512 '/favourites/items/{itemId}':
2513 delete:
2514 tags:
2515 - favourites
2516 summary: "Delete/remove an item from a customer's favourites by the specified item id"
2517 description: ''
2518 operationId: deleteFavouriteItem
2519 consumes:
2520 - application/x-www-form-urlencoded
2521 produces:
2522 - application/json
2523 schemes:
2524 - https
2525 parameters:
2526 - name: itemId
2527 in: path
2528 description: "Id of the cart item to be deleted/removed from the customer's favourites"
2529 required: true
2530 type: integer
2531 responses:
2532 '200':
2533 description: On successful removal of the specified item id
2534 schema:
2535 $ref: '#/definitions/Favourites'
2536 '401':
2537 $ref: '#/responses/ErrorUnauthorized'
2538 '403':
2539 $ref: '#/responses/ErrorForbidden'
2540 '404':
2541 $ref: '#/responses/ErrorNotFound'
2542 '429':
2543 $ref: '#/responses/ErrorTooManyRequests'
2544 '500':
2545 $ref: '#/responses/ErrorServerError'
2546 '502':
2547 $ref: '#/responses/ErrorBadGateway'
2548 '503':
2549 $ref: '#/responses/ErrorUnavailable'
2550 security:
2551 - shoppy_oauth2:
2552 - basic
2553responses:
2554 ErrorBadRequest:
2555 description: Emitted when API client sends missing/when request parameters
2556 schema:
2557 $ref: '#/definitions/Error'
2558 ErrorUnauthorized:
2559 description: Emitted when API operation requires authentication and/or authorization eg. OAuth or http basic auth
2560 schema:
2561 $ref: '#/definitions/Error'
2562 ErrorForbidden:
2563 description: Emitted when API operation refuses to fulfil the request
2564 schema:
2565 $ref: '#/definitions/Error'
2566 ErrorNotFound:
2567 description: Emitted when resource/entity not found or bad API route specified by API client
2568 schema:
2569 $ref: '#/definitions/Error'
2570 ErrorPreconditionNotMet:
2571 description: Emitted when a precondition has not been satisfied for the request operation
2572 schema:
2573 $ref: '#/definitions/Error'
2574 ErrorTooManyRequests:
2575 description: Emitted when an API client has exceed the maximum threshold for no. of requests within a time period. API clients should rarely need to exceed 100 requests per 10s per unique identifiers
2576 schema:
2577 $ref: '#/definitions/Error'
2578 ErrorServerError:
2579 description: Emitted when API operation experience an expected error fulfilling the request
2580 schema:
2581 $ref: '#/definitions/Error'
2582 ErrorBadGateway:
2583 description: Rare but can be emitted when the API gateway is down or temporarily unavailable
2584 schema:
2585 $ref: '#/definitions/Error'
2586 ErrorUnavailable:
2587 description: 'Emitted when an API operation or its backend is indefinitely unavailable. Consider this to be an outage! Retry the request after the elapsed time (seconds) in the Retry-After response header (if present)'
2588 schema:
2589 $ref: '#/definitions/Error'
2590definitions:
2591 Product:
2592 properties:
2593 sku:
2594 type: string
2595 title:
2596 type: string
2597 detail:
2598 type: string
2599 why_buy:
2600 type: string
2601 go_live:
2602 type: string
2603 format: date-time
2604 brand:
2605 type: object
2606 properties:
2607 id:
2608 type: integer
2609 format: int32
2610 name:
2611 type: string
2612 colour:
2613 type: object
2614 properties:
2615 id:
2616 type: integer
2617 format: int32
2618 name:
2619 type: string
2620 required:
2621 - id
2622 - name
2623 price:
2624 type: object
2625 properties:
2626 regular:
2627 type: number
2628 format: float
2629 selling:
2630 type: number
2631 format: float
2632 special_price:
2633 type: number
2634 format: float
2635 special_from_date:
2636 type: string
2637 format: date-time
2638 special_to_date:
2639 type: string
2640 format: date-time
2641 required:
2642 - regular
2643 - selling
2644 pics:
2645 type: object
2646 properties:
2647 small:
2648 type: string
2649 hover:
2650 type: string
2651 gallery:
2652 type: array
2653 items:
2654 $ref: '#/definitions/Gallery'
2655 status:
2656 type: integer
2657 format: int32
2658 visibility:
2659 type: integer
2660 format: int32
2661 coming_soon:
2662 type: integer
2663 format: int32
2664 editors_pick:
2665 type: integer
2666 format: int32
2667 must_have:
2668 type: integer
2669 format: int32
2670 show_size_chart:
2671 type: integer
2672 format: int32
2673 url:
2674 type: string
2675 detail_url:
2676 type: string
2677 simples:
2678 type: array
2679 items:
2680 $ref: '#/definitions/ProductSimple'
2681 up_sells:
2682 type: array
2683 items:
2684 $ref: '#/definitions/ProductUpsell'
2685 wear_withs:
2686 type: array
2687 items:
2688 $ref: '#/definitions/ProductWearWith'
2689 ribbon:
2690 $ref: '#/definitions/ProductRibbon'
2691 required:
2692 - sku
2693 - title
2694 - detail
2695 - why_buy
2696 - brand
2697 - colour
2698 - pics
2699 - price
2700 - ribbon
2701 Gallery:
2702 properties:
2703 file:
2704 type: string
2705 label:
2706 type: string
2707 position:
2708 type: integer
2709 format: int32
2710 disabled:
2711 type: integer
2712 format: int32
2713 required:
2714 - file
2715 - disabled
2716 - position
2717 ProductSimple:
2718 properties:
2719 entity_id:
2720 type: integer
2721 format: int64
2722 size_id:
2723 type: integer
2724 format: int32
2725 size_value:
2726 type: string
2727 stock_qty:
2728 type: integer
2729 format: int32
2730 stock_status:
2731 type: integer
2732 format: int32
2733 size_order:
2734 type: integer
2735 format: int32
2736 ProductUpsell:
2737 properties:
2738 title:
2739 type: string
2740 entity_id:
2741 type: integer
2742 sku:
2743 type: string
2744 url:
2745 type: string
2746 ProductWearWith:
2747 properties:
2748 title:
2749 type: string
2750 entity_id:
2751 type: integer
2752 sku:
2753 type: string
2754 url:
2755 type: string
2756 ProductResultSet:
2757 required:
2758 - count
2759 - page_size
2760 - products
2761 properties:
2762 count:
2763 type: integer
2764 page_size:
2765 type: integer
2766 products:
2767 type: array
2768 items:
2769 $ref: '#/definitions/ProductResult'
2770 default_sort_by:
2771 type: object
2772 properties:
2773 order:
2774 type: string
2775 enum:
2776 - name
2777 - price
2778 - latest
2779 - relevance
2780 dir:
2781 type: string
2782 enum:
2783 - asc
2784 - desc
2785 facets:
2786 type: object
2787 properties:
2788 categories:
2789 type: array
2790 items:
2791 $ref: '#/definitions/CategoryFacet'
2792 brands:
2793 type: array
2794 items:
2795 $ref: '#/definitions/BrandFacet'
2796 colours:
2797 type: array
2798 items:
2799 $ref: '#/definitions/ColourFacet'
2800 sizes:
2801 type: array
2802 items:
2803 $ref: '#/definitions/SizeFacet'
2804 prices:
2805 type: array
2806 items:
2807 $ref: '#/definitions/PriceFacet'
2808 category:
2809 type: object
2810 properties:
2811 id:
2812 type: integer
2813 name:
2814 type: string
2815 brand:
2816 type: object
2817 properties:
2818 id:
2819 type: integer
2820 name:
2821 type: string
2822 uri:
2823 type: string
2824 MoreLikeThisResultSet:
2825 required:
2826 - count
2827 - products
2828 properties:
2829 count:
2830 type: integer
2831 products:
2832 type: array
2833 items:
2834 $ref: '#/definitions/ProductResult'
2835 ProductResult:
2836 properties:
2837 sku:
2838 type: string
2839 title:
2840 type: string
2841 detail:
2842 type: string
2843 why_buy:
2844 type: string
2845 go_live:
2846 type: string
2847 format: date-time
2848 brand:
2849 type: object
2850 properties:
2851 id:
2852 type: integer
2853 format: int32
2854 name:
2855 type: string
2856 colour:
2857 type: object
2858 properties:
2859 id:
2860 type: integer
2861 format: int32
2862 name:
2863 type: string
2864 required:
2865 - id
2866 - name
2867 price:
2868 type: object
2869 properties:
2870 regular:
2871 type: number
2872 format: float
2873 selling:
2874 type: number
2875 format: float
2876 special_price:
2877 type: number
2878 format: float
2879 special_from_date:
2880 type: string
2881 format: date-time
2882 special_to_date:
2883 type: string
2884 format: date-time
2885 required:
2886 - regular
2887 - selling
2888 pics:
2889 type: object
2890 properties:
2891 small:
2892 type: string
2893 hover:
2894 type: string
2895 status:
2896 type: integer
2897 format: int32
2898 visibility:
2899 type: integer
2900 format: int32
2901 coming_soon:
2902 type: integer
2903 format: int32
2904 editors_pick:
2905 type: integer
2906 format: int32
2907 must_have:
2908 type: integer
2909 format: int32
2910 show_size_chart:
2911 type: integer
2912 format: int32
2913 detail_url:
2914 type: string
2915 simples:
2916 type: array
2917 items:
2918 $ref: '#/definitions/ProductSimple'
2919 ribbon:
2920 $ref: '#/definitions/ProductRibbon'
2921 required:
2922 - sku
2923 - title
2924 - detail
2925 - why_buy
2926 - brand
2927 - colour
2928 - pics
2929 - price
2930 - status
2931 - visibility
2932 - show_size_chart
2933 - detail_url
2934 - ribbon
2935 CategoryFacet:
2936 type: object
2937 properties:
2938 id:
2939 type: integer
2940 name:
2941 type: string
2942 url:
2943 type: string
2944 children:
2945 type: array
2946 items:
2947 $ref: '#/definitions/CategoryFacet'
2948 count:
2949 type: integer
2950 BrandFacet:
2951 type: object
2952 properties:
2953 id:
2954 type: integer
2955 format: int32
2956 name:
2957 type: string
2958 count:
2959 type: integer
2960 ColourFacet:
2961 type: object
2962 properties:
2963 id:
2964 type: integer
2965 format: int32
2966 name:
2967 type: string
2968 count:
2969 type: integer
2970 SizeFacet:
2971 type: object
2972 properties:
2973 id:
2974 type: integer
2975 name:
2976 type: string
2977 order:
2978 type: integer
2979 count:
2980 type: integer
2981 PriceFacet:
2982 type: object
2983 properties:
2984 from:
2985 type: number
2986 format: float
2987 to:
2988 type: number
2989 format: float
2990 count:
2991 type: integer
2992 format: float
2993 CartTotals:
2994 required:
2995 - sub
2996 - tax
2997 - shipping
2998 - gift_card
2999 - store_credit
3000 - discount
3001 - grand
3002 properties:
3003 sub:
3004 type: number
3005 format: float
3006 tax:
3007 type: number
3008 format: float
3009 shipping:
3010 type: number
3011 format: float
3012 gift_card:
3013 type: number
3014 format: float
3015 store_credit:
3016 type: number
3017 format: float
3018 discount:
3019 type: number
3020 format: float
3021 grand:
3022 type: number
3023 format: float
3024 CheckoutShippingMethod:
3025 required:
3026 - label
3027 - code
3028 - price
3029 - formatted_price
3030 - error
3031 - description
3032 properties:
3033 label:
3034 type: string
3035 code:
3036 type: string
3037 price:
3038 type: number
3039 format: float
3040 formatted_price:
3041 type: string
3042 error:
3043 type: string
3044 description:
3045 type: string
3046 CheckoutPaymentMethod:
3047 required:
3048 - label
3049 - code
3050 - message
3051 properties:
3052 label:
3053 type: string
3054 code:
3055 type: string
3056 message:
3057 type: string
3058 CustomerCardToken:
3059 required:
3060 - id
3061 - token
3062 - last_four
3063 - brand
3064 - expire_year
3065 - expire_month
3066 - expired
3067 properties:
3068 id:
3069 type: number
3070 token:
3071 type: string
3072 last_four:
3073 type: number
3074 brand:
3075 type: string
3076 expire_year:
3077 type: number
3078 expire_month:
3079 type: number
3080 last_used:
3081 type: string
3082 format: date-time
3083 expired:
3084 type: boolean
3085 Address:
3086 required:
3087 - address_id
3088 - first_name
3089 - last_name
3090 - company
3091 - street
3092 - contact_number
3093 - suburb
3094 - city
3095 - postal_code
3096 - country_code
3097 - created_at
3098 - updated_at
3099 - isPrimaryShipping
3100 - isPrimaryBilling
3101 - pargo_store_name
3102 - pargo_point_code
3103 - pargo_business_hours
3104 - pargo_latitude
3105 - pargo_longitude
3106 - pargo_photo
3107 properties:
3108 address_id:
3109 type: integer
3110 first_name:
3111 type: string
3112 last_name:
3113 type: string
3114 company:
3115 type: string
3116 street:
3117 type: array
3118 items:
3119 type: string
3120 contact_number:
3121 type: string
3122 suburb:
3123 type: string
3124 city:
3125 type: string
3126 postal_code:
3127 type: string
3128 country_code:
3129 type: string
3130 created_at:
3131 type: string
3132 updated_at:
3133 type: string
3134 isPrimaryShipping:
3135 type: boolean
3136 isPrimaryBilling:
3137 type: boolean
3138 pargo_store_name:
3139 type: string
3140 pargo_point_code:
3141 type: string
3142 pargo_business_hours:
3143 type: string
3144 pargo_latitude:
3145 type: number
3146 format: float
3147 pargo_longitude:
3148 type: number
3149 format: float
3150 pargo_photo:
3151 type: string
3152 CartQty:
3153 required:
3154 - qty
3155 properties:
3156 qty:
3157 type: integer
3158 format: int32
3159 Cart:
3160 required:
3161 - quote_id
3162 - customer_id
3163 - qty
3164 - totals
3165 - items
3166 - messages
3167 - coupon_code
3168 - gift_cards
3169 - _free_shipping
3170 properties:
3171 quote_id:
3172 type: integer
3173 format: int64
3174 customer_id:
3175 type: integer
3176 format: int64
3177 qty:
3178 type: integer
3179 format: int32
3180 totals:
3181 type: array
3182 items:
3183 type: array
3184 $ref: '#/definitions/CartTotals'
3185 items:
3186 type: array
3187 items:
3188 type: array
3189 $ref: '#/definitions/CartItem'
3190 messages:
3191 $ref: '#/definitions/Messages'
3192 coupon_code:
3193 $ref: '#/definitions/CartCoupon'
3194 gift_cards:
3195 type: array
3196 items:
3197 type: array
3198 $ref: '#/definitions/CartGiftCard'
3199 _free_shipping:
3200 type: string
3201 _is_virtual:
3202 type: boolean
3203 CartGiftCard:
3204 required:
3205 - code
3206 - amount
3207 properties:
3208 code:
3209 type: string
3210 amount:
3211 type: number
3212 format: float
3213 Department:
3214 required:
3215 - category_id
3216 - name
3217 properties:
3218 category_id:
3219 type: integer
3220 format: int32
3221 name:
3222 type: string
3223 MenuItem:
3224 required:
3225 - category_id
3226 - name
3227 - image
3228 - children
3229 properties:
3230 category_id:
3231 type: integer
3232 format: int32
3233 name:
3234 type: string
3235 image:
3236 type: string
3237 children:
3238 type: array
3239 items:
3240 type: array
3241 $ref: '#/definitions/MenuItem'
3242 Customer:
3243 required:
3244 - customer_id
3245 - first_name
3246 - last_name
3247 - email
3248 - contact_number
3249 - dob
3250 - store_credit
3251 - registration_date
3252 - is_vip
3253 properties:
3254 customer_id:
3255 type: number
3256 format: int64
3257 first_name:
3258 type: string
3259 last_name:
3260 type: string
3261 email:
3262 type: string
3263 contact_number:
3264 type: string
3265 dob:
3266 type: string
3267 format: date
3268 store_credit:
3269 type: number
3270 format: float
3271 registration_date:
3272 type: string
3273 format: date-time
3274 is_vip:
3275 type: boolean
3276 CheckoutPayment:
3277 required:
3278 - _methods
3279 - method_code
3280 - store_credit
3281 - reference
3282 - card_token
3283 properties:
3284 _methods:
3285 type: array
3286 items:
3287 type: array
3288 $ref: '#/definitions/CheckoutPaymentMethod'
3289 method_code:
3290 type: string
3291 store_credit:
3292 type: number
3293 format: float
3294 _card_tokens:
3295 type: array
3296 items:
3297 type: array
3298 $ref: '#/definitions/CustomerCardToken'
3299 reference:
3300 type: string
3301 card_token:
3302 $ref: '#/definitions/CustomerCardToken'
3303 CheckoutGiftMessage:
3304 required:
3305 - gift_message_id
3306 - customer_id
3307 - sender
3308 - recipient
3309 - message
3310 properties:
3311 gift_message_id:
3312 type: number
3313 format: int64
3314 customer_id:
3315 type: number
3316 format: int64
3317 sender:
3318 type: string
3319 recipient:
3320 type: string
3321 message:
3322 type: string
3323 ShippingArea:
3324 required:
3325 - id
3326 - label
3327 - value
3328 - city
3329 - code
3330 - po
3331 properties:
3332 id:
3333 type: integer
3334 format: int64
3335 label:
3336 type: string
3337 value:
3338 type: string
3339 city:
3340 type: string
3341 code:
3342 type: string
3343 po:
3344 type: integer
3345 format: int32
3346 CheckoutShipping:
3347 required:
3348 - _addresses
3349 - _methods
3350 - shipping_address
3351 - shipping_method_code
3352 - billing_address
3353 - billing_same_as_shipping
3354 - instructions
3355 - gift_message
3356 properties:
3357 _addresses:
3358 type: array
3359 items:
3360 $ref: '#/definitions/Address'
3361 _methods:
3362 type: array
3363 items:
3364 type: array
3365 $ref: '#/definitions/CheckoutShippingMethod'
3366 shipping_address:
3367 $ref: '#/definitions/Address'
3368 shipping_method_code:
3369 type: integer
3370 billing_address:
3371 $ref: '#/definitions/Address'
3372 billing_same_as_shipping:
3373 type: boolean
3374 instructions:
3375 type: string
3376 gift_message:
3377 $ref: '#/definitions/CheckoutGiftMessage'
3378 CartCoupon:
3379 required:
3380 - code
3381 - name
3382 - description
3383 properties:
3384 code:
3385 type: string
3386 name:
3387 type: string
3388 description:
3389 type: string
3390 OAuthToken:
3391 required:
3392 - access_token
3393 - expires_in
3394 - token_type
3395 - scope
3396 properties:
3397 access_token:
3398 type: string
3399 expires_in:
3400 type: integer
3401 format: int32
3402 token_type:
3403 type: string
3404 enum:
3405 - bearer
3406 scope:
3407 enum:
3408 - basic
3409 refresh_token:
3410 type: string
3411 CartItem:
3412 required:
3413 - item_id
3414 - item_qty
3415 - price
3416 - total
3417 - sku
3418 - small_image
3419 - brand
3420 - name
3421 - color
3422 - size
3423 - qty_in_stock
3424 - in_stock
3425 properties:
3426 item_id:
3427 type: integer
3428 format: int64
3429 item_qty:
3430 type: integer
3431 format: int32
3432 price:
3433 type: number
3434 format: float
3435 total:
3436 type: number
3437 format: float
3438 sku:
3439 type: string
3440 small_image:
3441 type: string
3442 brand:
3443 type: string
3444 name:
3445 type: string
3446 color:
3447 type: string
3448 size:
3449 type: string
3450 qty_in_stock:
3451 type: integer
3452 format: int32
3453 in_stock:
3454 type: boolean
3455 OrderResult:
3456 required:
3457 - order_id
3458 - state
3459 - state_label
3460 - state_description
3461 - is_virtual
3462 - grand_total
3463 - total_item_count
3464 - tracking_url
3465 - created_at
3466 - updated_at
3467 properties:
3468 order_id:
3469 type: integer
3470 state:
3471 type: string
3472 state_label:
3473 type: string
3474 state_description:
3475 type: string
3476 is_virtual:
3477 type: boolean
3478 grand_total:
3479 type: number
3480 format: float
3481 total_item_count:
3482 type: integer
3483 tracking_url:
3484 type: string
3485 created_at:
3486 type: string
3487 format: date-time
3488 updated_at:
3489 type: string
3490 format: date-time
3491 Checkout:
3492 required:
3493 - cart
3494 - shipping
3495 - payment
3496 - messages
3497 - _state
3498 properties:
3499 cart:
3500 $ref: '#/definitions/Cart'
3501 shipping:
3502 $ref: '#/definitions/CheckoutShipping'
3503 payment:
3504 $ref: '#/definitions/CheckoutPayment'
3505 messages:
3506 $ref: '#/definitions/Messages'
3507 _state:
3508 type: string
3509 Order:
3510 required:
3511 - order_id
3512 - customer_id
3513 - customer_email
3514 - quote_id
3515 - state
3516 - state_label
3517 - state_description
3518 - is_virtual
3519 - total_item_count
3520 - coupon_code
3521 - gift_cards
3522 - grand_total
3523 - tracking_url
3524 - billing_address
3525 - shipping_address
3526 - shipping_method_code
3527 - shipping_method_label
3528 - shipping_instructions
3529 - items
3530 - payment
3531 - totals
3532 - created_at
3533 - updated_at
3534 - refund_methods
3535 properties:
3536 order_id:
3537 type: integer
3538 customer_id:
3539 type: integer
3540 customer_email:
3541 type: string
3542 quote_id:
3543 type: integer
3544 state:
3545 type: string
3546 state_label:
3547 type: string
3548 state_description:
3549 type: string
3550 is_virtual:
3551 type: boolean
3552 total_item_count:
3553 type: integer
3554 coupon_code:
3555 type: string
3556 gift_cards:
3557 type: array
3558 items:
3559 type: object
3560 properties:
3561 code:
3562 type: string
3563 authorized:
3564 type: number
3565 format: float
3566 grand_total:
3567 type: number
3568 format: float
3569 tracking_url:
3570 type: string
3571 items:
3572 type: array
3573 items:
3574 $ref: '#/definitions/OrderItem'
3575 billing_address:
3576 type: object
3577 properties:
3578 first_name:
3579 type: string
3580 last_name:
3581 type: string
3582 company:
3583 type: string
3584 street:
3585 type: array
3586 items:
3587 type: string
3588 contact_number:
3589 type: string
3590 suburb:
3591 type: string
3592 city:
3593 type: string
3594 postal_code:
3595 type: string
3596 country_code:
3597 type: string
3598 shipping_address:
3599 type: object
3600 properties:
3601 first_name:
3602 type: string
3603 last_name:
3604 type: string
3605 company:
3606 type: string
3607 street:
3608 type: array
3609 items:
3610 type: string
3611 contact_number:
3612 type: string
3613 suburb:
3614 type: string
3615 city:
3616 type: string
3617 postal_code:
3618 type: string
3619 country_code:
3620 type: string
3621 shipping_method_code:
3622 type: string
3623 shipping_method_label:
3624 type: string
3625 shipping_instructions:
3626 type: string
3627 payment:
3628 type: object
3629 required:
3630 - code
3631 - label
3632 properties:
3633 code:
3634 type: string
3635 label:
3636 type: string
3637 message:
3638 type: string
3639 additional_info:
3640 type: array
3641 items:
3642 type: object
3643 properties:
3644 label:
3645 type: string
3646 value:
3647 type: string
3648 totals:
3649 type: object
3650 required:
3651 - sub
3652 - tax
3653 - shipping
3654 - store_credit
3655 - gift_cards
3656 - discount
3657 - grand
3658 - due
3659 properties:
3660 sub:
3661 type: number
3662 format: float
3663 tax:
3664 type: number
3665 format: float
3666 shipping:
3667 type: number
3668 format: float
3669 store_credit:
3670 type: number
3671 format: float
3672 gift_cards:
3673 type: number
3674 format: float
3675 discount:
3676 type: number
3677 format: float
3678 grand:
3679 type: number
3680 format: float
3681 due:
3682 type: number
3683 format: float
3684 created_at:
3685 type: string
3686 format: date-time
3687 updated_at:
3688 type: string
3689 format: date-time
3690 refund_methods:
3691 type: array
3692 items:
3693 $ref: '#/definitions/KeyValuePair'
3694 OrderItem:
3695 required:
3696 - item_id
3697 - title
3698 - sku
3699 - brand
3700 - size
3701 - color
3702 - image
3703 - qty
3704 - price
3705 - total
3706 - qty_returnable
3707 properties:
3708 item_id:
3709 type: integer
3710 title:
3711 type: string
3712 sku:
3713 type: string
3714 brand:
3715 type: string
3716 size:
3717 type: string
3718 color:
3719 type: string
3720 image:
3721 type: string
3722 qty:
3723 type: integer
3724 price:
3725 type: number
3726 format: float
3727 total:
3728 type: number
3729 format: float
3730 qty_returnable:
3731 type: integer
3732 OrderResultSet:
3733 required:
3734 - count
3735 - page_size
3736 - orders
3737 properties:
3738 count:
3739 type: integer
3740 page_size:
3741 type: integer
3742 orders:
3743 type: array
3744 items:
3745 $ref: '#/definitions/OrderResult'
3746 SearchTrends:
3747 type: array
3748 items:
3749 type: string
3750 Brands:
3751 type: array
3752 items:
3753 $ref: '#/definitions/BrandsItem'
3754 BrandsItem:
3755 required:
3756 - id
3757 - name
3758 - _count
3759 properties:
3760 id:
3761 type: integer
3762 format: int32
3763 name:
3764 type: string
3765 _count:
3766 type: integer
3767 format: int32
3768 Error:
3769 required:
3770 - errors
3771 properties:
3772 errors:
3773 type: array
3774 items:
3775 $ref: '#/definitions/ErrorItem'
3776 ErrorItem:
3777 required:
3778 - code
3779 - message
3780 - debug
3781 properties:
3782 code:
3783 type: integer
3784 format: int32
3785 message:
3786 type: string
3787 debug:
3788 type: string
3789 parameters:
3790 type: array
3791 items:
3792 type: string
3793 Manifest:
3794 required:
3795 - urls
3796 - support
3797 - newsletters
3798 - social
3799 - countries
3800 - returns
3801 properties:
3802 urls:
3803 type: object
3804 properties:
3805 website:
3806 type: string
3807 terms_and_conditions:
3808 type: string
3809 policy:
3810 type: string
3811 returns_policy:
3812 type: string
3813 about_us:
3814 type: string
3815 faq:
3816 type: string
3817 support:
3818 type: object
3819 properties:
3820 email:
3821 type: string
3822 format: email
3823 contact:
3824 type: string
3825 hours:
3826 type: string
3827 newsletters:
3828 type: object
3829 properties:
3830 plug:
3831 type: string
3832 terms:
3833 type: string
3834 options:
3835 type: array
3836 items:
3837 type: object
3838 properties:
3839 label:
3840 type: string
3841 value:
3842 type: string
3843 social:
3844 type: object
3845 properties:
3846 facebook:
3847 type: string
3848 twitter:
3849 type: string
3850 pinterest:
3851 type: string
3852 instagram:
3853 type: string
3854 countries:
3855 type: object
3856 properties:
3857 options:
3858 type: array
3859 items:
3860 $ref: '#/definitions/KeyValuePair'
3861 returns:
3862 $ref: '#/definitions/ReturnsConfig'
3863 content:
3864 type: object
3865 properties:
3866 home_feed_uri:
3867 type: string
3868 ProductRibbon:
3869 type: object
3870 properties:
3871 label:
3872 type: string
3873 fg:
3874 type: string
3875 bg:
3876 type: string
3877 Messages:
3878 type: array
3879 items:
3880 type: object
3881 required:
3882 - type
3883 - text
3884 properties:
3885 type:
3886 type: string
3887 enum:
3888 - error
3889 - warning
3890 - notice
3891 - success
3892 text:
3893 type: string
3894 Return:
3895 type: object
3896 required:
3897 - return_id
3898 - customer_id
3899 - order_id
3900 - email
3901 - contact_number
3902 - method
3903 - status
3904 - status_label
3905 - tracking_code
3906 - total
3907 - items
3908 - created_at
3909 - updated_at
3910 properties:
3911 return_id:
3912 type: string
3913 customer_id:
3914 type: integer
3915 order_id:
3916 type: integer
3917 email:
3918 type: string
3919 format: email
3920 contact_number:
3921 type: string
3922 alternative_contact_number:
3923 type: string
3924 method:
3925 type: string
3926 status:
3927 type: string
3928 status_label:
3929 type: string
3930 tracking_code:
3931 type: string
3932 total:
3933 type: number
3934 format: float
3935 comment:
3936 type: string
3937 collection_address:
3938 $ref: '#/definitions/ReturnAddress'
3939 items:
3940 type: array
3941 minItems: 1
3942 items:
3943 $ref: '#/definitions/ReturnItem'
3944 created_at:
3945 type: string
3946 format: date-time
3947 updated_at:
3948 type: string
3949 format: date-time
3950 ReturnItem:
3951 type: object
3952 required:
3953 - return_product_id
3954 - order_item_id
3955 - product_sku
3956 - product_name
3957 - product_price
3958 - product_size
3959 - refund_method
3960 - reason
3961 - qty
3962 - total
3963 properties:
3964 return_product_id:
3965 type: integer
3966 format: int32
3967 order_item_id:
3968 type: integer
3969 format: int32
3970 product_sku:
3971 type: string
3972 product_name:
3973 type: string
3974 product_brand:
3975 type: string
3976 product_color:
3977 type: string
3978 product_size:
3979 type: string
3980 product_image:
3981 type: string
3982 product_price:
3983 type: number
3984 format: float
3985 refund_method:
3986 type: string
3987 reason:
3988 type: string
3989 qty:
3990 type: integer
3991 format: int32
3992 total:
3993 type: number
3994 format: float
3995 ReturnResultSet:
3996 required:
3997 - count
3998 - page_size
3999 - returns
4000 properties:
4001 count:
4002 type: integer
4003 page_size:
4004 type: integer
4005 returns:
4006 type: array
4007 items:
4008 $ref: '#/definitions/ReturnResult'
4009 ReturnResult:
4010 type: object
4011 required:
4012 - return_id
4013 - order_id
4014 - email
4015 - contact_number
4016 - method
4017 - status
4018 - status_label
4019 - tracking_code
4020 - created_at
4021 - updated_at
4022 properties:
4023 return_id:
4024 type: string
4025 order_id:
4026 type: integer
4027 email:
4028 type: string
4029 format: email
4030 contact_number:
4031 type: string
4032 alternative_contact_number:
4033 type: string
4034 method:
4035 type: string
4036 status:
4037 type: string
4038 status_label:
4039 type: string
4040 tracking_code:
4041 type: string
4042 created_at:
4043 type: string
4044 format: date-time
4045 updated_at:
4046 type: string
4047 format: date-time
4048 ReturnAddress:
4049 required:
4050 - address_id
4051 - first_name
4052 - last_name
4053 - street
4054 - contact_number
4055 - suburb
4056 - city
4057 - postal_code
4058 - country_code
4059 properties:
4060 address_id:
4061 type: integer
4062 first_name:
4063 type: string
4064 last_name:
4065 type: string
4066 street:
4067 type: array
4068 items:
4069 type: string
4070 contact_number:
4071 type: string
4072 suburb:
4073 type: string
4074 city:
4075 type: string
4076 postal_code:
4077 type: string
4078 country_code:
4079 type: string
4080 ReturnsConfig:
4081 type: object
4082 required:
4083 - reasons
4084 - methods
4085 - refund_methods
4086 properties:
4087 reasons:
4088 type: array
4089 items:
4090 $ref: '#/definitions/KeyValuePair'
4091 methods:
4092 type: array
4093 items:
4094 $ref: '#/definitions/KeyValuePair'
4095 refund_methods:
4096 type: array
4097 items:
4098 $ref: '#/definitions/KeyValuePair'
4099 KeyValuePair:
4100 type: object
4101 required:
4102 - label
4103 - value
4104 properties:
4105 label:
4106 type: string
4107 value:
4108 type: string
4109 FavouriteItem:
4110 type: object
4111 required:
4112 - item_id
4113 - created_at
4114 - product
4115 properties:
4116 item_id:
4117 type: integer
4118 format: int64
4119 description:
4120 type: string
4121 created_at:
4122 type: string
4123 format: date-time
4124 product:
4125 type: object
4126 $ref: '#/definitions/FavouriteProduct'
4127 FavouriteProduct:
4128 type: object
4129 required:
4130 - id
4131 - sku
4132 - name
4133 - brand
4134 - price
4135 - special_price
4136 - image
4137 properties:
4138 id:
4139 type: integer
4140 format: int32
4141 description:
4142 type: string
4143 sku:
4144 type: string
4145 name:
4146 type: string
4147 brand:
4148 type: string
4149 price:
4150 type: number
4151 format: float
4152 special_price:
4153 type: number
4154 format: float
4155 image:
4156 type: string
4157 Favourites:
4158 required:
4159 - count
4160 - page_size
4161 - page
4162 - items
4163 properties:
4164 count:
4165 type: integer
4166 format: int32
4167 page_size:
4168 type: integer
4169 format: int32
4170 page:
4171 type: integer
4172 format: int32
4173 items:
4174 type: array
4175 items:
4176 $ref: '#/definitions/FavouriteItem'
4177 FavouritesCount:
4178 required:
4179 - count
4180 properties:
4181 count:
4182 type: integer
4183 format: int32
4184parameters:
4185 first_name:
4186 name: first_name
4187 in: formData
4188 description: First name of the person
4189 required: true
4190 type: string
4191 last_name:
4192 name: last_name
4193 in: formData
4194 description: Last name of the person
4195 required: true
4196 type: string
4197 email:
4198 name: email
4199 in: formData
4200 description: Email address
4201 required: true
4202 type: string
4203 format: email
4204 street:
4205 name: 'street[]'
4206 in: formData
4207 description: 'Street address. Note this parameter may be repeated in the POST body to support multiple input lines for a street eg. street[]=19th Floor Media 24 Building && street[]=40 Heerengracht street'
4208 required: true
4209 type: string
4210 contact_number:
4211 name: contact_number
4212 in: formData
4213 description: "Recipient's mobile number eg. 0824547703"
4214 required: true
4215 type: string
4216 company:
4217 name: company
4218 in: formData
4219 description: 'Company name eg. Spree!'
4220 required: false
4221 type: string
4222 suburb:
4223 name: suburb
4224 in: formData
4225 description: Suburb name eg. Diep River
4226 required: true
4227 type: string
4228 postal_code:
4229 name: postal_code
4230 in: formData
4231 description: Postal code eg. 7943
4232 required: true
4233 type: string
4234 city:
4235 name: city
4236 in: formData
4237 description: City name eg. Cape Town
4238 required: true
4239 type: string
4240 country_code:
4241 name: country_code
4242 in: formData
4243 description: 'Country code/identifier eg. ZA. Note: Only ZA supported right now'
4244 required: true
4245 type: string
4246 return_id:
4247 name: returnId
4248 in: path
4249 description: Return id. Must be the id we display to customers
4250 required: true
4251 type: string
4252 order_id:
4253 name: orderId
4254 in: path
4255 description: Order id. Must be the id we display to customers
4256 required: true
4257 type: integer
4258 format: int64
4259securityDefinitions:
4260 shoppy_oauth2:
4261 type: oauth2
4262 flow: 'implicit'
4263 authorizationUrl: https://shoppy.mn/oauth2/authorize
4264 scopes:
4265 basic: login to your account and do stuff
4266 basic_auth:
4267 type: basic