· 5 years ago · Jul 23, 2020, 09:18 PM
1---
2openapi: 3.0.3
3info:
4 title: James IGP API
5 description: |
6 ## Como usar a API
7
8 ### Fazer login
9
10 Para fazer requests, você precisa primeiro realizar a autenticação no /login (você pode ver mais detalhes
11 na seção /login). Assim que o request for feito, será retornado um token JWT que você vai precisar enviar
12 no cabeçalho de todos os outros requests. Esse token dura X tempo, e depois que ele expirar você precisará
13 renovar enviando um POST para /tokens, que retornará um novo token JWT.
14
15 ### Paginação
16 Nos endpoints que retornam uma lista de objetos, existe um campo `meta` que contém a quantidade total de
17 recursos (por exemplo, a quantidade total de produtos dentro de uma determinada categoria).
18
19 Para pegar mais respostas, você pode enviar o parâmetros `limit` e `offset`.
20 version: 0.0.1
21servers:
22- url: "{custom}"
23 variables:
24 custom:
25 default: http://localhost:3106
26components:
27 schemas:
28 item:
29 type: object
30 properties:
31 id:
32 type: integer
33 quantity:
34 type: integer
35 instructions:
36 type: string
37 description: Instruções do item vindas do cliente, como 'sem picles' ou
38 'sem maionese'.
39 product:
40 "$ref": "#/components/schemas/product"
41 variants:
42 type: array
43 items:
44 "$ref": "#/components/schemas/variant"
45 created_at:
46 type: string
47 format: date-time
48 updated_at:
49 type: string
50 format: date-time
51 courier:
52 type: object
53 properties:
54 id:
55 type: integer
56 name:
57 type: string
58 phone:
59 type: string
60 customer:
61 type: object
62 properties:
63 id:
64 type: integer
65 name:
66 type: string
67 document:
68 type: string
69 error:
70 type: object
71 properties:
72 message:
73 type: string
74 required:
75 - message
76 photo:
77 type: object
78 properties:
79 origin:
80 type: object
81 properties:
82 url:
83 type: string
84 medium:
85 type: object
86 properties:
87 url:
88 type: string
89 small:
90 type: object
91 properties:
92 url:
93 type: string
94 variant:
95 type: object
96 properties:
97 name:
98 type: string
99 created_at:
100 type: string
101 format: date-time
102 updated_at:
103 type: string
104 format: date-time
105 sequence:
106 type: number
107 enabled:
108 type: boolean
109 options:
110 type: array
111 items:
112 type: object
113 properties:
114 name:
115 type: string
116 price:
117 type: number
118 enabled:
119 type: boolean
120 sequence:
121 type: number
122 order:
123 type: object
124 properties:
125 id:
126 type: integer
127 status:
128 type: string
129 enum:
130 - checked_out
131 - assigned
132 - accepted
133 - picked_up
134 - arrived
135 - delivered
136 cancelled_at:
137 type: string
138 format: date-time
139 sent_at:
140 type: string
141 format: date-time
142 created_at:
143 type: string
144 format: date-time
145 updated_at:
146 type: string
147 format: date-time
148 checked_out_at:
149 type: string
150 format: date-time
151 assigned_at:
152 type: string
153 format: date-time
154 accepted_at:
155 type: string
156 format: date-time
157 picked_up_at:
158 type: string
159 format: date-time
160 arrived_at:
161 type: string
162 format: date-time
163 delivered_at:
164 type: string
165 format: date-time
166 customer:
167 "$ref": "#/components/schemas/customer"
168 courier:
169 "$ref": "#/components/schemas/courier"
170 items:
171 type: array
172 items:
173 "$ref": "#/components/schemas/item"
174 category:
175 type: object
176 properties:
177 id:
178 type: integer
179 name:
180 type: string
181 products:
182 type: array
183 items:
184 "$ref": "#/components/schemas/product"
185 enabled:
186 type: boolean
187 sequence:
188 type: number
189 created_at:
190 type: string
191 format: date-time
192 updated_at:
193 type: string
194 format: date-time
195 product:
196 type: object
197 properties:
198 id:
199 type: integer
200 name:
201 type: string
202 created_at:
203 type: string
204 format: date-time
205 updated_at:
206 type: string
207 format: date-time
208 price:
209 type: number
210 description:
211 type: string
212 enabled:
213 type: boolean
214 photo:
215 "$ref": "#/components/schemas/photo"
216 category:
217 "$ref": "#/components/schemas/category"
218 sequence:
219 type: number
220 variants:
221 type: array
222 items:
223 "$ref": "#/components/schemas/variant"
224paths:
225 "/orders":
226 get:
227 summary: Lista pedidos
228 tags:
229 - Orders
230 description: |
231 Cada pedido possui um conjunto de itens (items). Cada item possui uma quantidade, uma referência ao produto,
232 quais as variantes do produto que foram selecionadas, e, dentro de cada variante, quais opções foram
233 selecionadas.
234 parameters:
235 - name: limit
236 in: query
237 schema:
238 type: integer
239 - name: offset
240 in: query
241 schema:
242 type: integer
243 responses:
244 '200':
245 description: Lista de pedidos
246 content:
247 application/json:
248 schema:
249 type: object
250 properties:
251 orders:
252 type: array
253 items:
254 "$ref": "#/components/schemas/order"
255 meta:
256 type: object
257 properties:
258 total:
259 type: integer
260 examples:
261 application/json:
262 value:
263 orders:
264 - customer:
265 name: Catarina Viana
266 document: '83307898951'
267 courier:
268 name: Luiza Rezende
269 phone: "+37266939844180"
270 items:
271 - product:
272 photo:
273 origin:
274 url: https://robohash.org/occaecatisolutaalias.png?size=300x300&set=set1
275 medium:
276 url: https://robohash.org/occaecatisolutaalias.png?size=300x300&set=set1
277 small:
278 url: https://robohash.org/occaecatisolutaalias.png?size=300x300&set=set1
279 variants:
280 - options:
281 - name: Irish Terrier
282 price: 334.09
283 enabled: true
284 sequence: 1.406
285 - name: Weimaraner
286 price: 148.91
287 enabled: true
288 sequence: 2
289 name: Ophion
290 sequence: 1.452
291 enabled: true
292 - options:
293 - name: Basenji
294 price: 198.7
295 enabled: true
296 sequence: 3.583
297 - name: Fox Terrier
298 price: 434.72
299 enabled: true
300 sequence: 4.657
301 name: Perses
302 sequence: 2
303 enabled: true
304 name: Scotch Eggs
305 price: 177.61
306 description: Espinafre
307 enabled: true
308 sequence: 1
309 options:
310 - name: Flatcoated Retriever
311 price: 691.96
312 enabled: true
313 sequence: 5.462
314 - name: Walker Hound
315 price: 591.82
316 enabled: true
317 sequence: 6
318 quantity: 1
319 instructions: Chuck Norris compresses his files by doing a
320 flying round house kick to the hard drive.
321 - product:
322 photo:
323 origin:
324 url: https://robohash.org/sitautnam.png?size=300x300&set=set1
325 medium:
326 url: https://robohash.org/sitautnam.png?size=300x300&set=set1
327 small:
328 url: https://robohash.org/sitautnam.png?size=300x300&set=set1
329 variants:
330 - options:
331 - name: Fox Terrier
332 price: 734.62
333 enabled: true
334 sequence: 7
335 - name: Saluki
336 price: 677.33
337 enabled: true
338 sequence: 8
339 name: Crius
340 sequence: 3
341 enabled: true
342 - options:
343 - name: Bluetick
344 price: 273.26
345 enabled: true
346 sequence: 9.292
347 - name: Rat Terrier
348 price: 138.01
349 enabled: true
350 sequence: 10.841
351 name: Prometheus
352 sequence: 4
353 enabled: true
354 name: French Toast
355 price: 220.68
356 description: Leite De Soja
357 enabled: true
358 sequence: 2.793
359 options:
360 - name: Blood Hound
361 price: 899.97
362 enabled: true
363 sequence: 11.776
364 - name: English Hound
365 price: 530.47
366 enabled: true
367 sequence: 12.524
368 quantity: 6
369 instructions: There is no Esc key on Chuck Norris' keyboard,
370 because no one escapes Chuck Norris.
371 status: delivered
372 checked_out_at: '2020-07-23T20:17:24.128Z'
373 assigned_at: '2020-07-23T20:18:24.128Z'
374 accepted_at: '2020-07-23T20:18:24.128Z'
375 picked_up_at: '2020-07-23T20:37:24.128Z'
376 arrived_at: '2020-07-23T20:47:24.128Z'
377 delivered_at: '2020-07-23T20:48:24.128Z'
378 sent_at: '2020-07-23T20:38:24.128Z'
379 created_at: '2020-07-23T21:07:24.128Z'
380 updated_at: '2020-07-23T21:07:24.128Z'
381 - customer:
382 name: João Pedro Ordonhes
383 document: '70734042999'
384 courier:
385 name: Francisco da Nóbrega
386 phone: "+9167933099482"
387 items:
388 - product:
389 photo:
390 origin:
391 url: https://robohash.org/quiaofficiavoluptatem.png?size=300x300&set=set1
392 medium:
393 url: https://robohash.org/quiaofficiavoluptatem.png?size=300x300&set=set1
394 small:
395 url: https://robohash.org/quiaofficiavoluptatem.png?size=300x300&set=set1
396 variants:
397 - options:
398 - name: Norfolk Terrier
399 price: 308.84
400 enabled: true
401 sequence: 13
402 - name: Yorkshire Terrier
403 price: 33.37
404 enabled: true
405 sequence: 14.757
406 name: Pallas
407 sequence: 5
408 enabled: true
409 - options:
410 - name: Appenzeller
411 price: 221.94
412 enabled: true
413 sequence: 15
414 - name: Westhighland Terrier
415 price: 245.4
416 enabled: true
417 sequence: 16
418 name: Iapetus
419 sequence: 6.642
420 enabled: true
421 name: Linguine with Clams
422 price: 903.9
423 description: Eschallots
424 enabled: true
425 sequence: 3
426 options:
427 - name: Irish Setter
428 price: 522.79
429 enabled: true
430 sequence: 17.533
431 - name: Samoyed
432 price: 737.88
433 enabled: true
434 sequence: 18.536
435 quantity: 8
436 instructions: Chuck Norris doesn't use a computer because
437 a computer does everything slower than Chuck Norris.
438 - product:
439 photo:
440 origin:
441 url: https://robohash.org/nonnatuserror.png?size=300x300&set=set1
442 medium:
443 url: https://robohash.org/nonnatuserror.png?size=300x300&set=set1
444 small:
445 url: https://robohash.org/nonnatuserror.png?size=300x300&set=set1
446 variants:
447 - options:
448 - name: Shihtzu
449 price: 931.09
450 enabled: true
451 sequence: 19.105
452 - name: Boston Bulldog
453 price: 626.89
454 enabled: true
455 sequence: 20.09
456 name: Tethys
457 sequence: 7
458 enabled: true
459 - options:
460 - name: Toy Terrier
461 price: 916.77
462 enabled: true
463 sequence: 21
464 - name: Rat Terrier
465 price: 814.74
466 enabled: true
467 sequence: 22
468 name: Phoebe
469 sequence: 8
470 enabled: true
471 name: Pierogi
472 price: 375.27
473 description: Nectarinas
474 enabled: true
475 sequence: 4
476 options:
477 - name: English Sheepdog
478 price: 131.79
479 enabled: true
480 sequence: 23.526
481 - name: Newfoundland
482 price: 902.73
483 enabled: true
484 sequence: 24.154
485 quantity: 3
486 instructions: There is no need to try catching Chuck Norris'
487 exceptions for recovery; every single throw he does is fatal.
488 status: delivered
489 checked_out_at: '2020-07-23T20:17:24.130Z'
490 assigned_at: '2020-07-23T20:18:24.130Z'
491 accepted_at: '2020-07-23T20:18:24.130Z'
492 picked_up_at: '2020-07-23T20:37:24.130Z'
493 arrived_at: '2020-07-23T20:47:24.130Z'
494 delivered_at: '2020-07-23T20:48:24.130Z'
495 sent_at: '2020-07-23T20:38:24.130Z'
496 created_at: '2020-07-23T21:07:24.131Z'
497 updated_at: '2020-07-23T21:07:24.131Z'
498 meta:
499 total: 2
500 "/orders/{id}":
501 patch:
502 summary: Atualiza um pedido
503 tags:
504 - Orders
505 description: Atualiza algum atributo do pedido. Por exemplo, o status.
506 parameters:
507 - name: id
508 in: path
509 schema:
510 type: integer
511 required: true
512 responses:
513 '200':
514 description: Pedido com os dados atualizados
515 content:
516 application/json:
517 schema:
518 type: object
519 properties:
520 order:
521 "$ref": "#/components/schemas/order"
522 examples:
523 application/json:
524 value:
525 order:
526 customer:
527 name: Sr. Enzo Miguel Barroso
528 document: '42838162514'
529 courier:
530 name: Sr. Vinícius Castanho
531 phone: "+97433946052166"
532 items:
533 - product:
534 photo:
535 origin:
536 url: https://robohash.org/perspiciatisliberoomnis.png?size=300x300&set=set1
537 medium:
538 url: https://robohash.org/perspiciatisliberoomnis.png?size=300x300&set=set1
539 small:
540 url: https://robohash.org/perspiciatisliberoomnis.png?size=300x300&set=set1
541 variants:
542 - options:
543 - name: Blood Hound
544 price: 787.33
545 enabled: true
546 sequence: 25.192
547 - name: Scottish Deerhound
548 price: 484.77
549 enabled: true
550 sequence: 26.607
551 name: Prometheus
552 sequence: 9
553 enabled: true
554 - options:
555 - name: American Terrier
556 price: 20.91
557 enabled: true
558 sequence: 27
559 - name: Border Collie
560 price: 945.97
561 enabled: true
562 sequence: 28
563 name: Clymene
564 sequence: 10
565 enabled: true
566 name: Katsu Curry
567 price: 661.82
568 description: Barramundi
569 enabled: true
570 sequence: 5.956
571 options:
572 - name: Saluki
573 price: 398.89
574 enabled: true
575 sequence: 29
576 - name: Pembroke
577 price: 34.94
578 enabled: true
579 sequence: 30
580 quantity: 0
581 instructions: Whiteboards are white because Chuck Norris scared
582 them that way.
583 - product:
584 photo:
585 origin:
586 url: https://robohash.org/estexercitationemsunt.png?size=300x300&set=set1
587 medium:
588 url: https://robohash.org/estexercitationemsunt.png?size=300x300&set=set1
589 small:
590 url: https://robohash.org/estexercitationemsunt.png?size=300x300&set=set1
591 variants:
592 - options:
593 - name: Pekinese
594 price: 414.83
595 enabled: true
596 sequence: 31
597 - name: Samoyed
598 price: 819.7
599 enabled: true
600 sequence: 32.99
601 name: Aura
602 sequence: 11
603 enabled: true
604 - options:
605 - name: Coonhound
606 price: 359.78
607 enabled: true
608 sequence: 33
609 - name: African
610 price: 603.26
611 enabled: true
612 sequence: 34.025
613 name: Ophion
614 sequence: 12
615 enabled: true
616 name: Peking Duck
617 price: 606.13
618 description: Tangerina
619 enabled: true
620 sequence: 6
621 options:
622 - name: African
623 price: 415.22
624 enabled: true
625 sequence: 35.117
626 - name: Ibizan Hound
627 price: 205.37
628 enabled: true
629 sequence: 36
630 quantity: 4
631 instructions: For Chuck Norris, NP-Hard = O(1).
632 status: delivered
633 checked_out_at: '2020-07-23T20:17:24.141Z'
634 assigned_at: '2020-07-23T20:18:24.141Z'
635 accepted_at: '2020-07-23T20:18:24.141Z'
636 picked_up_at: '2020-07-23T20:37:24.141Z'
637 arrived_at: '2020-07-23T20:47:24.141Z'
638 delivered_at: '2020-07-23T20:48:24.141Z'
639 sent_at: '2020-07-23T20:38:24.141Z'
640 created_at: '2020-07-23T21:07:24.141Z'
641 updated_at: '2020-07-23T21:07:24.141Z'
642 requestBody:
643 content:
644 application/x-www-form-urlencoded:
645 schema:
646 type: object
647 properties:
648 status:
649 type: string
650 enum:
651 - accepted
652 - picked_up
653 - arrived
654 - delivered
655 application/json:
656 schema:
657 type: object
658 properties:
659 status:
660 type: string
661 enum:
662 - accepted
663 - picked_up
664 - arrived
665 - delivered
666 "/categories/{category_id}/products/{id}":
667 patch:
668 summary: updates a product
669 tags:
670 - Products
671 parameters:
672 - name: category_id
673 in: path
674 schema:
675 type: integer
676 required: true
677 - name: id
678 in: path
679 schema:
680 type: integer
681 required: true
682 responses:
683 '200':
684 description: product updated
685 content:
686 application/json:
687 schema:
688 "$ref": "#/components/schemas/product"
689 examples:
690 application/json:
691 value:
692 photo:
693 origin:
694 url: https://robohash.org/beataevitaeat.png?size=300x300&set=set1
695 medium:
696 url: https://robohash.org/beataevitaeat.png?size=300x300&set=set1
697 small:
698 url: https://robohash.org/beataevitaeat.png?size=300x300&set=set1
699 variants:
700 - options:
701 - name: Kerryblue Terrier
702 price: 951.42
703 enabled: true
704 sequence: 37.059
705 - name: Borzoi
706 price: 219.15
707 enabled: true
708 sequence: 38.373
709 name: Epimetheus
710 sequence: 13
711 enabled: true
712 - options:
713 - name: Newfoundland
714 price: 526.24
715 enabled: true
716 sequence: 39
717 - name: Boxer
718 price: 634.88
719 enabled: true
720 sequence: 40.757
721 name: Selene
722 sequence: 14
723 enabled: true
724 name: Arepas
725 price: 938.21
726 description: Vinagre
727 enabled: true
728 sequence: 7
729 created_at: '2020-07-23T21:07:24.147Z'
730 updated_at: '2020-07-23T21:07:24.147Z'
731 requestBody:
732 content:
733 application/x-www-form-urlencoded:
734 schema:
735 type: object
736 properties:
737 name:
738 type: string
739 price:
740 type: number
741 description:
742 type: string
743 enabled:
744 type: boolean
745 photo:
746 "$ref": "#/components/schemas/photo"
747 sequence:
748 type: number
749 variants:
750 type: array
751 items:
752 "$ref": "#/components/schemas/variant"
753 application/json:
754 schema:
755 type: object
756 properties:
757 name:
758 type: string
759 price:
760 type: number
761 description:
762 type: string
763 enabled:
764 type: boolean
765 photo:
766 "$ref": "#/components/schemas/photo"
767 sequence:
768 type: number
769 variants:
770 type: array
771 items:
772 "$ref": "#/components/schemas/variant"
773 "/categories/{category_id}/products":
774 get:
775 summary: Lista produtos
776 tags:
777 - Products
778 description: |
779 Retorna uma lista de produtos cadastrados. Cada produto possui uma lista de atributos como nome, preço
780 (que vem como uma string em formato de ponto flutuante, em notação científica). Além disso, cada produto
781 possui também uma foto, uma categoria, e uma seqüência de variantes. Uma variante representa uma opção
782 dentro de um mesmo produto. Por exemplo, podemos ter cadastrado um produto "pizza grande", que possui uma
783 variante de sabor, e outra de borda recheada. Cada variante possui, por sua vez, uma lista de opções.
784 Você pode ver isso no exemplo de resposta do request.
785 parameters:
786 - name: category_id
787 in: path
788 schema:
789 type: integer
790 required: true
791 - name: limit
792 in: query
793 schema:
794 type: integer
795 - name: offset
796 in: query
797 schema:
798 type: integer
799 responses:
800 '200':
801 description: product list
802 content:
803 application/json:
804 schema:
805 type: object
806 properties:
807 products:
808 type: array
809 items:
810 "$ref": "#/components/schemas/product"
811 meta:
812 type: object
813 properties:
814 total:
815 type: integer
816 examples:
817 application/json:
818 value:
819 products:
820 - photo:
821 origin:
822 url: https://robohash.org/remveroconsequatur.png?size=300x300&set=set1
823 medium:
824 url: https://robohash.org/remveroconsequatur.png?size=300x300&set=set1
825 small:
826 url: https://robohash.org/remveroconsequatur.png?size=300x300&set=set1
827 variants:
828 - options:
829 - name: Calabresa
830 price: 19.99
831 enabled: true
832 sequence: 41.521
833 - name: Portuguesa
834 price: 19.99
835 enabled: true
836 sequence: 42.677
837 name: Sabores
838 sequence: 15.104
839 enabled: true
840 - options:
841 - name: Chocolate
842 price: 10.5
843 enabled: true
844 sequence: 43.352
845 - name: Chocolate
846 price: 7
847 enabled: true
848 sequence: 44
849 name: Borda recheada
850 sequence: 16.558
851 enabled: true
852 name: Pizza pequena
853 price: 29.99
854 description: Truta Defumada
855 enabled: true
856 sequence: 8.922
857 created_at: '2020-07-23T21:07:24.152Z'
858 updated_at: '2020-07-23T21:07:24.152Z'
859 - photo:
860 origin:
861 url: https://robohash.org/eumautaliquam.png?size=300x300&set=set1
862 medium:
863 url: https://robohash.org/eumautaliquam.png?size=300x300&set=set1
864 small:
865 url: https://robohash.org/eumautaliquam.png?size=300x300&set=set1
866 variants:
867 - options:
868 - name: Mussarela
869 price: 19.99
870 enabled: true
871 sequence: 45.491
872 - name: Mussarela
873 price: 19.99
874 enabled: true
875 sequence: 46.537
876 name: Sabores
877 sequence: 17.69
878 enabled: true
879 - options:
880 - name: Cheddar
881 price: 10.5
882 enabled: true
883 sequence: 47
884 - name: Catupiry
885 price: 7
886 enabled: true
887 sequence: 48.574
888 name: Borda recheada
889 sequence: 18
890 enabled: true
891 name: Pizza grande
892 price: 19.99
893 description: Xarope De Arroz
894 enabled: true
895 sequence: 9
896 created_at: '2020-07-23T21:07:24.153Z'
897 updated_at: '2020-07-23T21:07:24.153Z'
898 meta:
899 total: 2
900 post:
901 summary: creates a new product
902 tags:
903 - Products
904 parameters:
905 - name: category_id
906 in: path
907 schema:
908 type: integer
909 required: true
910 responses:
911 '200':
912 description: product created
913 content:
914 application/json:
915 schema:
916 "$ref": "#/components/schemas/product"
917 examples:
918 application/json:
919 value:
920 photo:
921 origin:
922 url: https://robohash.org/estaeaque.png?size=300x300&set=set1
923 medium:
924 url: https://robohash.org/estaeaque.png?size=300x300&set=set1
925 small:
926 url: https://robohash.org/estaeaque.png?size=300x300&set=set1
927 variants:
928 - options:
929 - name: Brabancon
930 price: 428.13
931 enabled: true
932 sequence: 49
933 - name: Appenzeller
934 price: 66.4
935 enabled: true
936 sequence: 50
937 name: Helios
938 sequence: 19.385
939 enabled: true
940 - options:
941 - name: Brittany Spaniel
942 price: 938.62
943 enabled: true
944 sequence: 51
945 - name: English Hound
946 price: 915.04
947 enabled: true
948 sequence: 52
949 name: Epimetheus
950 sequence: 20
951 enabled: true
952 name: Ricotta Stuffed Ravioli
953 price: 633.99
954 description: Creme De Queijo
955 enabled: true
956 sequence: 10
957 created_at: '2020-07-23T21:07:24.157Z'
958 updated_at: '2020-07-23T21:07:24.157Z'
959 requestBody:
960 content:
961 application/x-www-form-urlencoded:
962 schema:
963 type: object
964 properties:
965 name:
966 type: string
967 price:
968 type: number
969 description:
970 type: string
971 enabled:
972 type: boolean
973 photo:
974 "$ref": "#/components/schemas/photo"
975 sequence:
976 type: number
977 variants:
978 type: array
979 items:
980 "$ref": "#/components/schemas/variant"
981 required:
982 - name
983 - price
984 application/json:
985 schema:
986 type: object
987 properties:
988 name:
989 type: string
990 price:
991 type: number
992 description:
993 type: string
994 enabled:
995 type: boolean
996 photo:
997 "$ref": "#/components/schemas/photo"
998 sequence:
999 type: number
1000 variants:
1001 type: array
1002 items:
1003 "$ref": "#/components/schemas/variant"
1004 required:
1005 - name
1006 - price
1007