openapi: 3.0.0
info:
  title: WildFork - Store API's
  version: 1.0.0
servers:
  - url: http://{{baseurl}}
  - url: http://{{baseurl}}{{uri}}{{resource}}
tags:
  - name: /
  - name: '{storeId}'
  - name: fulfillment
  - name: available
  - name: available > windows
paths:
  /:
    get:
      tags:
        - /
      summary: Retrieve Stores based on Geo-Coordinates
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: Ocp-Apim-Subscription-Key
          in: header
          schema:
            type: string
          example: '{{Ocp-Apim-Subscription-Key}}'
        - name: latitude
          in: query
          schema:
            type: number
          example: '42.3303'
        - name: longitude
          in: query
          schema:
            type: number
          example: '-83.0958'
        - name: distance
          in: query
          schema:
            type: integer
          example: '10'
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                stores:
                  - id: <string>
                    name: <string>
                    address:
                      address1: <string>
                      address2: <string>
                      city: <string>
                      state: <string>
                      postalCode: <string>
                      country: <string>
                      phone: <string>
                    location:
                      latitude: <string>
                      longitude: <string>
                    google360Url: <string>
                    timeZone: <string>
                    hours:
                      - day: <string>
                        startTime: <string>
                        endTime: <string>
                        open: <boolean>
                      - day: <string>
                        startTime: <string>
                        endTime: <string>
                        open: <boolean>
                    distance: <integer>
                    shippingTypes:
                      - <string>
                      - <string>
                    curbsidePickup: <boolean>
                    deliveryType: <string>
                    shippingLevel:
                      - <string>
                      - <string>
                    channel: <string>
                    shippingEligibility:
                      eligibilityThreshold: <integer>
                      eligibilityAmountRemaining: <integer>
                    membershipEligible: <boolean>
                  - id: <string>
                    name: <string>
                    address:
                      address1: <string>
                      address2: <string>
                      city: <string>
                      state: <string>
                      postalCode: <string>
                      country: <string>
                      phone: <string>
                    location:
                      latitude: <string>
                      longitude: <string>
                    google360Url: <string>
                    timeZone: <string>
                    hours:
                      - day: <string>
                        startTime: <string>
                        endTime: <string>
                        open: <boolean>
                      - day: <string>
                        startTime: <string>
                        endTime: <string>
                        open: <boolean>
                    distance: <integer>
                    shippingTypes:
                      - <string>
                      - <string>
                    curbsidePickup: <boolean>
                    deliveryType: <string>
                    shippingLevel:
                      - <string>
                      - <string>
                    channel: <string>
                    shippingEligibility:
                      eligibilityThreshold: <integer>
                      eligibilityAmountRemaining: <integer>
                    membershipEligible: <boolean>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example: {}
        '401':
          description: Unauthorized
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
  /{storeId}:
    get:
      tags:
        - '{storeId}'
      summary: Retrieve Stores based on storeId
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: Ocp-Apim-Subscription-Key
          in: header
          schema:
            type: string
          example: '{{Ocp-Apim-Subscription-Key}}'
        - name: storeId
          in: path
          schema:
            type: string
          required: true
          example: '{{ca-storeId}}'
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                id: <string>
                name: <string>
                address:
                  address1: <string>
                  address2: <string>
                  city: <string>
                  state: <string>
                  postalCode: <string>
                  country: <string>
                  phone: <string>
                location:
                  latitude: <string>
                  longitude: <string>
                google360Url: <string>
                timeZone: <string>
                hours:
                  - day: <string>
                    startTime: <string>
                    endTime: <string>
                    open: <boolean>
                  - day: <string>
                    startTime: <string>
                    endTime: <string>
                    open: <boolean>
                distance: <integer>
                shippingTypes:
                  - <string>
                  - <string>
                curbsidePickup: <boolean>
                deliveryType: <string>
                shippingLevel:
                  - <string>
                  - <string>
                channel: <string>
                shippingEligibility:
                  eligibilityThreshold: <integer>
                  eligibilityAmountRemaining: <integer>
                membershipEligible: <boolean>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example: {}
        '401':
          description: Unauthorized
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
  /fulfillment:
    get:
      tags:
        - fulfillment
      summary: Retrieve Stores based on Zipcode for Fulfillment
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: Ocp-Apim-Subscription-Key
          in: header
          schema:
            type: string
          example: '{{Ocp-Apim-Subscription-Key}}'
        - name: postalCode
          in: query
          schema:
            type: string
          description: zip code CA-test wildfork
          example: '{{ca-zipCode}}'
        - name: distance
          in: query
          schema:
            type: string
          description: radius-delivery
          example: '{{distance}}'
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              examples:
                example-0:
                  summary: OK
                  value:
                    stores:
                      - id: <string>
                        name: <string>
                        address:
                          address1: <string>
                          address2: <string>
                          city: <string>
                          state: <string>
                          postalCode: <string>
                          country: <string>
                          phone: <string>
                        location:
                          latitude: <string>
                          longitude: <string>
                        google360Url: <string>
                        timeZone: <string>
                        hours:
                          - day: <string>
                            startTime: <string>
                            endTime: <string>
                            open: <boolean>
                          - day: <string>
                            startTime: <string>
                            endTime: <string>
                            open: <boolean>
                        distance: <integer>
                        shippingTypes:
                          - <string>
                          - <string>
                        curbsidePickup: <boolean>
                        deliveryType: <string>
                        shippingLevel:
                          - <string>
                          - <string>
                        channel: <string>
                        shippingEligibility:
                          eligibilityThreshold: <integer>
                          eligibilityAmountRemaining: <integer>
                        membershipEligible: <boolean>
                      - id: <string>
                        name: <string>
                        address:
                          address1: <string>
                          address2: <string>
                          city: <string>
                          state: <string>
                          postalCode: <string>
                          country: <string>
                          phone: <string>
                        location:
                          latitude: <string>
                          longitude: <string>
                        google360Url: <string>
                        timeZone: <string>
                        hours:
                          - day: <string>
                            startTime: <string>
                            endTime: <string>
                            open: <boolean>
                          - day: <string>
                            startTime: <string>
                            endTime: <string>
                            open: <boolean>
                        distance: <integer>
                        shippingTypes:
                          - <string>
                          - <string>
                        curbsidePickup: <boolean>
                        deliveryType: <string>
                        shippingLevel:
                          - <string>
                          - <string>
                        channel: <string>
                        shippingEligibility:
                          eligibilityThreshold: <integer>
                          eligibilityAmountRemaining: <integer>
                        membershipEligible: <boolean>
                example-1:
                  summary: Retrieve Stores based on Zipcode for Fulfillment
                  value:
                    stores:
                      - id: '2901'
                        name: Mississauga
                        address:
                          address1: '6620 Kitimat Rd #4'
                          address2: ''
                          city: Mississauga
                          state: 'ON'
                          postalCode: L5N 2B8
                          country: CA
                          phone: 905-864-6263
                        location:
                          latitude: '43.602666'
                          longitude: '-79.736138'
                        google360Url: ''
                        timeZone: EST
                        hours:
                          - day: Monday
                            startTime: '09:00'
                            endTime: '07:00'
                            open: true
                          - day: Tuesday
                            startTime: '09:00'
                            endTime: '07:00'
                            open: true
                          - day: Wednesday
                            startTime: '09:00'
                            endTime: '07:00'
                            open: true
                          - day: Thursday
                            startTime: '09:00'
                            endTime: '07:00'
                            open: true
                          - day: Friday
                            startTime: '09:00'
                            endTime: '07:00'
                            open: true
                          - day: Saturday
                            startTime: '09:00'
                            endTime: '07:00'
                            open: true
                          - day: Sunday
                            startTime: '09:00'
                            endTime: '07:00'
                            open: true
                        shippingTypes:
                          - SCHEDULED
                          - ''
                        curbsidePickup: true
                        channel: CAEC
                        shippingEligibility:
                          eligibilityThreshold: 3500
                          eligibilityAmountRemaining: 5000
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
        '401':
          description: Unauthorized
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
        '404':
          description: Not Found
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example: {}
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
  /available/windows:
    get:
      tags:
        - available > windows
      summary: Retrieve Fulfillment Window
      parameters:
        - name: X-WILDFORK-CART-ID
          in: header
          schema:
            type: string
          description: '(Required) '
        - name: X-WILDFORK-STORE-ID
          in: header
          schema:
            type: string
          example: '{{ca-storeId}}'
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: Ocp-Apim-Subscription-Key
          in: header
          schema:
            type: string
          example: '{{Ocp-Apim-Subscription-Key}}'
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              examples:
                example-0:
                  summary: successful operation
                  value:
                    windows:
                      - id: <string>
                        startTime: <long>
                        endTime: <long>
                        expiration: <long>
                        fulfillmentType: <string>
                        available: <boolean>
                        carrierName: <string>
                        serviceLevel: <string>
                      - id: <string>
                        startTime: <long>
                        endTime: <long>
                        expiration: <long>
                        fulfillmentType: <string>
                        available: <boolean>
                        carrierName: <string>
                        serviceLevel: <string>
                example-1:
                  summary: Retrieve Fulfillment Window
                  value:
                    windows: []
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example: {}
        '401':
          description: Unauthorized
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: '*/*'
          content:
            text/plain:
              schema:
                type: string
              example: |-
                {
                  "errors": [
                    {
                      "code": "<string>",
                      "message": "<string>"
                    },
                    {
                      "code": "<string>",
                      "message": "<string>"
                    }
                  ]
                }
