Grubhub Merchant Data API

Read and maintain merchant configuration on Grubhub: profile, tax rate, delivery minimum, delivery boundaries and area fees, fulfillment estimates, pre-order window, scheduled-ordering opt-in, and online/offline status by order type. Batch writes return a batch handle that is polled to completion.

Operations 26

PUT /pos/v2/merchant/{merchant_id}/pos-status Set the status of a merchant to online or offline for specific order types #
PUT /pos/v2/merchant/pos-status Set the status of a batch of merchants to online or offline by order type #
GET /pos/v1/merchant/{merchant_id}/taxrate Get a merchant's tax rate #
PUT /pos/v1/merchant/{merchant_id}/taxrate Update a merchant's tax rate #
PUT /pos/v1/merchant/{merchant_id}/scheduledorders Toggle a merchant's scheduled ordering capability #
PUT /pos/v1/merchant/{merchant_id}/preorderwindow Update a merchant's pre-order confirmable window (in minutes) #
PUT /pos/v1/merchant/{merchant_id}/pos-status Set a merchant's status to online or offline #
GET /pos/v1/merchant/{merchant_id}/fulfillment/{delivery_area_id}/deliveryfee Get a merchant's delivery area fee #
PUT /pos/v1/merchant/{merchant_id}/fulfillment/{delivery_area_id}/deliveryfee Update a merchant's delivery area fee #
GET /pos/v1/merchant/{merchant_id}/fulfillment/estimates Get a merchant's fulfillment estimates #
PUT /pos/v1/merchant/{merchant_id}/fulfillment/estimates Update a merchant's fulfillment estimates #
GET /pos/v1/merchant/{merchant_id}/fulfillment/deliveryboundaries Gets a merchant's delivery boundaries #
PUT /pos/v1/merchant/{merchant_id}/fulfillment/deliveryboundaries Update a merchant's delivery boundaries #
GET /pos/v1/merchant/{merchant_id}/deliveryminimum Get a merchant's delivery minimum #
PUT /pos/v1/merchant/{merchant_id}/deliveryminimum Update a merchant's delivery minimum #
PUT /pos/v1/merchant/properties Update the properties of a batch of merchants #
PUT /pos/v1/merchant/pos-status Set the status of a batch of merchants to online or offline #
PUT /pos/v1/merchant/integrationlive Update the live integration status of a batch of merchants #
GET /pos/v2/merchant/pos-status/{batch_id}/status Get the online or offline status of a batch of merchants by order type #
GET /pos/v1/merchant/{partner_id}/idmappings Get internal / external ID mappings #
GET /pos/v1/merchant/{merchant_id}/fulfillment Get a merchant's fulfillment info #
GET /pos/v1/merchant/{merchant_id} Get a merchant #
GET /pos/v1/merchant/properties/{batch_id}/status Get merchant properties batch update status #
GET /pos/v1/merchant/pos-status/{batch_id}/status Get the online or offline status of a batch of merchants #
GET /pos/v1/merchant/integrationlive/{batch_id}/status Get the live integration status of a batch of merchants #
GET /pos/v1/config/groups/{group_key} Get a configuration group #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/grubhub-merchant-data"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

grubhub-merchant-data-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Merchant Data
servers:
- url: https://api-third-party-gtm-pp.grubhub.com
  description: preprod
- url: https://api-third-party-gtm.grubhub.com
  description: prod
