> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maple.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# Replace booking blackout dates

> Replaces the location’s whole list of blackout windows: days or part-days when it takes no reservations, such as a private event. Maple enforces them for native and provider-managed locations alike: availability omits the slots, and a quote taken earlier is refused when held, booked, or used for a change (409 `slot_unavailable` natively, 422 `date_blocked` for provider-managed locations). Existing bookings inside a new window are not cancelled, and walk-ins and waitlist seating are not blocked: a blackout stops reservations only. The venue edits the same list in its dashboard: read `blackout_dates` and `blackout_dates_revision` on the booking profile, and send the revision as `expected_revision` so a list changed since answers 409 `stale_blackout_dates` instead of being overwritten. Invalid ranges answer 400 `invalid_blackout_dates`. Requires `bookings:configure`.



## OpenAPI

````yaml /openapi/developer-api.json put /locations/{locationId}/booking_blackouts
openapi: 3.1.0
info:
  title: Maple Developer API
  version: 0.0.1
  description: >-
    Public API for POS and platform partners to integrate with Maple: granted
    locations and connections, the order loop (validation, notification,
    accept/deny, status updates), payment-link visibility, menu publishing, and
    HMAC-signed webhooks. Authenticate every request with a Bearer API key
    (`mpk_test_…` / `mpk_live_…`). The credential determines the environment:
    test-mode credentials only see test data, live-mode credentials only see
    live data.
servers:
  - url: https://api.maple.inc/v1
    description: Production
  - url: https://api.staging.maple.inc/v1
    description: Sandbox (development and testing)
security: []
tags:
  - name: General
    description: Service status and credential introspection.
  - name: Locations
    description: The restaurant locations your app has been granted access to.
  - name: Connections
    description: Become (or stop being) a granted location’s order receiver.
  - name: Menu
    description: Publish and read a connected location’s menu.
  - name: Delivery zones
    description: >-
      Manage a connected location’s delivery zones and check whether a
      coordinate is deliverable.
  - name: Orders
    description: 'The order loop: read orders, submit validation results, and decide orders.'
  - name: Bookings
    description: >-
      Bookings (rolling out per location): a location’s booking profile,
      availability, holds, bookings, walk-ins, venue verbs, configuration, and
      live floor.
  - name: Waitlist
    description: >-
      A Maple-native location’s walk-up waitlist: the queue and wait estimate,
      joining, and venue actions.
  - name: Webhooks
    description: Event-type catalog, subscriptions, the event ledger, and replay.
  - name: Feedback
    description: >-
      Tell Maple about a bug, a missing capability, wrong docs, or an error you
      could not act on.
