# Get information of a Merchant Endpoint to get data of a specific merchant, such as basic info, menus, and services. - this endpoint can require an for authentication, and the Software Service that hosts the endpoint can decide whether it is needed. - The Software Service can pass the data through the PUT /v1/merchantOnboarding endpoint. > HOST: DIRECTION: Endpoint: GET /v1/merchant Version: v.1.0.6 Security: apiKey ## Response 200 fields (application/json): - `lastUpdate` (string) The last modified date and time in ISO timestamp format but with type String. This should be used in conjuction of the TTL field to update the information on the ordering aplication. (UTC date-time in ISO timestamp format. See [Guidelines](#section/General-Guidelines) for more info)." > Example: "2021-05-27T20:45:10.332Z" - `TTL` (integer) Time to Live (in seconds). - Min: 500 - Max: 86400 A new request must be done when the TTL expires. > Example: 500 - `id` (string, required) Unique Identifier. Identifies the merchant in the different systems that the merchant will communicate. This id must be generated by the merchant's . > The software service should ensure that merchantId is unique. > If this is not possible, it is recommended to at least use a UUID. Example: "22815773000169-dbc7e35a-c936-4665-9e13-eb55eb8b6824" - `status` (string, required) Indicates if the Merchant is Available or Unavailable. Only use this type when you must close (disable) the merchant due to an unexpected event and you don't know when the service will be re-established (e.g. do not use for holidays). Enum: "AVAILABLE", "UNAVAILABLE" - `basicInfo` (object, required) A required entity to implement. Describes basic info of a merchant. - `basicInfo.name` (string) Merchant Public Name > Example: "Pizza Plaza" - `basicInfo.document` (string) Merchant Document > Example: "22815773000169" - `basicInfo.corporateName` (string) Merchant Corporate Name > Example: "Food Company" - `basicInfo.description` (string) Merchant Description > Example: "Food company specializing in pizzas." - `basicInfo.averageTicket` (number) Average Ticket. Can be used to show the price range of items available at the merchant. It is not mandatory, but recommended to be used. > Example: 90 - `basicInfo.averagePreparationTime` (number) Average amount of time preparing an order takes, in minutes. > Example: 20 - `basicInfo.minOrderValue` (object) Minimum order value that the merchant accepts. > - `basicInfo.minOrderValue.value` (number, required) Price value. 4 decimals places are accepted Example: 40 - `basicInfo.minOrderValue.currency` (string, required) The 3-letter ISO 4217 currency code. Example: "BRL" - `basicInfo.merchantType` (string) Merchant Type.Currently, only is accepted. > Enum: "RESTAURANT" - `basicInfo.merchantCategories` (array) Merchant Categories > Enum: "BURGERS", "PIZZA", "FAST_FOOD", "HOT_DOG", "JAPANESE", "DESSERTS", "AMERICAN", "ICE_CREAM", "BBQ", "SANDWICH", "MEXICAN", "BRAZILIAN", "PASTRY", "ARABIAN", "COMFORT_FOOD", "VEGETARIAN", "VEGAN", "BAKERY", "HEALTHY", "ITALIAN", "CHINESE", "JUICE_SMOOTHIES", "SEAFOOD", "CAFE", "SALADS", "COFFEE_TEA", "PASTA", "BREAKFAST_BRUNCH", "LATIN_AMERICAN", "CONVENIENCE", "PUB", "HAWAIIAN", "EUROPEAN", "FAMILY_MEALS", "FRENCH", "INDIAN", "PORTUGUESE", "SPANISH", "GOURMET", "KIDS_FRIENDLY", "SOUTH_AMERICAN", "SPECIALTY_FOODS", "ARGENTINIAN", "PREMIUM", "AFFORDABLE_MEALS" - `basicInfo.address` (object) Merchant Address > - `basicInfo.address.country` (string, required) Two-letter [ISO 3166-1 alpha-2](https://www.iso.org/standard/72482.html) country code. Example: "BR" - `basicInfo.address.state` (string, required) State or country subdivision. It is recommended (but not required) that you use the [ISO 3166-2](https://www.iso.org/standard/72483.html) representation. Example: "BR-SP" - `basicInfo.address.city` (string, required) City name. Example: "São Paulo" - `basicInfo.address.district` (string, required) District or Neighborhood name. Example: "Moema" - `basicInfo.address.street` (string, required) Street Name. Example: "Plaza Avenue" - `basicInfo.address.number` (string, required) Street Number. Example: "100" - `basicInfo.address.postalCode` (string, required) Postal Code Example: "20111-000" - `basicInfo.address.complement` (string, required) Address complement. Example: "BL 02 AP 31" - `basicInfo.address.reference` (string) Address reference. Example: "Yellow House" - `basicInfo.address.latitude` (number, required) Latitude in degrees. Values are restricted to the range [[-90, 90]]. Example: -23.54809 - `basicInfo.address.longitude` (number, required) Longitude in degrees. Values are restricted to the range [[-180, 180]]. Example: -46.63638 - `basicInfo.contactEmails` (array, required) Merchant Contact Emails. . Example: ["food@company.com"] - `basicInfo.contactPhones` (object, required) Merchant Contact Phones. - `basicInfo.contactPhones.commercialNumber` (string, required) Telephone number of the merchant Example: "11999999999" - `basicInfo.contactPhones.whatsappNumber` (string) Whatsapp number of the merchant, Keeta will temporarily ignore this information. > Example: "11998888888" - `basicInfo.logoImage` (object) Image to be used as the merchant logo. > - `basicInfo.logoImage.URL` (string, required) URL pointing to an image of the merchant logo. Image requirements: - Supports standard HTTP/HTTPS external image URLs. - File size must be less than 5MB, it is recommended to be less than 2MB. - Support JPG, PNG, JPEG format. - The width of the image cannot be less than 600px, and the height cannot be less than 450px. The recommended aspect ratio is 4:3, but this is not a constraint. > It is expected that the images referenced in the URL are downloaded from the server that is making the request, because the URL may no longer be valid after a period of time. Example: "https://food-company.com/image.jpg" - `basicInfo.logoImage.CRC-32` (string) CRC-32 of the image file. This field can be used to check for changes in the image file. Example: "96b41025" - `basicInfo.bannerImage` (object) Image to be used as the merchant banner (the banner display depends on the client application interface). > - `basicInfo.createdAt` (string) Merchant creation date and time. \n\n(UTC date-time in ISO timestamp format. See [Guidelines](#section/General-Guidelines) for more info). > - `basicInfo.acceptedCards` (array) Indicates which card brands are accepted by the merchant. > Enum: "VISA", "MASTERCARD", "DINERS", "AMEX", "HIPERCARD", "ELO", "AURA", "DISCOVER", "VR_BENEFICIOS", "SODEXO", "TICKET", "GOOD_CARD", "BANESCARD", "SOROCARD", "POLICARD", "VALECARD", "AGICARD", "JCB", "CREDSYSTEM", "CABAL", "GREEN_CARD", "VEROCHEQUE", "AVISTA", "OTHER" - `services` (array, required) A required entity to implement. Describes food ordering services details for a merchant. - `services.id` (string, required) Unique Identifier Example: "f078e8e2-3044-4eec-b4a8-8359810de123" - `services.status` (string) Indicates if the entity is Avaliable or Unavaliable. Only use this type when you must disable the entity due to an unexpected event and you don't know when the service will be re-established (e.g. do not use for holidays). > Enum: "AVAILABLE", "UNAVAILABLE" - `services.serviceType` (string, required) The type of service being offered: - for orders that will be delivered to the customer's address. - orders that will be picked up at the establishment by the customer - orders that will be consumed inside the establishment. Enum: "DELIVERY", "TAKEOUT", "INDOOR" - `services.serviceTiming` (object) Information regarding the accepted service times. > - `services.serviceTiming.timing` (array) Indicates the timings that the service accepts: : for orders that must be prepared immediately. : for orders scheduled for a specific date and time. : for orders that will only be delivered when the consumer indicates that they are going to pick it up. Please inform all accepted types in the field. If not informed, defaults to the option. Enum: "INSTANT", "SCHEDULED", "ONDEMAND" - `services.serviceTiming.schedule` (object) Information regarding the time windows for scheduling. This only applies to the service timing. - `services.serviceTiming.schedule.scheduleTimeWindow` (string, required) Time window where scheduling will be possible. > Example: If is chosen, then the available scheduling times will be displayed every 15 minutes (e.g. 9:15, 9:30, 9:45, 10:00). Enum: "15_MINUTES", "30_MINUTES", "45_MINUTES", "60_MINUTES", "90_MINUTES", "120_MINUTES" - `services.serviceTiming.schedule.scheduleStartWindow` (string, required) Informs how long after the merchant has opened (considering the entity) the first schedule time will be displayed. > Example: Service starts at 9:00 and the option was entered, then the first available time for scheduling will be 9:45. Enum: "15_MINUTES", "30_MINUTES", "45_MINUTES", "60_MINUTES", "90_MINUTES", "120_MINUTES" - `services.serviceTiming.schedule.scheduleEndWindow` (string, required) Informs how long before the merchant closes (considering the entity) the last schedule time will be displayed. > Example: Service ends at 23:00 and the option was entered, then the last available time for scheduling will be 22:00. Enum: "15_MINUTES", "30_MINUTES", "45_MINUTES", "60_MINUTES", "90_MINUTES", "120_MINUTES" - `services.servicePriority` (array) Indicates to the Ordering Application whether the merchant works with different order preparation and delivery priorities. Must enter up to how many priority levels the merchant serves. If not entered, it means that the merchant does not have any specific configuration for working with priority, and may or may not be able to do so. > Enum: "PRIORITY1", "PRIORITY2", "PRIORITY3", "PRIORITY4", "PRIORITY5" - `services.menuId` (string, required) The id value of the entity correlated to this entity. Example: "f627ccdc-6789-456f-a782-148538d5035b" - `services.targetAppId` (string) This field is for situations in which the merchant needs to send different menus for the same to different Ordering Applications (this can occur when there is an integration software between the merchant software and the Ordering Application). In this case this field must be filled in with the of the OrderingApplication which will receive this info. > - `services.serviceArea` (object) A conditional entity to implement (required if the Service entity associated has serviceType set to ). Describes the geographical region in which food can be delivered. > - `services.serviceArea.id` (string, required) A unique identifier of the service area. Example: "01339e6d-520b-429e-bc7c-dcfd2df42278" - `services.serviceArea.polygon` (array) If the is chosen to be used, is not required. A polygon or multipolygon expressed as a series of three or more space delimited points. - `services.serviceArea.polygon.geoCoordinates` (array, required) Coordinates of each point of the polygon. It is recommended that the first and last points be the same, but it is not required. Each point in a polygon or multipolygon is defined by a latitude point followed by a longitude point. You also must specify the points in a counter-clockwise direction. - `services.serviceArea.polygon.geoCoordinates.latitude` (number, required) Indicates the latitude coordinate of the polygon point. Latitude in degrees. Values are restricted to the range [[-90, 90]]. Example: -23.54809 - `services.serviceArea.polygon.geoCoordinates.longitude` (number, required) Indicates the longitude coordinate of the polygon point. Longitude in degrees. Values are restricted to the range [[-180, 180]]. Example: -46.63638 - `services.serviceArea.polygon.price` (object) Price of the fee for this polygon Example: {"value":5,"currency":"BRL"} - `services.serviceArea.polygon.estimateDeliveryTime` (integer) Estimate delivery time for this polygon in minutes - `services.serviceArea.geoRadius` (object) If the is chosen to be used, is not required. Indicates the approximate radius (in meters) of the CIRCLE area. - `services.serviceArea.geoRadius.geoMidpointLatitude` (number, required) Indicates the latitude coordinate at the center of the CIRCLE area. Latitude in degrees. Values are restricted to the range [[-90, 90]]. Example: -23.54809 - `services.serviceArea.geoRadius.geoMidpointLongitude` (number, required) Indicates the longitude coordinate at the center of the CIRCLE area. Longitude in degrees. Values are restricted to the range [[-180, 180]]. Example: -46.63638 - `services.serviceArea.geoRadius.radius` (array, required) Informations about each radius of the CIRCLE that the merchant serves. - `services.serviceArea.geoRadius.radius.size` (integer, required) The size of the CIRCLE radius in meters. - `services.serviceArea.geoRadius.radius.price` (object) Price of the fee for this CIRCLE size. Example: {"value":5,"currency":"BRL"} - `services.serviceArea.geoRadius.radius.estimateDeliveryTime` (integer) Estimate delivery time for this CIRCLE size in minutes. - `services.serviceArea.exclusionAreaPolygon` (array) This object will act as a complement, indicating specific polygons within the previously mapped delivery area, where NO deliveries will be made. This field can be filled in regardless of whether or is used. - `services.serviceHours` (object, required) A required entity to implement. Describes the time window which users can place orders. - `services.serviceHours.id` (string, required) A unique identifier of the service hours. Example: "fb093d8c-2ca5-40fb-afcf-472fbdae81cc" - `services.serviceHours.weekHours` (array, required) A list of the day(s) of the week and time periods for which the service is valid. - `services.serviceHours.weekHours.dayOfWeek` (array, required) Day of the week for which these service hours are valid Enum: "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" - `services.serviceHours.weekHours.timePeriods` (object, required) Time window from which users' orders can be placed. - `services.serviceHours.weekHours.timePeriods.startTime` (string, required) Indicates the specific time of day in ISO format starting from which users' orders can be placed. Example: "10:00:00.000Z" - `services.serviceHours.weekHours.timePeriods.endTime` (string, required) Indicates the specific time of day in ISO format beyond which users' orders cannot be placed. Example: "18:00:00.000Z" - `services.serviceHours.holidayHours` (array) Map of holiday dates, each with optional . If a date does not have a time period specified, the restaurant will be closed for that date. - `services.serviceHours.holidayHours.date` (string, required) date Example: "2021-04-07" - `services.serviceHours.holidayHours.timePeriods` (object, required) hours - `menus` (array, required) A required entity to implement. Describes an array of menus. - `menus.id` (string, required) A unique identifier of the menu. Example: "f627ccdc-6789-456f-a782-148538d5035b" - `menus.name` (string, required) Menu name Example: "Pizzas" - `menus.description` (string) Menu Description Example: "Pizza menu" - `menus.externalCode` (string, required) Menu External Code. (Tipically the merchant Software Service menu code) Example: "123" - `menus.disclaimer` (string) Disclaimer. > Example: "Lorem Ipsum is simply dummy text of the printing and typesetting industry." - `menus.disclaimerURL` (string) Disclaimer URL. > Example: "http://example.com" - `menus.categoryId` (array, required) A list of the id values of the child entities that correspond to this entity. Default assumes all entities are available in this menu. Example: ["92fad022-2c28-4239-a026-989f5b555cb7","6bb71850-1d40-49f9-8046-b13e068c0cca"] - `categories` (array, required) A required entity to implement. Describes an array of sections in the menu where will be showed. - `categories.id` (string, required) A unique identifier of the category. Example: "92fad022-2c28-4239-a026-989f5b555cb7" - `categories.index` (integer, required) Category display index. - `categories.name` (string, required) Category name. Example: "Salted Pizza" - `categories.description` (string) Category description. Example: "Salted pizza flavors." - `categories.image` (object) Image of the category. - `categories.externalCode` (string, required) Category External Code. (Tipically the merchant Software Service category code) Example: "13" - `categories.status` (string, required) Indicates if the entity is Available or Unavailable. Only use this type when you must disable the entity due to an unexpected event and you don't know when the service will be re-established (e.g. do not use for holidays). Enum: "AVAILABLE", "UNAVAILABLE" - `categories.availabilityId` (array) The id values of entities which provide details on when the category is available. > Example: ["11d063c4-73a7-4f87-a0eb-71636cc02029"] - `categories.itemOfferId` (array, required) A list of the id values of the child entities that correspond to this entity. Example: ["f080cfb3-5c4a-4eb7-907d-2de3bbb5dfb9"] - `itemOffers` (array, required) A required entity to implement. Describes an array of offers for the . - `itemOffers.id` (string, required) A unique identifier of the item offer. Example: "f080cfb3-5c4a-4eb7-907d-2de3bbb5dfb9" - `itemOffers.itemId` (string, required) The id value of the entity correlated to this entity. Example: "732bd31e-77fc-47ee-88ee-a0437f97b198" - `itemOffers.index` (integer, required) ItemOffer display index. - `itemOffers.status` (string, required) Indicates if the entity is Available or Unavailable. Only use this type when you must disable the entity due to an unexpected event and you don't know when the service will be re-established (e.g. do not use for holidays). Default is . Enum: "AVAILABLE", "UNAVAILABLE" - `itemOffers.price` (object, required) Price of the menu item offer. Original and actual values can be informed, for showing discounts. Example: {"value":43,"originalValue":43,"currency":"BRL"} - `itemOffers.price.value` (number) The actual price value. 4 decimals places are accepted. > Example: 43 - `itemOffers.price.originalValue` (number, required) The orginal price value. 4 decimals places are accepted Example: 43 - `itemOffers.price.currency` (string) The 3-letter ISO 4217 currency code. > Example: "BRL" - `itemOffers.availabilityId` (array) The id values of entities which provide details on when the menu item offer is available. > Example: ["11d063c4-73a7-4f87-a0eb-71636cc02029"] - `itemOffers.optionGroupsId` (array) A list of the id values of the child entities that correspond to this entity. Example: ["fe67e551-f42f-499a-8afb-0ed893c71fa3"] - `items` (array, required) A required entity to implement. Describes an array of items. To be used with an or an . - `items.id` (string, required) A unique identifier of the item. Example: "732bd31e-77fc-47ee-88ee-a0437f97b198" - `items.name` (string, required) Item name Example: "1/2 Pepperoni" - `items.description` (string) Item Description Example: "Pepperoni flavored pizza with LOTS of pepperoni." - `items.externalCode` (string, required) Item External Code. (Tipically the merchant Software Service item code) Example: "233467" - `items.image` (object) Image of the item. This field should be used when there is only one image for the item without size variations. It must only if the array . If , this field must even if it is filled. - `items.images` (array) Array of images of the item. This field should be used when you need size variations for the images. - `items.images.type` (string, required) The type of the image. The type is generally used for larger images, such as in the item detail, while the type is for smaller images, typically used in the menu listing. Enum: "main", "thumb" - `items.nutritionalInfo` (object) Nutrition information for the dish. - `items.nutritionalInfo.description` (string, required) Nutrition information in free text. For example "Contains preservatives". Example: "Contains preservatives" - `items.nutritionalInfo.calories` (string, required) The number of calories in Cal, kcal, or kJ, using the following format: value Cal or min-max Cal Example: "2000 Cal" - `items.nutritionalInfo.allergen` (array) Allergens of this Item Enum: "ALMONDS", "ALPHA_ISOMETHYL_IONONE", "ALCOHOL", "AMYL_CINNAMAL", "ANISE_ALCOHOL", "BARLEY", "BENZYL_ALCOHOL", "BENZYL_BENZOATE", "BENZYL_CINNAMATE", "BENZYL_SALICYLATE", "BRAZIL_NUTS", "BUTYLPHENYL_METHYLPROPIONATE", "CARROTS", "CASHEW_NUTS", "CELERY", "CEREALS_CONTAINING_GLUTEN", "CINNAMAL", "CINNAMYL_ALCOHOL", "CITRAL", "CITRONELLOL", "COCOA", "CORIANDER", "CORN", "COUMARIN", "CRUSTACEANS", "EGGS", "EUGENOL", "EVERNIA_FURFURACEA", "EVERNIA_PRUNASTRI", "FARNESOL", "FISH", "GERANIOL", "GLUTEN", "HAZELNUTS", "HEXYL_CINNAMAL", "HYDROXYCITRONELLAL", "KAMUT", "LACTOSE", "LUPINE", "MACADAMIA_NUTS", "METHYL_2_OCTYNOATE", "MILK", "MOLLUSCS", "MUSTARD", "NO_DECLARED_ALLERGENS", "OAT", "PEANUTS", "PEAS", "PECAN_NUTS", "PISTACHIOS", "POD_FRUITS", "QUEENSLAND_NUTS", "RYE", "SESAME_SEEDS", "SOYBEANS", "SPELT", "SULPHUR_DIOXIDE", "TREE_NUTS", "TREE_NUT_TRACES", "WALNUTS", "WHEAT" - `items.nutritionalInfo.additives` (array) Additives of this Item - `items.nutritionalInfo.suitableDiet` (array) The dish complies with the described dietary restriction Enum: "DIABETIC", "GLUTEN_FREE", "HALAL", "HINDU", "KOSHER", "LOW_CALORIE", "LOW_FAT", "LOW_LACTOSE", "LOW_SALT", "VEGAN", "VEGETARIAN" - `items.nutritionalInfo.isAlcoholic` (boolean) Indicates if an item is alcoholic. - `items.serving` (integer) Field to show the number of people the portion serves. Example: 2 - `items.unit` (string) Item's Unit of Measurement. Possible values: - - Unit - - Kilogram - - Liter - - Ounce - - Pound - - Gallon Enum: "UN", "KG", "L", "OZ", "LB", "GAL" - `items.ean` (string) EAN (European Article Number). Example: "7896005202074" - `optionGroups` (array) An optional entity to implement. Describes additional options of an . - `optionGroups.id` (string, required) A unique identifier of the option group. Example: "fe67e551-f42f-499a-8afb-0ed893c71fa3" - `optionGroups.index` (integer, required) Option Group display index. - `optionGroups.name` (string, required) Option Group Name. Example: "Choose your salted pizza flavor" - `optionGroups.description` (string) Option Group Description. Example: "Choose your salted pizza flavor." - `optionGroups.externalCode` (string, required) Option External Code. (Tipically the merchant Software Service option group code) Example: "12" - `optionGroups.minPermitted` (integer, required) The minimum number of options which should be selected in the option group. Example: 2 - `optionGroups.maxPermitted` (integer, required) The maximum number of options which should be selected in the option group. Example: 2 - `optionGroups.priceMethod` (string) Instructions on how this should be calculated before being applied to the item. : It will be added to the other optionGroups without any additional rules. option. : The highest value between all with = will be applied to the calculation. : The average between with = will be applied to the calculation. Example: item base price: $25,00 optionGroup1 - priceMethod = - __option 1 = $5,00 (selected)__ - option 2 = $10,00 (not selected) optionGroup2 - priceMethod = - option 1 = $7,00 (not selected) - __option 2 = $10,00 (selected)__ optionGroup3 - priceMethod = - __option 1 = $15,00 (selected)__ - option 2 = $20,00 (not selected) optionGroup4 - priceMethod = - option 1 = $30,00 (not selected) - __option 2 = $35,00 (selected)__ optionGroup5 - priceMethod = - option 1 = $2,00 (not selected) - __option 2 = $3,00 (selected)__ - option 3 = $5,00 (not selected) = avg(optionGroup1, optionGroup2) + max(optionGroup3, optionGroup4) + optionGroup5 = 7,50 + 35,00 + 3,00 = 45,50 = 25,00 + 45,50 = 70,50 Enum: "SUM", "MAX", "AVG" - `optionGroups.options` (array) A list of entities that correspond to this option group - `optionGroups.options.id` (string, required) A unique identifier of the option. Example: "e5232f14-430c-4a94-8ff6-289d5a16a87a" - `optionGroups.options.index` (integer, required) Option display index. - `optionGroups.options.price` (object) Price of the option. Original and actual values can be informed, for showing discounts. - `optionGroups.options.maxPermitted` (integer) The maximum quantity of this option which can be selected in the option group. Example: 2 - `availabilities` (array) An optional entity to implement. Describes the time period during which a or an entity is served. > > Our current menu model supports the following options for configuring product availability:      1. Specific date ranges defined by the startDate and endDate fields      2. A weekly schedule defined by the hours array - `availabilities.id` (string, required) A unique identifier of the availability. Example: "11d063c4-73a7-4f87-a0eb-71636cc02029" - `availabilities.startDate` (string) Availability start date. If not informed, the availabilty is already available. Example: "2021-05-01" - `availabilities.endDate` (string) Availability end date. If not informed, the availabilty is always available. Example: "2021-05-30" - `availabilities.hours` (array, required) Hours ## Response 403 fields (application/problem+json): - `title` (string, required) Short description of the problem. Example: "Unexpected error" - `status` (integer, required) HTTP code of the returned status. Example: 500 ## Response 404 fields (application/problem+json): - `title` (string, required) Short description of the problem. Example: "Unexpected error" - `status` (integer, required) HTTP code of the returned status. Example: 500 ## Response 503 fields (application/problem+json): - `title` (string, required) Short description of the problem. Example: "Unexpected error" - `status` (integer, required) HTTP code of the returned status. Example: 500