Nash Store Locations API

Store Locations

OpenAPI Specification

nash-store-locations-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Nash AI Functions Store Locations API
  version: 1.0.0
  description: LLM-backed domain tools
servers:
- url: https://api.sandbox.usenash.com
  description: Sandbox API
- url: https://api.sandbox.ap-southeast-2.usenash.com
  description: Sandbox API (Australia)
- url: https://api.usenash.com
  description: Production API
- url: https://api.ap-southeast-2.usenash.com
  description: Production API (Australia)
tags:
- name: Store Locations
  description: Store Locations
  x-nash-topic: config
paths:
  /v1/set_store_location_day_capacity:
    post:
      tags:
      - Store Locations
      summary: Set the day capacity for a store location
      description: Set the delivery capacity for a store location on a specific date. Overrides the default weekly capacity for that particular day.
      operationId: set_store_location_day_capacity_v1_set_store_location_day_capacity_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreLocationDayCapacityInputSerializer'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/set_store_location_default_capacity:
    post:
      tags:
      - Store Locations
      summary: Set the weekly default capacity for a store location
      description: Configure the default weekly capacity schedule for a store location. Defines how many orders the location can handle per day of the week.
      operationId: set_store_location_default_capacity_v1_set_store_location_default_capacity_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreLocationDefaultCapacityInputSerializer'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/store_locations:
    get:
      tags:
      - Store Locations
      summary: Get store locations
      description: List store locations for the organization with pagination. Use size and offset parameters to paginate through results.
      operationId: store_locations_v1_list_store_locations_route_get
      parameters:
      - name: size
        in: query
        description: The size of the store locations to return.
        required: false
        schema:
          title: Size
          type: integer
          description: The size of the store locations to return.
          default: 10
      - name: offset
        in: query
        description: The offset of the store locations to return.
        required: false
        schema:
          title: Offset
          type: integer
          description: The offset of the store locations to return.
          default: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListStoreLocationsResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
    post:
      tags:
      - Store Locations
      summary: Create store location
      description: Create a new store location (pickup point) with address, hours, and capacity settings.
      operationId: store_locations_v1_create_store_location_route_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStoreLocationInputSerializer'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/store_locations/coverage:
    get:
      tags:
      - Store Locations
      summary: Get store locations that cover specified location (latitude & longitude, city_zipcode)
      description: Find store locations whose delivery zones cover a given geographic point. Provide latitude/longitude, city_zipcode, or zipcode to find matching store locations.
      operationId: get_store_locations_coverage_v1_store_locations_coverage_get
      parameters:
      - name: latitude
        in: query
        description: The latitude of the location to check coverage for. If used, must specify longitude
        required: false
        schema:
          title: Latitude
          anyOf:
          - type: string
          - type: 'null'
          description: The latitude of the location to check coverage for. If used, must specify longitude
          default: null
          example: '0.00'
        example: '0.00'
      - name: longitude
        in: query
        description: The longitude of the location to check coverage for. If used, must specify latitude
        required: false
        schema:
          title: Longitude
          anyOf:
          - type: string
          - type: 'null'
          description: The longitude of the location to check coverage for. If used, must specify latitude
          default: null
          example: '0.00'
        example: '0.00'
      - name: cityZipcode
        in: query
        description: The city_zipcode pair to check coverage for. The location must have coverage set up using the `City & Zip Code` unique field, not the separate `City` or `Zip Code` fields.
        required: false
        schema:
          title: Cityzipcode
          anyOf:
          - type: string
          - type: 'null'
          description: The city_zipcode pair to check coverage for. The location must have coverage set up using the `City & Zip Code` unique field, not the separate `City` or `Zip Code` fields.
          default: null
          example: sanfrancisco_94114
        example: sanfrancisco_94114
      - name: zipcode
        in: query
        description: The zipcode to check coverage for.
        required: false
        schema:
          title: Zipcode
          anyOf:
          - type: string
          - type: 'null'
          description: The zipcode to check coverage for.
          default: null
          example: '94114'
        example: '94114'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/store_locations/external-identifier/{externalIdentifier}:
    post:
      tags:
      - Store Locations
      summary: Create or update store location by external identifier
      description: Create a new store location or update an existing one using your external identifier. If a store location with the given external identifier exists, it is updated.
      operationId: upsert_store_location_by_external_id_v1_store_locations_external_identifier__string_externalIdentifier__post
      parameters:
      - name: externalIdentifier
        in: path
        required: true
        schema:
          title: Externalidentifier
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStoreLocationInputSerializer'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/store_locations/external_identifier/{external_identifier}:
    get:
      tags:
      - Store Locations
      summary: Get store location by external identifier
      description: Retrieve a store location using your external identifier instead of the Nash store location ID.
      operationId: store_locations_v1_get_store_location_by_external_id_route_external_identifier__string_external_identifier__get
      parameters:
      - name: externalIdentifier
        in: path
        required: true
        schema:
          title: Externalidentifier
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/store_locations/upsert:
    post:
      tags:
      - Store Locations
      summary: Create or update store location
      description: Create a new store location or update an existing one. Matches on external identifier or store location ID for upsert logic.
      operationId: create_or_update_store_location_v1_store_locations_upsert_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStoreLocationInputSerializer'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/store_locations/upsert/bulk:
    post:
      tags:
      - Store Locations
      summary: Upsert multiple store locations
      description: Create or update multiple store locations in a single request. Each store location is matched by external identifier for upsert logic.
      operationId: upsert_store_locations_v1_store_locations_upsert_bulk_post
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListStoreLocationsResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
  /v1/store_locations/{id}:
    get:
      tags:
      - Store Locations
      summary: Get store location
      description: Retrieve a single store location by ID, including its address, hours, capacity, and zone associations.
      operationId: store_locations_v1_get_store_location_route__string_id__get
      parameters:
      - name: id
        in: path
        required: true
        schema:
          title: Id
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
    delete:
      tags:
      - Store Locations
      summary: Delete store location
      description: Delete a store location by ID. Orders referencing this store location will no longer have a valid pickup point.
      operationId: store_locations_v1_delete_store_location_route__string_id__delete
      parameters:
      - name: id
        in: path
        required: true
        schema:
          title: Id
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteStoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
    patch:
      tags:
      - Store Locations
      summary: Update store location
      description: Update an existing store location's details such as address, hours, or capacity. Only provided fields are updated.
      operationId: store_locations_v1_update_store_location_route__string_id__patch
      parameters:
      - name: id
        in: path
        required: true
        schema:
          title: Id
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateStoreLocationInputSerializer'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NashValidationError'
components:
  schemas:
    ParsedAddressInputSerializer:
      title: ParsedAddressInputSerializer
      required:
      - street
      - city
      - country
      type: object
      properties:
        number:
          title: Number
          anyOf:
          - type: string
          - type: 'null'
          description: The number of the address.
          default: null
          example: '1600'
        secondaryNumber:
          title: Secondarynumber
          anyOf:
          - type: string
          - type: 'null'
          description: The secondary number of the address.
          default: null
          example: null
        street:
          title: Street
          type: string
          description: 'The street of the address. If your geocoding service does not split numbers from street names, you can pass the street name with the number in this field. Example: 1600 Pennsylvania Avenue NW.'
          example: Pennsylvania Avenue NW
        county:
          title: County
          anyOf:
          - type: string
          - type: 'null'
          description: The county of the address.
          default: null
          example: Washington
        city:
          title: City
          type: string
          description: The city of the address.
          example: Washington
        state:
          title: State
          anyOf:
          - type: string
          - type: 'null'
          description: The state of the address.
          default: null
          example: DC
        postalCode:
          title: Postalcode
          anyOf:
          - type: string
          - type: 'null'
          description: The postal code of the address.
          default: null
          example: '20500'
        country:
          title: Country
          type: string
          description: The country of the address.
          example: US
        latitude:
          title: Latitude
          anyOf:
          - type: number
          - type: 'null'
          description: The latitude of the address.
          default: null
          example: 38.8948949
        longitude:
          title: Longitude
          anyOf:
          - type: number
          - type: 'null'
          description: The longitude of the address.
          default: null
          example: -77.0371581
      description: Parsed address input serializer for creating a job.
    StoreLocationResponse:
      title: StoreLocationResponse
      required:
      - id
      - name
      - phoneNumber
      - location
      - zoneIds
      - zoneAssociations
      - tags
      - integrationMetadata
      type: object
      properties:
        externalId:
          title: Externalid
          anyOf:
          - type: string
          - type: 'null'
          description: Store location unique identifier from an external system.
          default: null
          example: '40123'
        operatingHours:
          title: Operatinghours
          anyOf:
          - type: object
            additionalProperties: true
          - type: 'null'
          description: '[Integration Specific]: An object with keys that correspond to days of week (monday, tuesday, etc) and their corresponding operating hours / delivery windows.'
          default: null
          example:
            friday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            monday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            saturday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            sunday:
              active: true
              shifts:
              - - '11:00'
                - '18:00'
            thursday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            tuesday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            wednesday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
        prepTimeMinutes:
          title: Preptimeminutes
          anyOf:
          - type: integer
          - type: 'null'
          description: '[Integration Specific]: the preparation time to apply for orders, if relying on Nash to compute the delivery windows. This only applies to specific integrations.'
          default: null
        blackoutDates:
          title: Blackoutdates
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: The blackout dates of the store location.
          default: null
          example:
          - '2024-01-01'
          - '2024-01-02'
        firstName:
          title: Firstname
          anyOf:
          - type: string
          - type: 'null'
          description: First name of the person at the store location. If unknown, pass 'Manager'. Limited to 80 characters.
          default: null
          example: Taylor
        lastName:
          title: Lastname
          anyOf:
          - type: string
          - type: 'null'
          description: Last name of the person at the store location. If unknown, pass 'Manager'. Limited to 80 characters.
          default: null
          example: Swift
        email:
          title: Email
          anyOf:
          - type: string
          - type: 'null'
          description: The email of the person at the store location.
          default: null
          example: taylor@swift.com
        pickupInstructions:
          title: Pickupinstructions
          anyOf:
          - type: string
          - type: 'null'
          description: 'The pickup instructions of the store location. Limited to 280 characters. Nash Recommended Input: Order [insert order number] for [insert customer name] from [business name]'
          default: null
          example: Once you arrive at the store, please click above to let us know you are here. Then, go ahead and find a sales associate inside - they'll be happy to help you!
        id:
          title: Id
          type: string
          description: The ID of the store location.
          example: stl_01234567890123456789
        name:
          title: Name
          type: string
          description: The name of the store location.
          example: White House
        phoneNumber:
          title: Phonenumber
          type: string
          description: The phone number of the person at the store location.
          example: '+1234567890'
        location:
          $ref: '#/components/schemas/ParsedAddressInputSerializer'
          description: The location of the store location.
        zoneIds:
          title: Zoneids
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: The zone ids of the store location.
          example:
          - zone_01234567890123456789
          - zone_01234567890123456789
        zoneAssociations:
          title: Zoneassociations
          anyOf:
          - type: array
            items:
              type: object
              additionalProperties: true
          - type: 'null'
          description: The zone associations of the store location.
          example:
          - end_date: '2025-01-01'
            start_date: '2024-01-01'
            store_location_id: stl_01234567890123456789
            zone_id: zone_01234567890123456789
        tags:
          title: Tags
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: The tags of the store location.
          example: '[''service:rapid'', ''franchise_location'']'
        integrationMetadata:
          title: Integrationmetadata
          anyOf:
          - type: object
            additionalProperties: true
          - type: 'null'
          description: The integration metadata of the store location.
          example:
            integration_name: ABC
      description: Response for store location.
    CreateStoreLocationInputSerializer:
      title: CreateStoreLocationInputSerializer
      required:
      - name
      - phoneNumber
      type: object
      properties:
        name:
          title: Name
          type: string
          description: Store business name at the origin. Limited to 80 characters.
        firstName:
          title: Firstname
          anyOf:
          - type: string
          - type: 'null'
          description: First name of the person at the store location. If unknown, pass 'Manager'. Limited to 80 characters.
          default: null
        lastName:
          title: Lastname
          anyOf:
          - type: string
          - type: 'null'
          description: Last name of the person at the store location. If unknown, pass 'Manager'. Limited to 80 characters.
          default: null
        phoneNumber:
          title: Phonenumber
          type: string
          description: 'The phone number to contact at the store location: ''+15555555555'''
        email:
          title: Email
          anyOf:
          - type: string
          - type: 'null'
          default: null
        pickupInstructions:
          title: Pickupinstructions
          anyOf:
          - type: string
          - type: 'null'
          description: 'Any special instructions for store location. Limited to 280 characters. Nash Recommended Input: Order [insert order number] for [insert customer name] from [business name]'
          default: null
        address:
          title: Address
          anyOf:
          - type: string
          - type: 'null'
          description: 'The full address in one line for the store location for this package within the Job. Address format: [Number] [Street], [second line], [city], [state] [zip code]. All address fields are required except ''second line''. Second line should include Apt/Suite/Unit/# appended to the number of the unit. Can be null if using address_components.'
          default: null
        addressComponents:
          anyOf:
          - $ref: '#/components/schemas/ParsedAddressInputSerializer'
          - type: 'null'
          description: 'A geocoded and componentized version of the pickup address. NOTE: THIS WILL BYPASS OUR ADDRESS GEOCODING SERVICE!'
          default: null
        externalId:
          title: Externalid
          anyOf:
          - type: string
          - type: 'null'
          description: Store location unique identifier from an external system.
          default: null
        tags:
          title: Tags
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: Free form tags specific to the location.
          default: null
          example: '[''service:rapid'', ''service:express'', ''franchise_location'']'
        operatingHours:
          title: Operatinghours
          anyOf:
          - type: object
            additionalProperties: true
          - type: 'null'
          description: '[Integration Specific]: An object with keys that correspond to days of week (monday, tuesday, etc) and their corresponding operating hours / delivery windows. Example: {monday: {active: true, shifts: [[10:00, 17:00]]}, tuesday: {active: true, shifts: [[10:00, 17:00]]}, wednesday: {active: true, shifts: [[10:00, 17:00]]}, thursday: {active: true, shifts: [[10:00, 17:00]]}, friday: {active: true, shifts: [[10:00, 17:00]]}, saturday: {active: true, shifts: []}, sunday: {active: true, shifts: []}}'
          default: null
        prepTimeMinutes:
          title: Preptimeminutes
          anyOf:
          - type: integer
          - type: 'null'
          description: '[Integration Specific]: the preparation time to apply for orders, if relying on Nash to compute the delivery windows. This only applies to specific integrations.'
          default: null
        zoneIds:
          title: Zoneids
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: The zone ids to associate with the store location.
          default: null
          example:
          - zone_01234567890123456789
          - zone_01234567890123456789
        zoneAssociations:
          title: Zoneassociations
          anyOf:
          - type: array
            items:
              type: object
              additionalProperties: true
          - type: 'null'
          description: The zone associations to associate with the store location.
          default: null
          example:
          - end_date: '2025-01-01'
            start_date: '2024-01-01'
            zone_id: zone_01234567890123456789
      description: Expected payload for creating a store location.
    ListStoreLocationsResponse:
      title: ListStoreLocationsResponse
      required:
      - storeLocations
      type: object
      properties:
        storeLocations:
          title: Storelocations
          type: array
          items:
            $ref: '#/components/schemas/StoreLocationResponse'
      description: Response for list store locations.
    NashErrorDetails:
      title: NashErrorDetails
      required:
      - code
      - message
      type: object
      properties:
        code:
          title: Code
          type: string
        message:
          title: Message
          type: string
        details:
          title: Details
          anyOf:
          - type: object
            additionalProperties: true
          - type: 'null'
          default: null
    UpdateStoreLocationInputSerializer:
      title: UpdateStoreLocationInputSerializer
      type: object
      properties:
        externalId:
          title: Externalid
          anyOf:
          - type: string
          - type: 'null'
          description: Store location unique identifier from an external system.
          default: null
          example: '40123'
        operatingHours:
          title: Operatinghours
          anyOf:
          - type: object
            additionalProperties: true
          - type: 'null'
          description: '[Integration Specific]: An object with keys that correspond to days of week (monday, tuesday, etc) and their corresponding operating hours / delivery windows.'
          default: null
          example:
            friday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            monday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            saturday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            sunday:
              active: true
              shifts:
              - - '11:00'
                - '18:00'
            thursday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            tuesday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
            wednesday:
              active: true
              shifts:
              - - '10:00'
                - '19:00'
        prepTimeMinutes:
          title: Preptimeminutes
          anyOf:
          - type: integer
          - type: 'null'
          description: '[Integration Specific]: the preparation time to apply for orders, if relying on Nash to compute the delivery windows. This only applies to specific integrations.'
          default: null
        blackoutDates:
          title: Blackoutdates
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: The blackout dates of the store location.
          default: null
          example:
          - '2024-01-01'
          - '2024-01-02'
        firstName:
          title: Firstname
          anyOf:
          - type: string
          - type: 'null'
          description: First name of the person at the store location. If unknown, pass 'Manager'. Limited to 80 characters.
          default: null
          example: Taylor
        lastName:
          title: Lastname
          anyOf:
          - type: string
          - type: 'null'
          description: Last name of the person at the store location. If unknown, pass 'Manager'. Limited to 80 characters.
          default: null
          example: Swift
        email:
          title: Email
          anyOf:
          - type: string
          - type: 'null'
          description: The email of the person at the store location.
          default: null
          example: taylor@swift.com
        pickupInstructions:
          title: Pickupinstructions
          anyOf:
          - type: string
          - type: 'null'
          description: 'The pickup instructions of the store location. Limited to 280 characters. Nash Recommended Input: Order [insert order number] for [insert customer name] from [business name]'
          default: null
          example: Once you arrive at the store, please click above to let us know you are here. Then, go ahead and find a sales associate inside - they'll be happy to help you!
        name:
          title: Name
          anyOf:
          - type: string
          - type: 'null'
          description: Store business name at the origin. Limited to 80 characters.
          default: null
        phoneNumber:
          title: Phonenumber
          anyOf:
          - type: string
          - type: 'null'
          description: 'The phone number to contact at the store location: ''+15555555555'''
          default: null
        address:
          title: Address
          anyOf:
          - type: string
          - type: 'null'
          description: 'The full address in one line for the store location for this package within the Job. Address format: [Number] [Street], [second line], [city], [state] [zip code]. All address fields are required except ''second line''. Second line should include Apt/Suite/Unit/# appended to th

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nash/refs/heads/main/openapi/nash-store-locations-api-openapi.yml