paths:
  /locations/{locationId}/booking_blackouts:
    put:
      tags:
        - Bookings
      summary: Replace booking blackout dates
      description: >-
        Replaces the location’s whole list of blackout windows: days or
        part-days when it takes no reservations, such as a private event. Maple
        enforces them for native and provider-managed locations alike:
        availability omits the slots, and a quote taken earlier is refused when
        held, booked, or used for a change (409 `slot_unavailable` natively, 422
        `date_blocked` for provider-managed locations). Existing bookings inside
        a new window are not cancelled, and walk-ins and waitlist seating are
        not blocked: a blackout stops reservations only. The venue edits the
        same list in its dashboard: read `blackout_dates` and
        `blackout_dates_revision` on the booking profile, and send the revision
        as `expected_revision` so a list changed since answers 409
        `stale_blackout_dates` instead of being overwritten. Invalid ranges
        answer 400 `invalid_blackout_dates`. Requires `bookings:configure`.
      operationId: developer-api-bookings.setBookingBlackouts
      parameters:
        - name: locationId
          in: path
          schema:
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                blackout_dates:
                  type: array
                  items:
                    type: object
                    properties:
                      start_date:
                        type: string
                        description: First blocked day, venue-local `YYYY-MM-DD`.
                      end_date:
                        type: string
                        description: Last blocked day, inclusive, venue-local `YYYY-MM-DD`.
                      start_time:
                        anyOf:
                          - anyOf:
                              - type: string
                              - type: 'null'
                          - type: 'null'
                        description: >-
                          Venue-local `HH:MM` the block starts on `start_date`;
                          omit or null to block from the start of the day.
                      end_time:
                        anyOf:
                          - anyOf:
                              - type: string
                              - type: 'null'
                          - type: 'null'
                        description: >-
                          Venue-local `HH:MM` the block ends on `end_date`,
                          inclusive; omit or null to block through the end of
                          the day.
                      reason:
                        anyOf:
                          - anyOf:
                              - type: string
                              - type: 'null'
                          - type: 'null'
                        description: A note for the venue’s staff, at most 200 characters.
                    required:
                      - start_date
                      - end_date
                    additionalProperties: false
                  description: >-
                    The location’s whole list, at most 100 ranges. An empty list
                    clears every blackout.
                expected_revision:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    The `blackout_dates_revision` (or `revision`) you last read.
                    A list changed since answers 409 `stale_blackout_dates` and
                    nothing is written. Omit it to replace the list regardless.
              required:
                - blackout_dates
              additionalProperties: false
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    enum:
                      - booking_blackouts
                  location_id:
                    type: string
                  blackout_dates:
                    type: array
                    items:
                      type: object
                      properties:
                        start_date:
                          type: string
                          description: First blocked day, venue-local `YYYY-MM-DD`.
                        end_date:
                          type: string
                          description: >-
                            Last blocked day, inclusive, venue-local
                            `YYYY-MM-DD`.
                        start_time:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            Venue-local `HH:MM` the block starts on
                            `start_date`; null blocks from the start of that
                            day.
                        end_time:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            Venue-local `HH:MM` the block ends on `end_date`,
                            inclusive; null blocks through the end of that day.
                        reason:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: The venue’s note, e.g. “Private event”.
                      required:
                        - start_date
                        - end_date
                        - start_time
                        - end_time
                        - reason
                      additionalProperties: false
                    description: In start order.
                  revision:
                    type: string
                    description: >-
                      The list’s revision. Send it as `expected_revision` on
                      your next write to refuse one that would overwrite a
                      change made since.
                required:
                  - object
                  - location_id
                  - blackout_dates
                  - revision
                additionalProperties: false
        '400':
          description: DeveloperApiBadRequest
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/DeveloperApiBadRequest'
                  - $ref: '#/components/schemas/DeveloperApiBadRequest'
        '401':
          description: DeveloperApiUnauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiUnauthorized'
        '403':
          description: DeveloperApiForbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiForbidden'
        '404':
          description: DeveloperApiNotFound
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiNotFound'
        '409':
          description: DeveloperApiConflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiConflict'
        '422':
          description: DeveloperApiUnprocessable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiUnprocessable'
        '429':
          description: DeveloperApiRateLimited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiRateLimited'
          headers:
            Retry-After:
              description: >-
                Seconds to wait before retrying; also returned as retry_after in
                the body.
              schema:
                type: integer
                minimum: 1
      security:
        - bearer: []
components:
  schemas:
    DeveloperApiBadRequest:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - DeveloperApiBadRequest
        code:
          type: string
        message:
          type: string
        feedback:
          type: string
          description: Where to report this error if it does not tell you what to change.
      required:
        - _tag
        - message
        - feedback
      additionalProperties: false
    DeveloperApiUnauthorized:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - DeveloperApiUnauthorized
        message:
          type: string
        feedback:
          type: string
          description: Where to report this error if it does not tell you what to change.
      required:
        - _tag
        - message
        - feedback
      additionalProperties: false
    DeveloperApiForbidden:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - DeveloperApiForbidden
        code:
          type: string
          enum:
            - insufficient_scope
            - wrong_environment
        message:
          type: string
        feedback:
          type: string
          description: Where to report this error if it does not tell you what to change.
      required:
        - _tag
        - code
        - message
        - feedback
      additionalProperties: false
    DeveloperApiNotFound:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - DeveloperApiNotFound
        message:
          type: string
        feedback:
          type: string
          description: Where to report this error if it does not tell you what to change.
      required:
        - _tag
        - message
        - feedback
      additionalProperties: false
    DeveloperApiConflict:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - DeveloperApiConflict
        code:
          type: string
        message:
          type: string
        details:
          type: object
        feedback:
          type: string
          description: Where to report this error if it does not tell you what to change.
      required:
        - _tag
        - message
        - feedback
      additionalProperties: false
    DeveloperApiUnprocessable:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - DeveloperApiUnprocessable
        code:
          type: string
        message:
          type: string
        details:
          type: object
        feedback:
          type: string
          description: Where to report this error if it does not tell you what to change.
      required:
        - _tag
        - code
        - message
        - feedback
      additionalProperties: false
    DeveloperApiRateLimited:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - DeveloperApiRateLimited
        message:
          type: string
        retry_after:
          anyOf:
            - type: number
            - type: string
              enum:
                - NaN
            - type: string
              enum:
                - Infinity
            - type: string
              enum:
                - '-Infinity'
        feedback:
          type: string
          description: Where to report this error if it does not tell you what to change.
      required:
        - _tag
        - message
        - retry_after
        - feedback
      additionalProperties: false
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: >-
        API key — `mpk_test_…` for the sandbox, `mpk_live_…` for production.
        Issued by Maple during partner onboarding.

````