tags:
- name: Models
  description: "# HeartbeatTriggeredPayload \n <SchemaDefinition schemaRef=\"#/components/schemas/HeartbeatTriggeredPayload\"\
    />\n\n# OrderTypeHeartbeatPayload \n <SchemaDefinition schemaRef=\"#/components/schemas/OrderTypeHeartbeatPayload\"\
    />\n\n# MerchantOrderTypeHeartbeatPayload \n <SchemaDefinition schemaRef=\"#/components/schemas/MerchantOrderTypeHeartbeatPayload\"\
    />\n\n# PosMerchantBatchOperationResponse \n <SchemaDefinition schemaRef=\"#/components/schemas/PosMerchantBatchOperationResponse\"\
    />\n\n# ScheduledOrdersUpdateRequest \n <SchemaDefinition schemaRef=\"#/components/schemas/ScheduledOrdersUpdateRequest\"\
    />\n\n# JsonNode \n <SchemaDefinition schemaRef=\"#/components/schemas/JsonNode\"/>\n\n# PosEstimatesUpdateRequest\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/PosEstimatesUpdateRequest\"/>\n\n# PosEstimates \n <SchemaDefinition\
    \ schemaRef=\"#/components/schemas/PosEstimates\"/>\n\n# DeliveryArea \n <SchemaDefinition schemaRef=\"#/components/schemas/DeliveryArea\"\
    />\n\n# DeliveryAreaStats \n <SchemaDefinition schemaRef=\"#/components/schemas/DeliveryAreaStats\"/>\n\n# MerchantPropertyUpdateRequest\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/MerchantPropertyUpdateRequest\"/>\n\n# MerchantHeartbeatTriggeredPayload\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/MerchantHeartbeatTriggeredPayload\"/>\n\n# PosMerchantIntegrationStatus\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/PosMerchantIntegrationStatus\"/>\n\n# MerchantStatus\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/MerchantStatus\"/>\n\n# PosMerchantBatchOperationStatus\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/PosMerchantBatchOperationStatus\"/>\n\n# ExternalId\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/ExternalId\"/>\n\n# PosDeliveryFee \n <SchemaDefinition\
    \ schemaRef=\"#/components/schemas/PosDeliveryFee\"/>\n\n# PosMerchantFulfillmentInfo \n <SchemaDefinition schemaRef=\"\
    #/components/schemas/PosMerchantFulfillmentInfo\"/>\n\n# Address \n <SchemaDefinition schemaRef=\"#/components/schemas/Address\"\
    />\n\n# DinerPickUpInstructions \n <SchemaDefinition schemaRef=\"#/components/schemas/DinerPickUpInstructions\"\
    />\n\n# GeoLocation \n <SchemaDefinition schemaRef=\"#/components/schemas/GeoLocation\"/>\n\n# OrderProcessingInfo\
    \ \n <SchemaDefinition schemaRef=\"#/components/schemas/OrderProcessingInfo\"/>\n\n# OrderTakingInfo \n <SchemaDefinition\
    \ schemaRef=\"#/components/schemas/OrderTakingInfo\"/>\n\n# PosAccountStatus \n <SchemaDefinition schemaRef=\"\
    #/components/schemas/PosAccountStatus\"/>\n\n# PosMerchantData \n <SchemaDefinition schemaRef=\"#/components/schemas/PosMerchantData\"\
    />\n\n# ConfigGroup \n <SchemaDefinition schemaRef=\"#/components/schemas/ConfigGroup\"/>\n\n"
