Snipcart Discounts API

Manage discount codes and promotions

OpenAPI Specification

snipcart-discounts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Snipcart REST AbandonedCarts Discounts API
  description: 'The Snipcart REST API provides programmatic access to your store''s data including orders, customers, products, discounts, notifications, abandoned carts, domains, refunds, user sessions, and custom shipping methods. Authentication uses HTTP Basic Auth with a secret API key generated from the merchant dashboard. All requests must include an Accept: application/json header.

    '
  version: '3.0'
  contact:
    name: Snipcart Support
    url: https://snipcart.com
  license:
    name: Proprietary
    url: https://snipcart.com/terms-of-service
servers:
- url: https://app.snipcart.com/api
  description: Snipcart API
security:
- basicAuth: []
tags:
- name: Discounts
  description: Manage discount codes and promotions
paths:
  /discounts:
    get:
      summary: List discounts
      operationId: listDiscounts
      description: Returns all discounts for your account.
      tags:
      - Discounts
      responses:
        '200':
          description: List of discounts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Discount'
    post:
      summary: Create discount
      operationId: createDiscount
      description: Creates a new discount.
      tags:
      - Discounts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - type
              properties:
                name:
                  type: string
                code:
                  type: string
                type:
                  type: string
                  enum:
                  - FixedAmount
                  - Rate
                  - AlternatePrice
                  - Shipping
                amount:
                  type: number
                  format: float
                rate:
                  type: number
                  format: float
                maxNumberOfUsages:
                  type: integer
                expirationDate:
                  type: string
                  format: date-time
      responses:
        '201':
          description: Created discount
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Discount'
  /discounts/{id}:
    get:
      summary: Get discount
      operationId: getDiscount
      description: Returns a particular discount.
      tags:
      - Discounts
      parameters:
      - $ref: '#/components/parameters/discountId'
      responses:
        '200':
          description: Discount details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Discount'
        '404':
          description: Discount not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      summary: Update discount
      operationId: updateDiscount
      description: Updates an existing discount.
      tags:
      - Discounts
      parameters:
      - $ref: '#/components/parameters/discountId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                code:
                  type: string
                amount:
                  type: number
                  format: float
                rate:
                  type: number
                  format: float
                maxNumberOfUsages:
                  type: integer
                expirationDate:
                  type: string
                  format: date-time
      responses:
        '200':
          description: Updated discount
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Discount'
    delete:
      summary: Delete discount
      operationId: deleteDiscount
      description: Deletes an existing discount. Discounts already used in completed orders cannot be deleted.
      tags:
      - Discounts
      parameters:
      - $ref: '#/components/parameters/discountId'
      responses:
        '200':
          description: Discount deleted successfully
        '400':
          description: Cannot delete discount already used in completed orders
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Discount:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
          description: Discount code customers enter at checkout
        type:
          type: string
          enum:
          - FixedAmount
          - Rate
          - AlternatePrice
          - Shipping
        amount:
          type: number
          format: float
        rate:
          type: number
          format: float
          description: Discount rate as percentage (0-100)
        maxNumberOfUsages:
          type: integer
        numberOfUsages:
          type: integer
        expirationDate:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        message:
          type: string
        details:
          type: array
          items:
            type: string
  parameters:
    discountId:
      name: id
      in: path
      required: true
      description: Unique discount identifier
      schema:
        type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: 'Use your secret API key as the username with an empty password. Base64-encode as {API_KEY}: and pass as Authorization: Basic {encoded}.

        '