· 5 years ago · Dec 03, 2020, 12:38 PM
1{
2swagger: "2.0",
3info: {
4version: "1.0.0",
5title: "Offer Node Api",
6contact: {
7email: "tech.team.iproa@emag.ro"
8}
9},
10host: "api.offer-ro.emag.network",
11tags: [
12{
13name: "offer",
14description: "Offer endpoints"
15},
16{
17name: "promo",
18description: "Promo endpoints"
19}
20],
21schemes: [
22"http"
23],
24paths: {
25/offers: {
26get: {
27description: " <p>Search for offers by filters.</p> <b>Warning</b> this api is not recommended for usage on very broad queries. If your query will return thousands of page this api will provide poor performance because the higher the number of page you are requesting, the higher the response time will be for it.",
28tags: [
29"offer"
30],
31consumes: [
32"application/json"
33],
34produces: [
35"application/json"
36],
37parameters: [
38{
39$ref: "#/parameters/page"
40},
41{
42$ref: "#/parameters/rows"
43},
44{
45$ref: "#/parameters/fields"
46},
47{
48$ref: "#/parameters/level"
49},
50{
51in: "query",
52name: "category_id[]",
53type: "array",
54items: {
55type: "integer"
56},
57collectionFormat: "multi"
58},
59{
60in: "query",
61name: "hierarchical",
62type: "boolean",
63description: "If this parameter is not set, or set to false the categories specified above are considered leaf categories. If this is set to true, you can specify parent category_ids"
64},
65{
66in: "query",
67name: "brand_id[]",
68type: "array",
69items: {
70type: "integer"
71},
72collectionFormat: "multi"
73},
74{
75in: "query",
76name: "vendor_id[]",
77type: "array",
78items: {
79type: "integer"
80},
81collectionFormat: "multi"
82},
83{
84in: "query",
85name: "product_id",
86type: "array",
87items: {
88type: "integer"
89},
90collectionFormat: "multi"
91},
92{
93in: "query",
94name: "country_id",
95type: "array",
96items: {
97type: "integer"
98},
99collectionFormat: "multi"
100},
101{
102in: "query",
103name: "visible",
104type: "boolean"
105},
106{
107in: "query",
108name: "status",
109type: "array",
110items: {
111type: "integer",
112enum: [
113-1,
1140,
1151
116]
117},
118collectionFormat: "multi"
119},
120{
121in: "query",
122name: "availability_id",
123type: "array",
124items: {
125type: "integer"
126},
127collectionFormat: "multi"
128},
129{
130in: "query",
131name: "product_type_id",
132type: "array",
133items: {
134type: "integer"
135},
136collectionFormat: "multi"
137},
138{
139in: "query",
140name: "part_number",
141type: "array",
142items: {
143type: "string"
144},
145collectionFormat: "multi"
146},
147{
148in: "query",
149name: "part_number_key",
150type: "array",
151items: {
152type: "string"
153},
154collectionFormat: "multi"
155},
156{
157in: "query",
158name: "name",
159type: "array",
160items: {
161type: "string"
162},
163collectionFormat: "multi"
164},
165{
166in: "query",
167name: "vat_rate",
168type: "array",
169items: {
170type: "number"
171},
172collectionFormat: "multi"
173},
174{
175in: "query",
176name: "has_promotion",
177type: "boolean",
178collectionFormat: "multi"
179},
180{
181in: "query",
182name: "promotion_ids",
183type: "array",
184items: {
185type: "integer"
186},
187collectionFormat: "multi"
188},
189{
190in: "query",
191name: "package_ids",
192type: "array",
193items: {
194type: "string"
195},
196collectionFormat: "multi"
197},
198{
199in: "query",
200name: "fulfillment_by_emag",
201type: "boolean"
202},
203{
204in: "query",
205name: "global_eol",
206type: "integer"
207}
208],
209responses: {
210200: {
211description: "Array of offers",
212schema: {
213$ref: "#/definitions/PaginatedRespone"
214}
215}
216},
217security: [
218{
219api_key: [ ]
220}
221]
222}
223},
224/deep-pagination/offers: {
225get: {
226description: " <p>Search for offers by filters using a deep pagination mechanism.</p> On the first request you should either not specify the <b>cursor</b> parameter or you should use <b>cursor=*</b>. The end of the current query is reached when the api returns 0 offers. This api provides constant performance regardless of the number of pages.",
227tags: [
228"offer"
229],
230consumes: [
231"application/json"
232],
233produces: [
234"application/json"
235],
236parameters: [
237{
238in: "query",
239name: "cursor",
240type: "string",
241default: "*"
242},
243{
244$ref: "#/parameters/rows"
245},
246{
247in: "query",
248name: "rows",
249type: "integer",
250description: "Number of offers to be returned per page"
251},
252{
253$ref: "#/parameters/fields"
254},
255{
256$ref: "#/parameters/level"
257},
258{
259in: "query",
260name: "category_id[]",
261type: "array",
262items: {
263type: "integer"
264},
265collectionFormat: "multi"
266},
267{
268in: "query",
269name: "hierarchical",
270type: "boolean",
271description: "If this parameter is not set, or set to false the categories specified above are considered leaf categories. If this is set to true, you can specify parent category_ids"
272},
273{
274in: "query",
275name: "brand_id[]",
276type: "array",
277items: {
278type: "integer"
279},
280collectionFormat: "multi"
281},
282{
283in: "query",
284name: "vendor_id[]",
285type: "array",
286items: {
287type: "integer"
288},
289collectionFormat: "multi"
290},
291{
292in: "query",
293name: "product_id",
294type: "array",
295items: {
296type: "integer"
297},
298collectionFormat: "multi"
299},
300{
301in: "query",
302name: "country_id",
303type: "array",
304items: {
305type: "integer"
306},
307collectionFormat: "multi"
308},
309{
310in: "query",
311name: "visible",
312type: "boolean"
313},
314{
315in: "query",
316name: "status",
317type: "array",
318items: {
319type: "integer",
320enum: [
321-1,
3220,
3231
324]
325},
326collectionFormat: "multi"
327},
328{
329in: "query",
330name: "availability_id",
331type: "array",
332items: {
333type: "integer"
334},
335collectionFormat: "multi"
336},
337{
338in: "query",
339name: "product_type_id",
340type: "array",
341items: {
342type: "integer"
343},
344collectionFormat: "multi"
345},
346{
347in: "query",
348name: "part_number",
349type: "array",
350items: {
351type: "string"
352},
353collectionFormat: "multi"
354},
355{
356in: "query",
357name: "part_number_key",
358type: "array",
359items: {
360type: "string"
361},
362collectionFormat: "multi"
363},
364{
365in: "query",
366name: "name",
367type: "array",
368items: {
369type: "string"
370},
371collectionFormat: "multi"
372},
373{
374in: "query",
375name: "vat_rate",
376type: "array",
377items: {
378type: "number"
379},
380collectionFormat: "multi"
381},
382{
383in: "query",
384name: "has_promotion",
385type: "boolean",
386collectionFormat: "multi"
387},
388{
389in: "query",
390name: "promotion_ids",
391type: "array",
392items: {
393type: "integer"
394},
395collectionFormat: "multi"
396},
397{
398in: "query",
399name: "package_ids",
400type: "array",
401items: {
402type: "string"
403},
404collectionFormat: "multi"
405},
406{
407in: "query",
408name: "fulfillment_by_emag",
409type: "boolean"
410}
411],
412responses: {
413200: {
414description: "Success",
415schema: {
416$ref: "#/definitions/DeepPaginatedResponse"
417}
418}
419},
420security: [
421{
422api_key: [ ]
423}
424]
425}
426},
427/offers/{offerId}: {
428get: {
429description: "Get data for a specific offer.",
430tags: [
431"offer"
432],
433consumes: [
434"application/json"
435],
436produces: [
437"application/json"
438],
439parameters: [
440{
441$ref: "#/parameters/fields"
442},
443{
444$ref: "#/parameters/offerId"
445},
446{
447$ref: "#/parameters/level"
448}
449],
450responses: {
451200: {
452description: "Success",
453schema: {
454$ref: "#/definitions/SingleOfferResponse"
455}
456}
457},
458security: [
459{
460api_key: [ ]
461}
462]
463}
464},
465/offers/query: {
466get: {
467description: "<p>You can use this api to make complex queries through the <b>q</b> parameter. The parameter uses the <a href='https://en.wikipedia.org/wiki/Polish_notation'>polish normal form</a> to describe the query.</p> <b>Example:</b> (and (or (equal category_id 33) (equal category_id 200) (equal status 1)) (not (equal availability_id 3)) (in brand_id (12, 13))) - this query searches for all the offers that: have category 33 or 200 and status is 1 and availability is not 3 and brand is either 12 or 13. <br><br> <b>List of predicates:</b> <ul><li>and</li><li>or</li><li>not</li><li>equal</li><li>and</li><li>bigger</li><li>smaller</li><li>in</li></ul>",
468tags: [
469"offer"
470],
471consumes: [
472"application/json"
473],
474produces: [
475"application/json"
476],
477parameters: [
478{
479in: "query",
480name: "q",
481type: "string",
482description: "Parameter to describe complex queries. "
483},
484{
485$ref: "#/parameters/page"
486},
487{
488$ref: "#/parameters/rows"
489},
490{
491$ref: "#/parameters/fields"
492},
493{
494$ref: "#/parameters/level"
495}
496],
497responses: {
498200: {
499description: "Success",
500schema: {
501$ref: "#/definitions/PaginatedRespone"
502}
503}
504},
505security: [
506{
507api_key: [ ]
508}
509]
510},
511post: {
512description: "<p>You can use this api to make complex queries through the request body. The query in the request body is expected to be in the <a href='https://en.wikipedia.org/wiki/Polish_notation'>polish normal form</a>.</p> <b>Example:</b> (and (or (equal category_id 33) (equal category_id 200) (equal status 1)) (not (equal availability_id 3)) (in brand_id (12, 13))) - this query searches for all the offers that: have category 33 or 200 and status is 1 and availability is not 3 and brand is either 12 or 13. <br><br> <b>List of predicates:</b> <ul><li>and</li><li>or</li><li>not</li><li>equal</li><li>and</li><li>bigger</li><li>smaller</li><li>in</li></ul>",
513tags: [
514"offer"
515],
516consumes: [
517"text/plain"
518],
519produces: [
520"application/json"
521],
522parameters: [
523{
524$ref: "#/parameters/fields"
525},
526{
527$ref: "#/parameters/level"
528},
529{
530in: "body",
531name: "query",
532required: true,
533schema: {
534type: "string",
535example: "(and (or (equal category_id 33) (equal category_id 200) (equal status 1)) (not (equal availability_id 3)) (in brand_id (12, 13)))"
536}
537}
538],
539responses: {
540200: {
541description: "Success",
542schema: {
543$ref: "#/definitions/PaginatedRespone"
544}
545}
546},
547security: [
548{
549api_key: [ ]
550}
551]
552}
553},
554/promotion/{offerId}: {
555get: {
556description: "Returns all the promotion packages for a given offer.",
557tags: [
558"promo"
559],
560consumes: [
561"application/json"
562],
563produces: [
564"application/json"
565],
566parameters: [
567{
568$ref: "#/parameters/promoFields"
569},
570{
571$ref: "#/parameters/offerId"
572}
573],
574responses: {
575200: {
576description: "Success",
577schema: {
578$ref: "#/definitions/PromoPackagesResponse"
579}
580}
581},
582security: [
583{
584api_key: [ ]
585}
586]
587}
588}
589},
590securityDefinitions: {
591api_key: {
592type: "apiKey",
593name: "_token",
594in: "query"
595}
596},
597parameters: {
598page: {
599name: "page",
600in: "query",
601description: "Number of the page to be retrieved",
602type: "integer"
603},
604rows: {
605in: "query",
606name: "rows",
607description: "Number of results per page to be retrieved",
608type: "integer"
609},
610offerId: {
611name: "offerId",
612in: "path",
613description: "ID of the offer",
614required: true,
615type: "integer"
616},
617fields: {
618name: "fields[]",
619in: "query",
620description: "List of top-level fields to return from the offer. Ex: category, brand, status, etc.",
621required: false,
622type: "array",
623items: {
624type: "string"
625},
626collectionFormat: "multi"
627},
628promoFields: {
629name: "fields[]",
630in: "query",
631description: "List of top-level fields to return from the offer. Ex: package_id, version, status",
632required: false,
633type: "array",
634items: {
635type: "string"
636},
637collectionFormat: "multi"
638},
639level: {
640name: "level[]",
641in: "query",
642description: "Parameter to choose whether we also want promotions. Dont send this parameter if you want just the offer. Send level[]=OFFER&level[]=PROMO if you also want the promotion data",
643required: false,
644type: "array",
645items: {
646type: "string",
647enum: [
648"OFFER",
649"PROMO"
650]
651},
652collectionFormat: "multi"
653}
654},
655definitions: {
656SingleOfferResponse: {
657type: "object",
658properties: {
659meta: {
660type: "object",
661properties: {
662code: {
663type: "integer",
664description: "Response code"
665},
666message: {
667type: "string",
668description: "Error message. Key will be missing of there is no error"
669}
670}
671},
672data: {
673$ref: "#/definitions/Offer"
674}
675}
676},
677PromoPackagesResponse: {
678type: "object",
679properties: {
680meta: {
681type: "object",
682properties: {
683code: {
684type: "integer",
685description: "Response code"
686},
687message: {
688type: "string",
689description: "Error message. Key will be missing of there is no error"
690}
691}
692},
693data: {
694type: "array",
695items: {
696$ref: "#/definitions/Offer"
697}
698}
699}
700},
701PaginatedRespone: {
702type: "object",
703properties: {
704meta: {
705type: "object",
706properties: {
707code: {
708type: "integer",
709description: "Response code"
710},
711message: {
712type: "string",
713description: "Error message. Key will be missing of there is no error"
714}
715}
716},
717pagination: {
718type: "object",
719properties: {
720next: {
721type: "string",
722description: "Link to the next page. Null if you are on the last page"
723},
724previous: {
725type: "string",
726description: "Link to the previous page. Null if you are on the first page"
727},
728pages: {
729type: "integer",
730description: "Number of pages"
731},
732records: {
733type: "integer",
734description: "Total number of offers found"
735}
736}
737},
738data: {
739type: "array",
740items: {
741$ref: "#/definitions/Offer"
742}
743}
744}
745},
746DeepPaginatedResponse: {
747type: "object",
748properties: {
749meta: {
750type: "object",
751properties: {
752code: {
753type: "integer",
754description: "Response code"
755},
756message: {
757type: "string",
758description: "Error message. Key will be missing of there is no error"
759}
760}
761},
762pagination: {
763type: "object",
764properties: {
765next: {
766type: "string",
767description: "Link to the next page. Null if you are on the last page"
768},
769cursor: {
770type: "string",
771description: "Cursor to be used on the next api call"
772}
773}
774},
775data: {
776type: "array",
777items: {
778$ref: "#/definitions/Offer"
779}
780}
781}
782},
783Offer: {
784type: "object",
785properties: {
786id: {
787type: "integer",
788description: "The id of the offer"
789},
790product_id: {
791type: "integer",
792description: "The id of the product"
793},
794country_id: {
795type: "integer",
796description: "This field represents the id of the country that the offer is sold in. (1 - RO, 2 - BG, 3 - HU)"
797},
798platform_id: {
799type: "integer",
800description: "This field represents the id of the platform that the offer is sold on (emag.ro/bg/hu or fashiondays.ro/bg/hu) Which platform (website) this offer is sold on? (1 - emag.ro, 2 - emag.bg, 3 - emag.hu, 9 - fd.ro, 10 - fd.bg, 11 - fd.bg)"
801},
802brand: {
803type: "object",
804description: "This field contains the id and the name of the brand"
805},
806category: {
807type: "object",
808description: "This field contains the id and the name of the category"
809},
810eans: {
811type: "array",
812description: "This field contains an array of European Article Numbers related to the offer",
813default: "null",
814items: {
815type: "string"
816}
817},
818product_type: {
819type: "integer",
820description: "This field represents the type of the product (e.g. material_general, voucher, tax_service, etc). For more information, access https://confluence.emag.network/display/PRJ/SCM+Product+type+mapping",
821default: "null"
822},
823product_type_id: {
824type: "integer",
825description: "The id of the product type"
826},
827class: {
828type: "string",
829description: "TODO",
830default: "null"
831},
832lifecycle: {
833type: "string",
834description: "TODO",
835default: "null"
836},
837predecessor_id: {
838type: "integer",
839description: "TODO",
840default: "null"
841},
842name: {
843type: "string",
844description: "The name of the offer"
845},
846general_name: {
847type: "string",
848description: "This field represent the general name of the offer in english and it is usually filled when the name of the offer is in a foreign language (e.g. bulgarian)",
849default: "null"
850},
851part_number: {
852type: "string",
853description: "This field represents the universal part number of the product being the same as the one from the manufacturer."
854},
855part_number_key: {
856type: "string",
857description: "This field represents the product identification number, internally assigned by eMAG."
858},
859doc_id: {
860type: "integer",
861description: "The doc id of the offer"
862},
863vat_rate: {
864type: "number",
865format: "float",
866description: "The vat rate related to the offer"
867},
868medium_cost: {
869type: "number",
870format: "float",
871description: "The medium cost of the offer",
872default: "null"
873},
874base_price: {
875type: "number",
876format: "float",
877description: "The base price of the offer",
878default: "null"
879},
880base_price_with_vat: {
881type: "number",
882format: "float",
883description: "The base price (including vat) of the offer",
884default: "null"
885},
886sale_price: {
887type: "number",
888format: "float",
889description: "The sale price of the offer",
890default: "null"
891},
892sale_price_with_vat: {
893type: "number",
894format: "float",
895description: "The sale price (including vat) of the offer",
896default: "null"
897},
898promo_price: {
899type: "number",
900format: "float",
901description: "The promo price of the offer",
902default: "null"
903},
904promo_price_with_vat: {
905type: "number",
906format: "float",
907description: "The promo price (including vat) of the offer",
908default: "null"
909},
910currency: {
911type: "string",
912description: "The currency of the offer",
913default: "null"
914},
915visible: {
916type: "boolean",
917description: "A flag which indicates if the offer is visible or not",
918default: "false"
919},
920is_documented: {
921type: "boolean",
922description: "A flag that specifies if the offer is documented in the doc application.",
923default: "false"
924},
925tier: {
926type: "string",
927description: "TODO"
928},
929order_increment_step: {
930type: "number",
931format: "float",
932description: "TODO",
933default: "null"
934},
935min_order_quantity: {
936type: "integer",
937description: "The minimum number items that needs to be ordered",
938default: "null"
939},
940max_order_quantity: {
941type: "integer",
942description: "The maximum number items that needs to be ordered",
943default: "null"
944},
945short_description: {
946type: "string",
947description: "A short description of the offer",
948default: "null"
949},
950status: {
951type: "integer",
952description: "A flag that indicates the status of the offer",
953default: "null"
954},
955availability_id: {
956type: "integer",
957description: "The id of the availability. The availability name can be determined by using the availability API"
958},
959is_price_blocked: {
960type: "integer",
961description: "A flag that indicates if the price is blocked for the offer or not",
962default: "null"
963},
964inactivation_reason: {
965type: "string",
966description: "The inactivation reason for inactive offers"
967},
968is_service: {
969type: "boolean",
970description: "A flag that indicates if the offer represents a service or not",
971default: "false"
972},
973vat_rate_erp_code: {
974type: "string",
975description: "Each vat rate also has a code in SAP. This is the code corresponding to the vat rate of the offer.",
976default: "null"
977},
978buying_options: {
979type: "object",
980description: "TODO",
981default: "null"
982},
983is_reversal_vat: {
984type: "boolean",
985description: "TODO",
986default: "false"
987},
988is_test: {
989type: "integer",
990description: "A flag that indicates if the offer is just a test",
991default: "0"
992},
993fulfillment_by_emag: {
994type: "boolean",
995description: "A flag that indicates if the fulfillment of the offer will be done by eMAG",
996default: "false"
997},
998is_main: {
999type: "boolean",
1000description: "A flag that indicates if the offer is a main one or not",
1001default: "false"
1002},
1003sort_order: {
1004type: "integer",
1005description: "The sort order of the offer",
1006default: "null"
1007},
1008acquisition_price: {
1009type: "number",
1010format: "float",
1011description: "The acquisition price of the offer",
1012default: "null"
1013},
1014green_tax: {
1015type: "number",
1016format: "float",
1017description: "The green tax that is associated with the offer",
1018default: "null"
1019},
1020uom: {
1021type: "object",
1022description: "TODO"
1023},
1024handling_time: {
1025type: "integer",
1026description: "This field represents a realistic estimation of the time in which the product will arrive to the client."
1027},
1028barcodes: {
1029type: "array",
1030description: "An array that contains the list of barcodes related to the offer. It might be empty.",
1031items: {
1032type: "string"
1033}
1034},
1035characteristics: {
1036type: "array",
1037description: "An array that contains characteristics of the offer. It might be empty.",
1038items: {
1039$ref: "#/definitions/Characteristic"
1040}
1041},
1042margin: {
1043type: "object",
1044description: "TODO",
1045default: "null"
1046},
1047threshold: {
1048type: "object",
1049description: "TODO",
1050default: "null"
1051},
1052price_lock: {
1053type: "object",
1054description: "TODO",
1055default: "null"
1056},
1057performance_type: {
1058type: "integer",
1059description: "This flag is an integer that indicates how well the product is selling.",
1060default: "null"
1061},
1062step: {
1063type: "object",
1064description: "TODO"
1065},
1066supplier_order: {
1067type: "object",
1068description: "This field contains various information about the supplier order",
1069default: "null",
1070items: {
1071$ref: "#/definitions/SupplierOrder"
1072}
1073},
1074supplier_offer: {
1075type: "object",
1076description: "This field contains various information about the supplier offer",
1077default: "null",
1078items: {
1079$ref: "#/definitions/SupplierOffer"
1080}
1081},
1082warranties: {
1083type: "array",
1084description: "An array that contains various warranties related to the offer",
1085items: {
1086$ref: "#/definitions/Warranty"
1087}
1088},
1089services: {
1090type: "array",
1091description: "An array that contains various services related to the offer",
1092items: {
1093$ref: "#/definitions/Service"
1094}
1095},
1096storage: {
1097type: "array",
1098description: "An array that contains various storage information related to the offer",
1099items: {
1100$ref: "#/definitions/Storage"
1101}
1102},
1103confirmed_retail_price: {
1104type: "boolean",
1105description: "The confirmed retail price of the offer",
1106default: "null"
1107},
1108warehouse_availability_key: {
1109type: "string",
1110description: "This field contains a binary string in Base32 format, every position in the string represents a specific delivery point (ex. Depozit Chiajna, Showroom Crangasi, Showroom Iasi, etc.).",
1111default: "null"
1112},
1113best_sort_order_discount: {
1114type: "object",
1115description: "This field represents the value for the best voucher that applies on the offer.",
1116default: "null"
1117},
1118offer_created: {
1119type: "object",
1120description: "The time when the offer was created (contains date, timezone type, timezone)"
1121},
1122offer_modified: {
1123type: "object",
1124description: "The time when the offer was last modified (contains date, timezone type, timezone)"
1125},
1126cmmp: {
1127type: "object",
1128description: "This field represents the smallest price.",
1129default: "null"
1130},
1131price_age: {
1132type: "object",
1133description: "TODO",
1134default: "null"
1135},
1136quantity: {
1137type: "integer",
1138description: "The number of pieces that are in stock for the offer"
1139},
1140product_status: {
1141type: "integer",
1142description: "This is a flag that indicates the status of the product (0 - inactive, 1 - active)"
1143},
1144available_in_days: {
1145type: "integer",
1146description: "This flag indicates the number of days in which the offer will be available again if it becomes out of stock."
1147},
1148emag_club: {
1149type: "integer",
1150description: "This flag indicates if the offer is part of the eMAG Genius program or not"
1151},
1152unfair_price: {
1153type: "boolean",
1154description: "This flag indicates if the offer has an unfair price or not",
1155default: "false"
1156},
1157has_all_year_cmp: {
1158type: "boolean",
1159description: "This flag indicates if the offer is being part of 'Deschide Romania' campaign. For more details access https://confluence.emag.network/display/DEVEOS/Offer+Flags+Integration",
1160default: "false"
1161},
1162open_package: {
1163type: "boolean",
1164description: "This flag indicates if the package can be opened at the destination or not.",
1165default: "false"
1166},
1167free_return: {
1168type: "boolean",
1169description: "This flag indicates if the offer benefits from free return or not.",
1170default: "false"
1171},
1172return_period: {
1173type: "integer",
1174description: "This flag indicates the number of days in which the customer can return a package",
1175default: "0"
1176},
1177pharmacy: {
1178type: "string",
1179description: "This field is used only for pharmacy related offers. The possible values for this field are: food supplement, medical device, drug."
1180},
1181global_eol: {
1182type: "integer",
1183description: "This flag represents the global end of life of the offer. A value of 1 means that the product won't be bought anymore from the supplier.",
1184default: 0
1185},
1186parent_offer_id: {
1187type: "integer",
1188description: "The id of the parent offer (this usually applies to resealed products)",
1189default: null
1190}
1191}
1192},
1193PromoPackage: {
1194type: "object"
1195},
1196Characteristic: {
1197type: "object",
1198properties: {
1199id: {
1200type: "integer"
1201},
1202name: {
1203type: "string"
1204},
1205type: {
1206type: "string"
1207},
1208value: {
1209type: "string"
1210}
1211}
1212},
1213SupplierOrder: {
1214type: "object",
1215properties: {
1216id: {
1217type: "integer"
1218},
1219type: {
1220type: "string"
1221},
1222price: {
1223type: "number",
1224format: "float"
1225},
1226expiration_date: {
1227type: "string",
1228format: "date-time"
1229},
1230created: {
1231type: "string",
1232format: "date-time"
1233},
1234modified: {
1235type: "string",
1236format: "date-time"
1237},
1238supplier: {
1239type: "object",
1240properties: {
1241id: {
1242type: "integer"
1243},
1244name: {
1245type: "integer"
1246}
1247}
1248}
1249}
1250},
1251SupplierOffer: {
1252type: "object",
1253properties: {
1254id: {
1255type: "integer"
1256},
1257type: {
1258type: "string"
1259},
1260price: {
1261type: "number",
1262format: "float"
1263},
1264expiration_date: {
1265type: "string",
1266format: "date-time"
1267},
1268created: {
1269type: "string",
1270format: "date-time"
1271},
1272modified: {
1273type: "string",
1274format: "date-time"
1275},
1276supplier: {
1277type: "object",
1278properties: {
1279id: {
1280type: "integer"
1281},
1282name: {
1283type: "integer"
1284}
1285}
1286}
1287}
1288},
1289Warranty: {
1290type: "object",
1291properties: {
1292entity: {
1293type: "string"
1294},
1295type: {
1296type: "string"
1297},
1298value: {
1299type: "string",
1300default: "null"
1301},
1302id: {
1303type: "integer"
1304},
1305product_id: {
1306type: "integer"
1307},
1308supplier_update: {
1309type: "string"
1310}
1311}
1312},
1313Service: {
1314type: "object"
1315},
1316Storage: {
1317type: "object"
1318}
1319}
1320}