openapi: 3.0.3
info:
  title: storeback-api
  version: 0.2.6
  description: storeback-api is a test repo to poof of concept of PDP resource serving.
servers:
- url: https://bombas-storeback-api.global.ssl.fastly.net/v1
paths:
  /v1/products/{productId}:
    get:
      description: |-
        Returns a product by ID or by handle.

        The following API will return a product object sanitized of private information from shopify. It should be thought of as a serializer or alturnative interface to the public shopify information per a product.
      parameters:
      - name: productId
        in: path
        description: The ID or handle of the product to return.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: A product object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BombasStorebackApiV0ModelsProduct'
        '400':
          description: The specified product ID is invalid (e.g. not a number).
        '404':
          description: A product with the specified ID was not found.
        default:
          description: Unexpected error
components:
  schemas:
    BombasStorebackApiV0ModelsDetail:
      type: object
      properties:
        icon_handle:
          description: the name used to generate the silhouette icon image for a product
            detail
          example: calf
          type: string
        title:
          description: the title of the details / set of tech features
          example: Compression
          type: string
        tech:
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsTech'
    BombasStorebackApiV0ModelsTech:
      type: object
      properties:
        title:
          description: name of the tech feature
          example: Seamless Toe
          type: string
        handle:
          description: a unique internal name used to identify the tech feature
          example: invisitoe
          type: string
        content:
          description: the copy wrote for the tech feature
          example: We took the extra time to link the final seam on every pair of
            socks carefully by hand, creating a fully-smooth sock with no annoying
            bump.
          type: string
    BombasStorebackApiV0ModelsPrice:
      type: object
      properties:
        msrp:
          description: The original price of the item before an adjustment or a sale.
          example: 100.00
          type: string
        price:
          description: The price of the product variant.
          example: 100.00
          type: string
        isDiscounted:
          description: true If the product is discounted
          example: false
          type: boolean
        percentOff:
          description: 'percentOff which is a whole number as a string, based on the
            percentage price is off of msrp prices. '
          type: string
    BombasStorebackApiV0ModelsShipping:
      type: object
      properties:
        requires_shipping:
          description: This property is deprecated. Use the `requires_shipping` property
            on the InventoryItem resource instead.
          example: true
          type: boolean
        grams:
          description: The weight of the product variant in grams.
          example: 510
          type: integer
          format: int32
        weight:
          description: The weight of the product variant in the unit system specified
            with weight_unit.
          example: 18
          type: integer
          format: int32
        weight_unit:
          description: 'The unit of measurement that applies to the product variant''s
            weight. If you don''t specify a value for weight_unit, then the shop''s
            default unit of measurement is applied. Valid values: g, kg, oz, and lb.'
          example: oz
          type: string
    BombasStorebackApiV0ModelsBreadcrumb:
      type: object
      properties:
        name:
          description: The name of the breadcrumb section
          example: Womens
          type: string
        link:
          description: Pieces of a collections page url to use for link
          example: /collections/womens
          type: string
        position:
          description: Order position
          example: 0
          type: integer
          format: int32
    BombasStorebackApiV0ModelsProduct:
      type: object
      properties:
        id:
          description: An unsigned 64-bit integer that's used as a unique identifier
            for the product. Each id is unique across the Shopify system. No two products
            will have the same id, even if they're from different shops.
          example: 4185052971093
          type: integer
          format: int64
        title:
          description: The name of the product.
          example: Men's Merino Tri-Block Calf Sock Gift Box
          type: string
        handle:
          description: A unique human-friendly string for the product. Automatically
            generated from the product's title. Used by the Liquid templating language
            to refer to objects.
          example: mens-merino-tri-block-calf-sock-gift-box
          type: string
        description:
          description: A description of the product.
          example: 'Purpose-built for running, working out and movement. Bombas Hex
            Tec construction for breathability and moisture-wicking. Proprietary cotton-poly
            blend yarns. With comfort innovations like strategic zone cushioning and
            airflow ventilation. Specially designed to help you move with grace and
            speed. Included is a Bombas Hex Tec Sock Bag, designed to keep your socks
            organized and away from the rest of your stuff or to just put some of
            your favorite belongings in after an intense workout. '
          type: string
        description_html:
          description: A description of the product. Supports HTML formatting.
          example: <meta charset="utf-8"><p>Purpose-built for running, working out
            and movement. Bombas Hex Tec construction for breathability and moisture-wicking.
            Proprietary cotton-poly blend yarns. With comfort innovations like strategic
            zone cushioning and airflow ventilation. Specially designed to help you
            move with grace and speed. </p><p>Included is a Bombas Hex Tec Sock Bag,
            designed to keep your socks organized and away from the rest of your stuff
            <span>or to just put some of your favorite belongings in</span><span>
            </span>after an intense workout. </p>
          type: string
        item_count:
          description: The number of units included. If it is > 1, then it is a pack.
          example: 8
          type: integer
          format: int32
        product_type:
          description: The product type
          example: socks
          type: string
        gender:
          description: The marketed gender of the products
          example: womens
          type: string
        colors:
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsColor'
        sizes:
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsSize'
        images:
          type: array
          items:
            type: object
            additionalProperties: true
        variants:
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsVariant'
        breadcrumbs:
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsBreadcrumb'
        details:
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsDetail'
        created_at:
          description: The date and time (ISO 8601 format) when the product was created.
          example: '2012-08-24T14:01:47-04:00'
          type: string
        updated_at:
          description: The date and time (ISO 8601 format) when the product was last
            modified.
          example: '2012-08-24T14:01:47-04:00'
          type: string
    BombasStorebackApiV0ModelsColor:
      type: object
      properties:
        id:
          description: The slug id of the color
          example: white-charcoal-black
          type: string
        position:
          description: The order in which the color should be displayed
          example: 0
          type: integer
          format: int32
        name:
          description: The name of the color
          example: White charcoal black
          type: string
        fill:
          description: A 80x80 url of an image of the swatch to use on FE
          example: https://assets.bombas.com/image/fetch/f_auto,q_auto/https://cdn.shopify.com/s/files/1/1119/5850/files/swatch_performance-running-white-charcoal-black_80x80.png
          type: string
    BombasStorebackApiV0ModelsSizeValues:
      type: object
      properties:
        id:
          description: The internal name of the size
          example: l
          type: string
        name:
          description: The visual name of the size
          example: l
          type: string
        guidance:
          description: Size related guidance for more specific examples for the user
          example: US Shoe Size 8-10½
          type: string
    BombasStorebackApiV0ModelsImage:
      type: object
      properties:
        id:
          description: A unique numeric identifier for the product image.
          example: 8844696584277
          type: integer
          format: int32
        position:
          description: The order of the product image in the list. The first product
            image is at position 1 and is the 'main' image for the product.
          example: 1
          type: integer
          format: int32
        alt:
          description: ALT text
          example: a pair of feet with socks on them, the socks are blue
          type: string
        src:
          description: Specifies the location of the product image. This parameter
            supports URL filters that you can use to retrieve modified copies of the
            image. For example, add _small, to the filename to retrieve a scaled copy
            of the image at 100 x 100 px (for example, ipod-nano_small.png), or add
            _2048x2048 to retrieve a copy of the image constrained at 2048 x 2048
            px resolution (for example, ipod-nano_2048x2048.png).
          example: https://cdn.shopify.com/s/files/1/1119/5850/products/white-charcoal-black-grid_278da800-8c13-407f-8607-28986dfc83f8.jpg?v=1571684501
          type: string
    BombasStorebackApiV0ModelsVariant:
      type: object
      properties:
        id:
          description: The unique numeric identifier for the product variant.
          example: 22838940926037
          type: integer
          format: int64
        product_id:
          description: The unique numeric identifier for the product.
          example: 2642653839445
          type: integer
          format: int64
        sku:
          description: A unique identifier for the product variant in the shop. Required
            in order to connect to a FulfillmentService.
          example: 843629142993
          type: string
        title:
          description: The title of the product variant.
          example: white charcoal black / m
          type: string
        is_available:
          description: If the variant is availabor not
          example: true
          type: boolean
        price:
          $ref: '#/components/schemas/BombasStorebackApiV0ModelsPrice'
        shipping:
          $ref: '#/components/schemas/BombasStorebackApiV0ModelsShipping'
        created_at:
          description: The date and time (ISO 8601 format) when the product was created.
          example: '2012-08-24T14:01:47-04:00'
          type: string
        updated_at:
          description: The date and time (ISO 8601 format) when the product was last
            modified.
          example: '2012-08-24T14:01:47-04:00'
          type: string
        sizes:
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsSize'
    BombasStorebackApiV0ModelsSize:
      description: A particular size options for a product
      type: object
      properties:
        name:
          description: The name of the option which this size was created from
          example: size
          type: string
        values:
          description: ''
          type: array
          items:
            $ref: '#/components/schemas/BombasStorebackApiV0ModelsSizeValues'