paths:
  /pos/v2/merchant/{merchant_id}/pos-status:
    put:
      tags:
      - Endpoints
      summary: Set the status of a merchant to online or offline for specific order types
      description: Provides the ability to set the status of a merchant to online or offline on Grubhub for specific
        order types (STANDARD, CATERING, GROUP). When offline, the merchant will not be listed on the site for that
        order type; when online, the merchant will be listed on the site and be able to accept orders for that order
        type.
      operationId: updateMerchantStatusByOrderType
      parameters:
      - name: merchant_id
        in: path
        description: The Grubhub ID for the merchant OR the Partner merchant ID.
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: Merchant status update request by order type.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderTypeHeartbeatPayload'
            example:
              order_type_statuses:
                STANDARD:
                  new_pos_status: ONLINE
                CATERING:
                  new_pos_status: OFFLINE
                  reason: Temporarily unavailable
        required: true
      responses:
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly. This could
            be due to an invalid order type, POS integration not being enabled, or the merchant being blocked from
            updates.
        '400':
          description: Invalid request. This could be due to an invalid merchant ID format or an invalid status
            transition (e.g., attempting to bring a merchant online when not in a pausable state).
        '404':
          description: Could not find the merchant to be updated.
        '204':
          description: No Content - The merchant status was successfully updated.
        '403':
          description: You do not have access to the requested resource.
  /pos/v2/merchant/pos-status:
    put:
      tags:
      - Endpoints
      summary: Set the status of a batch of merchants to online or offline by order type
      description: Provides the ability to set the status of multiple merchants to online or offline on Grubhub
        for specific order types (STANDARD, CATERING, GROUP). When offline, the merchants will not be listed on
        the site for that order type; when online, the merchants will be listed on the site and be able to accept
        orders for that order type.
      operationId: updateMerchantStatusByOrderTypeBatch
      requestBody:
        description: Batch of merchant status update requests by order type.
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/MerchantOrderTypeHeartbeatPayload'
            example:
            - merchant_id: '123456'
              order_type_statuses:
                STANDARD:
                  new_pos_status: ONLINE
                CATERING:
                  new_pos_status: OFFLINE
                  reason: Temporarily unavailable
        required: true
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PosMerchantBatchOperationResponse'
              example:
                batch_id: BgAPKjIATE6Xmot9N0JLZw
                merchant_ids:
                - '123456'
                - '789012'
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly. It is likely
            there are duplicate merchant IDs in the provided list, the number of items in batch exceeds the maximum
            limit allowed, there were no items provided, or one or more merchants are blocked from updates.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosMerchantBatchOperationResponse'
        '400':
          description: Invalid request. This could be due to an invalid merchant ID format in the batch.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosMerchantBatchOperationResponse'
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosMerchantBatchOperationResponse'
        '404':
          description: Bulk processing is not enabled for this operation.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosMerchantBatchOperationResponse'
  /pos/v1/merchant/{merchant_id}/taxrate:
    get:
      tags:
      - Endpoints
      summary: Get a merchant's tax rate
      description: Returns a merchant's overall tax rate. This rate will be used for any menu item or other taxable
        charge that does not have its own tax rate configuration.
      operationId: getMerchantTaxRate
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      responses:
        '404':
          description: Could not find the merchant or its tax rate.
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: string
        '200':
          description: Successfully retrieved a merchant's tax rate.
          content:
            application/json:
              schema:
                type: number
                format: double
              example: 5.12
    put:
      tags:
      - Endpoints
      summary: Update a merchant's tax rate
      description: Updates the overall tax rates for a merchant. These rates will be used for any menu item or other
        taxable charge that does not have its own tax rate configuration.
      operationId: updateMerchantTaxRate
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: The default tax rate to apply to all menu items associated with this merchant.
        content:
          application/json:
            schema:
              type: number
              format: double
            example: 5.12
        required: true
      responses:
        '200':
          description: Successfully updated a merchant's tax rate.
          content:
            application/json:
              schema:
                type: number
                format: double
              example: 5.12
        '404':
          description: Could not find this merchant to be updated.
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: string
  /pos/v1/merchant/{merchant_id}/scheduledorders:
    put:
      tags:
      - Endpoints
      summary: Toggle a merchant's scheduled ordering capability
      description: Allows an individual merchant to opt in/out of scheduled ordering.
      operationId: updateOptInOrOutScheduledOrdersByLegacyId
      parameters:
      - name: merchant_id
        in: path
        description: The Grubhub ID for the merchant OR the Partner merchant ID (specific configurations are required
          to enable one or the other).
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: Request merchant to opt-in/opt-out from scheduled orders.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduledOrdersUpdateRequest'
            example:
              enabled: true
        required: true
      responses:
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonNode'
        '404':
          description: Could not find the merchant to be updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonNode'
        '403':
          description: You do not have access to the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonNode'
        '200':
          description: Successfully updated scheduled ordering capability.
          content:
            application/json:
              schema:
                type: string
              example: Merchant successfully opted-in
  /pos/v1/merchant/{merchant_id}/preorderwindow:
    put:
      tags:
      - Endpoints
      summary: Update a merchant's pre-order confirmable window (in minutes)
      description: The Pre-order confirmable window determines when Grubhub should transition a scheduled order
        from ANTICIPATED status to RESTAURANT_CONFIRMABLE with relation to the desired fulfillment time. For example,
        a merchant with a window of 120 minutes would receive the RESTAURANT_CONFIRMABLE webhook 2 hours before
        desired fulfillment time giving them plenty of time to prep the order. For merchants with faster prep time,
        this window is usually very small to guarantee food quality.
      operationId: updateMerchantPreOrderInMinutes
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: Duration in which a preorder can be sent to the merchant for confirmation.
        content:
          application/json:
            schema:
              type: integer
              format: int32
            example: 5
        required: true
      responses:
        '422':
          description: The merchant's pre-order confirmable window (in minutes) is disabled.
          content:
            '*/*':
              schema:
                type: string
        '404':
          description: Could not find the merchant to be updated.
          content:
            '*/*':
              schema:
                type: string
        '200':
          description: OK.
          content:
            application/json:
              schema:
                type: integer
                format: int32
              example: 5
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: string
  /pos/v1/merchant/{merchant_id}/pos-status:
    put:
      tags:
      - Endpoints
      summary: Set a merchant's status to online or offline
      description: Provides the ability to set a merchant's status to online or offline on Grubhub. When offline,
        the merchant will not be listed on the site; when online, the merchant will be listed on the site and be
        able to accept orders.
      operationId: heartbeatStatusChangeTriggered
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: Request body to set store OFFLINE/ONLINE.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HeartbeatTriggeredPayload'
            example:
              new_pos_status: ONLINE
              reason: Heartbeat received
        required: true
      responses:
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly.
        '404':
          description: Could not find the merchant to be updated.
        '403':
          description: You do not have access to the requested resource.
        '409':
          description: The merchant's current status matches the new_pos_status provided in the request.
        '204':
          description: Successfully set the merchant as online/offline on Grubhub.
  /pos/v1/merchant/{merchant_id}/fulfillment/{delivery_area_id}/deliveryfee:
    get:
      tags:
      - Endpoints
      summary: Get a merchant's delivery area fee
      description: Returns a merchant's delivery fee for a delivery area.
      operationId: getMerchantDeliveryAreaFeeByLegacyId
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      - name: delivery_area_id
        in: path
        description: ID for delivery area.
        required: true
        explode: false
        schema:
          type: string
          format: uuid
      responses:
        '404':
          description: Could not find the merchant or its delivery area fee.
          content:
            '*/*':
              schema:
                type: integer
                format: int32
        '200':
          description: Successfully retrieved the merchant's delivery area fee.
          content:
            application/json:
              schema:
                type: integer
                format: int32
              example: 5
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: integer
                format: int32
    put:
      tags:
      - Endpoints
      summary: Update a merchant's delivery area fee
      description: Updates a merchant's delivery fee for specified delivery area.
      operationId: updateMerchantDeliveryAreaFeeByLegacyId
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      - name: delivery_area_id
        in: path
        description: ID for delivery area.
        required: true
        explode: false
        schema:
          type: string
          format: uuid
      requestBody:
        description: Delivery fee value.
        content:
          application/json:
            schema:
              type: integer
              format: int32
            example: 5
        required: true
      responses:
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly.
        '404':
          description: Could not find the merchant to be updated.
        '200':
          description: Successfully updated the merchant's delivery area fee.
        '403':
          description: You do not have access to the requested resource.
  /pos/v1/merchant/{merchant_id}/fulfillment/estimates:
    get:
      tags:
      - Endpoints
      summary: Get a merchant's fulfillment estimates
      description: Returns the estimated time that a merchant takes to fulfill an order for both pickup and delivery,
        separately.
      operationId: getFulfillmentEstimatesByLegacyId
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      - name: order_type
        in: query
        description: 'What kind of order this is. This can be one of the following: - "standard" - A regular, single
          diner order. - "catering" - A large order intended to provide food for multiple people and is often ordered
          by a corporate organization. - "group" - An order for multiple diners.'
        required: false
        content:
          application/json:
            schema:
              type: string
              enum:
              - STANDARD
              - CATERING
              - GROUP
            example: '{"order_type":"standard"}'
      responses:
        '200':
          description: Successfully retrieved a merchant's fulfillment estimates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PosEstimates'
              example:
                pickup_estimate_minutes: 15
                delivery_estimate_minutes: 30
        '404':
          description: Cound not find the merchant or its fulfillment estimates.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosEstimates'
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosEstimates'
    put:
      tags:
      - Endpoints
      summary: Update a merchant's fulfillment estimates
      description: Updates the estimated time that the merchant takes to fulfill an order for both pickup and delivery,
        separately.
      operationId: updateFulfillmentEstimatesByLegacyId
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: The estimated number of minutes to fulfill a delivery order and a pickup order, separately.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PosEstimatesUpdateRequest'
            example:
              pickup_estimate_minutes: 20
              delivery_estimate_minutes: 45
              order_type: standard
        required: true
      responses:
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosEstimates'
        '200':
          description: Successfully updated a merchant's fulfillment estimates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PosEstimates'
              example:
                pickup_estimate_minutes: 15
                delivery_estimate_minutes: 30
        '404':
          description: Could not find the merchant to be updated.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosEstimates'
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosEstimates'
  /pos/v1/merchant/{merchant_id}/fulfillment/deliveryboundaries:
    get:
      tags:
      - Endpoints
      summary: Gets a merchant's delivery boundaries
      description: Returns a merchant's delivery boundaries.
      operationId: getDeliveryBoundaries
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      responses:
        '404':
          description: Could not find the merchant or its delivery boundaries.
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeliveryArea'
        '200':
          description: Successfully retrieved the merchant's delivery boundaries.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeliveryArea'
              example:
              - id: d11208c6-4f87-4b5a-8c3e-6b8e4482dd8a
                name: Downtown
                fee_cents: 500
                zone_type: diner
                geometry: '{"type":"Polygon","coordinates":[[[-122.4081,37.783696],[-122.40008,37.786453],...]]}'
                stats:
                  area: 2500.0
                  approximate_radius: 50.0
                  height: 100.0
                  width: 50.0
              - id: e42842c8-0571-4e53-9a8b-1ea2aa7ef20e
                name: Uptown
                fee_cents: 300
                zone_type: catering
                geometry: '{"type":"Polygon","coordinates":[[[-122.4201,37.793296],[-122.41208,37.796053],...]]}'
                stats:
                  area: 3500.0
                  approximate_radius: 60.0
                  height: 120.0
                  width: 70.0
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeliveryArea'
    put:
      tags:
      - Endpoints
      summary: Update a merchant's delivery boundaries
      description: Updates a merchant's delivery boundaries if they have delivery settings configured. Note that
        the body of this request must include the entire set of all delivery areas, as this change overwrites all
        current delivery zones.
      operationId: updateDeliveryBoundaries
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: The new or updated delivery zones.
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DeliveryArea'
            example:
            - id: f43e64d3-2e9c-4d64-a4a1-74e3953e1a68
              name: Downtown Zone
              fee_cents: 500
              zone_type: DINER
              geometry: '{ "type": "Polygon", "coordinates": [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]] }'
              stats:
                area: 0.5
                approximate_radius: 0.71
                height: 1.0
                width: 1.0
            - id: ac382e8e-4d91-47fb-a724-39e04ac2e07c
              name: Suburb Zone
              fee_cents: 800
              zone_type: DINER
              geometry: '{ "type": "Polygon", "coordinates": [[[2, 2], [3, 2], [3, 3], [2, 3], [2, 2]]] }'
              stats:
                area: 1.0
                approximate_radius: 1.0
                height: 1.0
                width: 1.0
        required: true
      responses:
        '404':
          description: Could not find the merchant to be updated.
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeliveryArea'
        '200':
          description: Successfully updated a merchant's the delivery areas.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeliveryArea'
              example:
              - id: d11208c6-4f87-4b5a-8c3e-6b8e4482dd8a
                name: Downtown
                fee_cents: 500
                zone_type: diner
                geometry: '{"type":"Polygon","coordinates":[[[-122.4081,37.783696],[-122.40008,37.786453],...]]}'
                stats:
                  area: 2500.0
                  approximate_radius: 50.0
                  height: 100.0
                  width: 50.0
              - id: e42842c8-0571-4e53-9a8b-1ea2aa7ef20e
                name: Uptown
                fee_cents: 300
                zone_type: catering
                geometry: '{"type":"Polygon","coordinates":[[[-122.4201,37.793296],[-122.41208,37.796053],...]]}'
                stats:
                  area: 3500.0
                  approximate_radius: 60.0
                  height: 120.0
                  width: 70.0
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeliveryArea'
  /pos/v1/merchant/{merchant_id}/deliveryminimum:
    get:
      tags:
      - Endpoints
      summary: Get a merchant's delivery minimum
      description: Returns the merchant's delivery minimum.
      operationId: getDeliveryMinimumForMerchant
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Returns the merchant's delivery minimum.
          content:
            application/json:
              schema:
                type: number
                format: double
              example: 5.12
        '404':
          description: Could not find the merchant or its delivery minimum.
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: string
    put:
      tags:
      - Endpoints
      summary: Update a merchant's delivery minimum
      description: Updates a merchant's delivery minimum if they do not do managed delivery.
      operationId: updateDeliveryMinimumForMerchant
      parameters:
      - name: merchant_id
        in: path
        description: The short Grubhub ID for the merchant. Corresponds to a single location.
        required: true
        explode: false
        schema:
          type: string
      requestBody:
        description: The new delivery minimum value.
        content:
          application/json:
            schema:
              type: number
              format: double
            example: 5.12
        required: true
      responses:
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly.
          content:
            '*/*':
              schema:
                type: string
        '200':
          description: Successfully retrieved the merchant's updated delivery minimum.
          content:
            application/json:
              schema:
                type: number
                format: double
              example: 5.12
        '404':
          description: Could not find the merchant to be updated.
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: You do not have access to the requested resource.
          content:
            '*/*':
              schema:
                type: string
  /pos/v1/merchant/properties:
    put:
      tags:
      - Endpoints
      summary: Update the properties of a batch of merchants
      description: Updates merchant properties for multiple merchants or individual merchant at a time.
      operationId: updateMerchantProperties
      requestBody:
        description: Request containing the merchant ID/s and the properties to be applied for all of them.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MerchantPropertyUpdateRequest'
            example:
              merchant_ids:
              - store182
              - store201
              property_updates:
                delivery_estimate_minutes: '45'
                pickup_estimate_minutes: '30'
                special_instructions_disabled: 'false'
                sales_tax: '8.5'
                driver_pickup_instructions: Follow the green signs
                diner_pickup_contact_phone: 123-456-7890
                diner_offers_curbside_pickup: 'true'
                diner_pickup_curbside_instructions: Wait at the marked area
                order_validation_opt_in: 'true'
        required: true
      responses:
        '422':
          description: The data you provided in the request body was invalid or formatted incorrectly. It is likely
            there are duplicate merchant IDs in the provided list, the number of items in batch exceeds the maximum
            limit allowed, or there were no items provided.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PosMerchantBatchOperationResponse'
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PosMerchantBatchOperationResponse'
              example:
                batch_id: e12435f1

# --- truncated at 32 KB (70 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/grubhub/refs/heads/main/openapi/grubhub-merchant-data-openapi.yml