openapi: 3.0.3
info:
  title: SellAuth
  description: ''
  version: 1.0.0
servers:
  - url: 'https://api.sellauth.com'
components:
  schemas:
    Shop:
      type: object
      properties:
        id:
          type: integer
          example: 1
        created_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        name:
          type: string
          example: My Shop
        subdomain:
          type: string
          example: myshop
        logo_image_id:
          type: integer
          nullable: true
          example: 0
        favicon_image_id:
          type: integer
          nullable: true
          example: 1
        background_image_id:
          type: integer
          nullable: true
          example: 2
        image_url:
          type: string
          nullable: true
          example: null
        background_image_url:
          type: string
          nullable: true
          example: null
        bitcoin_address:
          type: string
          example: null
        bitcoin_wallet:
          type: string
          nullable: true
          example: null
        litecoin_address:
          type: string
          example: null
        litecoin_wallet:
          type: string
          nullable: true
          example: null
        paypal_email:
          type: string
          example: null
        paypal_method:
          type: string
          example: rest
        paypal_client_id:
          type: string
          example: null
        paypal_client_secret:
          type: string
          example: null
        paypal_webhook_id:
          type: string
          example: null
        paypalff_method:
          type: string
          example: ipn_note
        stripe_api_key:
          type: string
          example: null
        stripe_webhook_secret:
          type: string
          example: null
        owner_id:
          type: integer
          example: 1
        cashapp_cashtag:
          type: string
          example: null
        cashapp_email:
          type: string
          example: null
        description:
          type: string
          nullable: true
          example: null
        valid_payment_methods:
          type: array
          items:
            type: string
          example:
            - PAYPAL
            - STRIPE
            - CASHAPP
            - VENMO
            - BTC
            - LTC
            - PAYPALFF
        theme:
          $ref: '#/components/schemas/Theme'
        is_subscribed:
          type: boolean
          example: false
        subscription_end_time:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
    Theme:
      type: object
      properties:
        id:
          type: integer
          example: 1
        name:
          type: string
          example: Glow - Imported
        description:
          type: string
          nullable: true
          example: ''
        version:
          type: string
          example: 1.1.5
        official_theme:
          type: object
          properties:
            id:
              type: string
              example: glow
            name:
              type: string
              example: Glow
            changelog:
              type: array
              items:
                type: string
              example:
                - Minor bug fixes
                - Products On Hold
                - New Text Editor
            price:
              type: number
              example: 49.99
    Product:
      type: object
      properties:
        id:
          type: integer
          example: 1
        salt:
          type: string
          example: 98fcb984b3e22
        created_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        name:
          type: string
          example: A Product
        path:
          type: string
          example: a-product
        description:
          type: string
          example: >-
            <p class="e-paragraph">Lorem ipsum odor amet, consectetuer
            adipiscing elit...</p>
        price:
          type: string
          example: '10.00'
        currency:
          type: string
          example: USD
        payment_methods:
          type: array
          items:
            type: string
            example: BTC
        deliverables:
          type: string
          nullable: true
          example: |-
            Key 1
            Key 2
            Key 3
        deliverables_type:
          type: string
          example: serials
        stock:
          type: integer
          example: null
        image_url:
          type: string
          nullable: true
          example: null
        group_id:
          type: integer
          example: 1
        shop_id:
          type: integer
          example: 1
        volume_discounts:
          type: array
          items: {}
        type:
          type: string
          example: single
        instructions:
          type: string
          example: <p class="e-paragraph"></p>
        out_of_stock_message:
          type: string
          nullable: true
          example: null
        sort_priority:
          type: integer
          example: 0
        group_sort_priority:
          type: integer
          example: 0
        visibility:
          type: string
          example: public
        on_hold:
          type: integer
          example: 0
        cloudflare_image_id:
          type: string
          nullable: true
          example: null
        deleted_at:
          type: string
          nullable: true
          example: null
        quantity_min:
          type: integer
          nullable: true
          example: null
        quantity_max:
          type: integer
          nullable: true
          example: null
        discord_guild_id:
          type: integer
          nullable: true
          example: null
        discord_role_id:
          type: integer
          nullable: true
          example: null
        block_vpn:
          type: integer
          example: 0
        stock_count:
          type: integer
          example: 0
    Group:
      type: object
      properties:
        id:
          type: integer
          example: 1
        name:
          type: string
          example: A Group
        image_id:
          type: string
          example: null
        image_url:
          type: string
          example: null
        sort_priority:
          type: integer
          example: 0
        visibility:
          type: string
          example: public
        shop_id:
          type: integer
          example: 1
        created_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        deleted_at:
          type: string
          nullable: true
          example: null
    Image:
      type: object
      properties:
        id:
          type: integer
          example: 1
        cloudflare_image_id:
          type: string
          example: 69xdd69x-420x-69r8-2ree-000r0e0e0e00
        created_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        deleted_at:
          type: string
          nullable: true
          example: null
        shop_id:
          type: integer
          example: 1
    CustomField:
      type: object
      properties:
        id:
          type: integer
          example: 1
        shop_id:
          type: integer
          example: 1
        name:
          type: string
          example: Your Name
        hint:
          type: string
          nullable: true
          example: null
        type:
          type: string
          example: text
        options:
          type: string
          nullable: true
          example: null
        is_required:
          type: boolean
          example: true
        created_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
    Coupon:
      type: object
      properties:
        id:
          type: integer
          example: 1
        code:
          type: string
          example: MYCOUPON
        salt:
          type: string
          example: 298e8d2e935ca
        global:
          type: integer
          example: 0
        discount:
          type: number
          format: float
          example: 5
        uses:
          type: integer
          example: 0
        max_uses:
          type: integer
          nullable: true
          example: null
        allowed_emails:
          type: array
          items:
            type: string
          nullable: true
          example: null
        type:
          type: string
          example: percentage
        expiration_date:
          type: string
          format: date-time
          nullable: true
          example: null
        shop_id:
          type: integer
          example: 1
        created_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
    Invoice:
      type: object
      properties:
        id:
          type: integer
        status:
          type: string
        product_id:
          type: integer
        variant_id:
          type: integer
          nullable: true
        price:
          type: string
        currency:
          type: string
        gateway:
          type: string
        email:
          type: string
        salt:
          type: string
        manual:
          type: integer
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        archived:
          type: integer
        unique_id:
          type: string
        product:
          type: object
          properties:
            id:
              type: integer
            name:
              type: string
            stock_count:
              type: integer
        variant:
          type: object
          nullable: true
    Feedback:
      type: object
      properties:
        id:
          type: integer
        salt:
          type: string
        shop_id:
          type: integer
        invoice_id:
          type: integer
          nullable: true
        message:
          type: string
        rating:
          type: integer
          minimum: 1
          maximum: 5
        is_automatic:
          type: boolean
        reply:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
          nullable: true
        updated_at:
          type: string
          format: date-time
          nullable: true
        replied_at:
          type: string
          format: date-time
          nullable: true
        deleted_at:
          type: string
          format: date-time
          nullable: true
    Domain:
      type: object
      properties:
        id:
          type: integer
        hostname:
          type: string
        cloudflare_id:
          type: string
        dns_records:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              type:
                type: string
              value:
                type: string
        shop_id:
          type: integer
        status:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
          nullable: true
    BlacklistEntry:
      type: object
      properties:
        id:
          type: integer
          example: 1
        shop_id:
          type: integer
          example: 1
        type:
          type: string
          example: ip
        value:
          type: string
          example: 127.0.0.1
        reason:
          type: string
          nullable: true
          example: null
        created_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00.000000Z'
    ValidationError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: The <code>field name</code> field is required. (and n more errors)
        message:
          type: string
          example: The <code>field name</code> field is required. (and n more errors)
    NotFoundError:
      type: object
      properties:
        message:
          type: string
          example: Entity not found.
paths:
  /v1/shops:
    get:
      summary: Get all shops for the authenticated user.
      operationId: getV1Shops
      description: This endpoint allows you to get the `shopId` parameter.
      parameters: []
      responses:
        '200':
          description: Shops retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Shop'
      tags:
        - Endpoints
      security: []
  /v1/shops/create:
    post:
      summary: ''
      operationId: postV1ShopsCreate
      description: ''
      parameters: []
      responses:
        '200':
          description: Shop created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                    example: My Shop
                  subdomain:
                    type: string
                    example: myshop
                  owner_id:
                    type: integer
                    example: 1
                  updated_at:
                    type: string
                    format: date-time
                    example: '2024-01-01T00:00:00.000000Z'
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-01-01T00:00:00.000000Z'
                  id:
                    type: integer
                    example: 1
                  is_subscribed:
                    type: boolean
                    example: false
                  url:
                    type: string
                    example: 'https://myshop.sellauth.com'
                  valid_payment_methods:
                    type: array
                    items:
                      type: string
                    example: []
        '400':
          description: Maximum number of shops reached.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: You have reached the maximum number of shops.
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Generic server error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Failed to create shop.
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: My Shop
                subdomain:
                  type: string
                  description: 'Must match the regex /^[A-Za-z0-9-]+$/.'
                  example: myshop
                logo:
                  type: string
                  format: binary
                  description: Must be an image.
              required:
                - name
                - subdomain
      security: []
  '/v1/shops/{shopId}':
    get:
      summary: ''
      operationId: getV1ShopsShopId
      description: ''
      parameters: []
      responses:
        '200':
          description: Shop retrieved.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Shop'
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: nihil
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/update':
    put:
      summary: ''
      operationId: putV1ShopsShopIdUpdate
      description: ''
      parameters: []
      responses:
        '200':
          description: Shop updated.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Shop'
        '400':
          description: Subdomain already taken.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The subdomain has already been taken.
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: My Shop
                subdomain:
                  type: string
                  description: 'Must match the regex /^[A-Za-z0-9-]+$/.'
                  example: myshop
                logo_image_id:
                  type: string
                  description: ''
                  example: null
                favicon_image_id:
                  type: string
                  description: ''
                  example: null
                background_image_id:
                  type: string
                  description: ''
                  example: null
                discord_url:
                  type: string
                  description: Must be a valid URL.
                  example: 'https://discord.gg/invite'
                youtube_url:
                  type: string
                  description: Must be a valid URL.
                  example: 'https://youtube.com/channel'
                telegram_url:
                  type: string
                  description: Must be a valid URL.
                  example: 'https://t.me/channel'
                tiktok_url:
                  type: string
                  description: Must be a valid URL.
                  example: 'https://tiktok.com/@username'
                instagram_url:
                  type: string
                  description: Must be a valid URL.
                  example: 'https://instagram.com/username'
                discord_client_id:
                  type: string
                  description: ''
                  example: null
                discord_client_secret:
                  type: string
                  description: ''
                  example: null
                discord_bot_token:
                  type: string
                  description: ''
                  example: null
                crisp_website_id:
                  type: string
                  description: ''
                  example: null
                description:
                  type: string
                  description: ''
                  example: null
                terms:
                  type: string
                  description: ''
                  example: null
                enable_automatic_feedback:
                  type: boolean
                  description: ''
                  example: false
              required:
                - name
                - subdomain
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: officia
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/stats':
    get:
      summary: ''
      operationId: getV1ShopsShopIdStats
      description: ''
      parameters: []
      responses:
        '200':
          description: Shop stats retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  products_sold:
                    type: integer
                    example: 100
                  total_customers:
                    type: integer
                    example: 50
                  feedbacks_received:
                    type: integer
                    example: 75
                  average_rating:
                    type: string
                    example: '4.50'
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: 1
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/products':
    get:
      summary: ''
      operationId: getV1ShopsShopIdProducts
      description: ''
      parameters: []
      responses:
        '200':
          description: Products retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  current_page:
                    type: integer
                    example: 1
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 0
                        salt:
                          type: string
                          example: 98fcb984b3e22
                        path:
                          type: string
                          example: a-product
                        name:
                          type: string
                          example: A Product
                        price:
                          type: string
                          example: '10.00'
                        currency:
                          type: string
                          example: USD
                        deliverables_type:
                          type: string
                          example: serials
                        stock:
                          type: integer
                          example: null
                        group_id:
                          type: integer
                          example: 1
                        type:
                          type: string
                          example: single
                        visibility:
                          type: string
                          example: public
                        stock_count:
                          type: integer
                          example: 0
                        group:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 1
                            name:
                              type: string
                              example: Group 1
                  first_page_url:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/1/products?page=1'
                  from:
                    type: integer
                    example: 1
                  last_page:
                    type: integer
                    example: 1
                  last_page_url:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/1/products?page=1'
                  links:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          nullable: true
                          example: null
                        label:
                          type: string
                          example: '&laquo; Previous'
                        active:
                          type: boolean
                          example: false
                  next_page_url:
                    type: string
                    nullable: true
                    example: null
                  path:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/1/products'
                  per_page:
                    type: integer
                    example: 20
                  prev_page_url:
                    type: string
                    nullable: true
                    example: null
                  to:
                    type: integer
                    example: 1
                  total:
                    type: integer
                    example: 1
        '500':
          description: Generic server error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: An error occurred while fetching products
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdProducts
      description: ''
      parameters: []
      responses:
        '200':
          description: Product created.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/Product'
                  - type: object
                    properties:
                      images:
                        type: array
                        items:
                          type: object
                          allOf:
                            - $ref: '#/components/schemas/Image'
                            - type: object
                              properties:
                                pivot:
                                  type: object
                                  properties:
                                    product_id:
                                      type: integer
                                      example: 1
                                    image_id:
                                      type: integer
                                      example: 1
                      variants:
                        type: array
                        items:
                          type: object
                        example: []
                      custom_fields:
                        type: array
                        items:
                          type: object
                          allOf:
                            - $ref: '#/components/schemas/CustomField'
                            - type: object
                              properties:
                                pivot:
                                  type: object
                                  properties:
                                    morphable_id:
                                      type: integer
                                      example: 1
                                    custom_field_id:
                                      type: integer
                                      example: 1
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: deleniti
                path:
                  type: string
                  description: ''
                  example: null
                description:
                  type: string
                  description: ''
                  example: labore
                instructions:
                  type: string
                  description: ''
                  example: null
                out_of_stock_message:
                  type: string
                  description: ''
                  example: null
                currency:
                  type: string
                  description: ''
                  example: molestiae
                deliverables:
                  type: string
                  description: ''
                  example: null
                deliverables_type:
                  type: string
                  description: ''
                  example: service
                  enum:
                    - serials
                    - service
                    - dynamic
                stock:
                  type: number
                  description: Must be at least -1.
                  example: 18
                group_id:
                  type: string
                  description: ''
                  example: null
                image_ids:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: string
                type:
                  type: string
                  description: ''
                  example: single
                  enum:
                    - single
                    - variant
                visibility:
                  type: string
                  description: ''
                  example: public
                  enum:
                    - public
                    - unlisted
                    - private
                    - on_hold
                payment_methods:
                  type: object
                  description: ''
                  example: null
                  properties: {}
                price:
                  type: string
                  description: >-
                    This field is required when <code>type</code> is
                    <code>single</code>.
                  example: null
                quantity_min:
                  type: number
                  description: Must be at least 1.
                  example: 79
                quantity_max:
                  type: number
                  description: Must be at least 0.
                  example: 68
                volume_discounts:
                  type: array
                  description: ''
                  example:
                    - quia
                  items:
                    type: string
                discord_guild_id:
                  type: string
                  description: ''
                  example: null
                discord_role_id:
                  type: string
                  description: ''
                  example: null
                block_vpn:
                  type: boolean
                  description: ''
                  example: false
                custom_field_ids:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: string
                variants:
                  type: object
                  description: >-
                    This field is required when <code>type</code> is
                    <code>variant</code>.  This field is required when
                    <code>type</code> is <code>variant</code>.  This field is
                    required when <code>type</code> is <code>variant</code>.
                    Must have at least 1 items.
                  example: null
                  properties: {}
              required:
                - name
                - description
                - currency
                - type
                - visibility
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: 1
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/products/{productId}':
    get:
      summary: ''
      operationId: getV1ShopsShopIdProductsProductId
      description: ''
      parameters: []
      responses:
        '200':
          description: Product retrieved.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/Product'
                  - type: object
                    properties:
                      images:
                        type: array
                        items:
                          type: object
                          allOf:
                            - $ref: '#/components/schemas/Image'
                            - type: object
                              properties:
                                pivot:
                                  type: object
                                  properties:
                                    product_id:
                                      type: integer
                                      example: 1
                                    image_id:
                                      type: integer
                                      example: 1
                      variants:
                        type: array
                        items:
                          type: object
                        example: []
                      custom_fields:
                        type: array
                        items:
                          type: object
                          allOf:
                            - $ref: '#/components/schemas/CustomField'
                            - type: object
                              properties:
                                pivot:
                                  type: object
                                  properties:
                                    morphable_id:
                                      type: integer
                                      example: 1
                                    custom_field_id:
                                      type: integer
                                      example: 1
      tags:
        - Endpoints
      security: []
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdProductsProductId
      description: ''
      parameters: []
      responses:
        '200':
          description: Product deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Product deleted successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: laborum
        required: true
        schema:
          type: string
      - in: path
        name: productId
        description: ''
        example: dolorem
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/products/{productId}/update':
    put:
      summary: ''
      operationId: putV1ShopsShopIdProductsProductIdUpdate
      description: ''
      parameters: []
      responses:
        '200':
          description: Product updated.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/Product'
                  - type: object
                    properties:
                      images:
                        type: array
                        items:
                          type: object
                          allOf:
                            - $ref: '#/components/schemas/Image'
                            - type: object
                              properties:
                                pivot:
                                  type: object
                                  properties:
                                    product_id:
                                      type: integer
                                      example: 1
                                    image_id:
                                      type: integer
                                      example: 1
                      variants:
                        type: array
                        items:
                          type: object
                        example: []
                      custom_fields:
                        type: array
                        items:
                          type: object
                          allOf:
                            - $ref: '#/components/schemas/CustomField'
                            - type: object
                              properties:
                                pivot:
                                  type: object
                                  properties:
                                    morphable_id:
                                      type: integer
                                      example: 1
                                    custom_field_id:
                                      type: integer
                                      example: 1
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: et
                path:
                  type: string
                  description: ''
                  example: null
                description:
                  type: string
                  description: ''
                  example: est
                instructions:
                  type: string
                  description: ''
                  example: null
                out_of_stock_message:
                  type: string
                  description: ''
                  example: null
                currency:
                  type: string
                  description: ''
                  example: similique
                deliverables:
                  type: string
                  description: ''
                  example: null
                deliverables_type:
                  type: string
                  description: ''
                  example: service
                  enum:
                    - serials
                    - service
                    - dynamic
                stock:
                  type: number
                  description: Must be at least -1.
                  example: 21
                group_id:
                  type: string
                  description: ''
                  example: null
                image_ids:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: string
                type:
                  type: string
                  description: ''
                  example: single
                  enum:
                    - single
                    - variant
                visibility:
                  type: string
                  description: ''
                  example: unlisted
                  enum:
                    - public
                    - unlisted
                    - private
                    - on_hold
                payment_methods:
                  type: object
                  description: ''
                  example: null
                  properties: {}
                price:
                  type: string
                  description: >-
                    This field is required when <code>type</code> is
                    <code>single</code>.
                  example: null
                quantity_min:
                  type: number
                  description: Must be at least 1.
                  example: 50
                quantity_max:
                  type: number
                  description: Must be at least 0.
                  example: 18
                volume_discounts:
                  type: array
                  description: ''
                  example:
                    - quaerat
                  items:
                    type: string
                discord_guild_id:
                  type: string
                  description: ''
                  example: null
                discord_role_id:
                  type: string
                  description: ''
                  example: null
                block_vpn:
                  type: boolean
                  description: ''
                  example: true
                custom_field_ids:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: string
                variants:
                  type: object
                  description: >-
                    This field is required when <code>type</code> is
                    <code>variant</code>.  This field is required when
                    <code>type</code> is <code>variant</code>.  This field is
                    required when <code>type</code> is <code>variant</code>.
                    Must have at least 1 items.
                  example: null
                  properties: {}
              required:
                - name
                - description
                - currency
                - type
                - visibility
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: nisi
        required: true
        schema:
          type: string
      - in: path
        name: productId
        description: ''
        example: labore
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/groups':
    get:
      summary: ''
      operationId: getV1ShopsShopIdGroups
      description: ''
      parameters: []
      responses:
        '200':
          description: Groups retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  allOf:
                    - $ref: '#/components/schemas/Group'
                    - type: object
                      properties:
                        products_count:
                          type: integer
                          example: 1
                        products:
                          type: array
                          items:
                            type: object
                            allOf:
                              - $ref: '#/components/schemas/Product'
                              - type: object
                                properties:
                                  images:
                                    type: array
                                    items:
                                      type: object
                                      allOf:
                                        - $ref: '#/components/schemas/Image'
                                        - type: object
                                          properties:
                                            pivot:
                                              type: object
                                              properties:
                                                product_id:
                                                  type: integer
                                                  example: 1
                                                image_id:
                                                  type: integer
                                                  example: 1
                                  variants:
                                    type: array
                                    items:
                                      type: object
                                    example: []
                                  custom_fields:
                                    type: array
                                    items:
                                      type: object
                                      allOf:
                                        - $ref: '#/components/schemas/CustomField'
                                        - type: object
                                          properties:
                                            pivot:
                                              type: object
                                              properties:
                                                morphable_id:
                                                  type: integer
                                                  example: 1
                                                custom_field_id:
                                                  type: integer
                                                  example: 1
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdGroups
      description: ''
      parameters: []
      responses:
        '200':
          description: Group created.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Group'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: aut
                image_id:
                  type: string
                  description: ''
                  example: null
                visibility:
                  type: string
                  description: ''
                  example: private
                  enum:
                    - public
                    - unlisted
                    - private
                products:
                  type: object
                  description: ''
                  example: null
                  properties: {}
              required:
                - name
                - visibility
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: nam
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/groups/{groupId}':
    get:
      summary: ''
      operationId: getV1ShopsShopIdGroupsGroupId
      description: ''
      parameters: []
      responses:
        '200':
          description: Group retrieved.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/Group'
                  - type: object
                    properties:
                      products:
                        type: array
                        items:
                          type: object
                          $ref: '#/components/schemas/Product'
      tags:
        - Endpoints
      security: []
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdGroupsGroupId
      description: ''
      parameters: []
      responses:
        '200':
          description: Group deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Group deleted successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: enim
        required: true
        schema:
          type: string
      - in: path
        name: groupId
        description: ''
        example: my-group
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/groups/{groupId}/update':
    put:
      summary: ''
      operationId: putV1ShopsShopIdGroupsGroupIdUpdate
      description: ''
      parameters: []
      responses:
        '200':
          description: Group updated.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Group'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: cupiditate
                image_id:
                  type: string
                  description: ''
                  example: null
                visibility:
                  type: string
                  description: ''
                  example: private
                  enum:
                    - public
                    - unlisted
                    - private
                products:
                  type: object
                  description: ''
                  example: null
                  properties: {}
              required:
                - name
                - visibility
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: accusamus
        required: true
        schema:
          type: string
      - in: path
        name: groupId
        description: ''
        example: quos
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/custom-fields':
    get:
      summary: ''
      operationId: getV1ShopsShopIdCustomFields
      description: ''
      parameters: []
      responses:
        '200':
          description: Custom fields retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomField'
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdCustomFields
      description: ''
      parameters: []
      responses:
        '200':
          description: Custom field created.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/CustomField'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: tempora
                hint:
                  type: string
                  description: ''
                  example: placeat
                type:
                  type: string
                  description: ''
                  example: esse
                options:
                  type: string
                  description: ''
                  example: quisquam
                is_required:
                  type: boolean
                  description: ''
                  example: false
              required:
                - name
                - type
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: non
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/custom-fields/{customFieldId}':
    put:
      summary: ''
      operationId: putV1ShopsShopIdCustomFieldsCustomFieldId
      description: ''
      parameters: []
      responses:
        '200':
          description: Custom field updated.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/CustomField'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: est
                hint:
                  type: string
                  description: ''
                  example: sequi
                type:
                  type: string
                  description: ''
                  example: consequatur
                options:
                  type: string
                  description: ''
                  example: nihil
                is_required:
                  type: boolean
                  description: ''
                  example: true
              required:
                - name
                - type
      security: []
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdCustomFieldsCustomFieldId
      description: ''
      parameters: []
      responses:
        '200':
          description: Custom field deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Custom field deleted successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: ex
        required: true
        schema:
          type: string
      - in: path
        name: customFieldId
        description: ''
        example: consequatur
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/coupons':
    get:
      summary: ''
      operationId: getV1ShopsShopIdCoupons
      description: ''
      parameters: []
      responses:
        '200':
          description: Coupons retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  allOf:
                    - $ref: '#/components/schemas/Coupon'
                    - type: object
                      properties:
                        products:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 1
                              name:
                                type: string
                                example: A Product
                              stock_count:
                                type: integer
                                example: 0
                              pivot:
                                type: object
                                properties:
                                  coupon_id:
                                    type: integer
                                    example: 1
                                  product_id:
                                    type: integer
                                    example: 1
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdCoupons
      description: ''
      parameters: []
      responses:
        '200':
          description: Coupon created.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  allOf:
                    - $ref: '#/components/schemas/Coupon'
                    - type: object
                      properties:
                        products:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                example: 1
                              name:
                                type: string
                                example: A Product
                              stock_count:
                                type: integer
                                example: 0
                              pivot:
                                type: object
                                properties:
                                  coupon_id:
                                    type: integer
                                    example: 1
                                  product_id:
                                    type: integer
                                    example: 1
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: ''
                  example: et
                global:
                  type: boolean
                  description: ''
                  example: true
                discount:
                  type: number
                  description: ''
                  example: 0.2031
                type:
                  type: string
                  description: ''
                  example: fixed
                  enum:
                    - percentage
                    - fixed
                max_uses:
                  type: number
                  description: ''
                  example: 4341960.005148
                expiration_date:
                  type: string
                  description: Must be a valid date.
                  example: '2024-09-25T12:35:22'
                allowed_emails:
                  type: array
                  description: Must be a valid email address.
                  example:
                    - vanessa00@example.net
                  items:
                    type: string
                products:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: string
              required:
                - code
                - global
                - discount
                - type
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: vitae
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/coupons/{couponId}':
    get:
      summary: ''
      operationId: getV1ShopsShopIdCouponsCouponId
      description: ''
      parameters: []
      responses:
        '200':
          description: Coupon retrieved.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/Coupon'
                  - type: object
                    properties:
                      products:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 1
                            name:
                              type: string
                              example: A Product
                            stock_count:
                              type: integer
                              example: 0
                            pivot:
                              type: object
                              properties:
                                coupon_id:
                                  type: integer
                                  example: 1
                                product_id:
                                  type: integer
                                  example: 1
      tags:
        - Endpoints
      security: []
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdCouponsCouponId
      description: ''
      parameters: []
      responses:
        '200':
          description: Coupon deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Coupon deleted successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: adipisci
        required: true
        schema:
          type: string
      - in: path
        name: couponId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/coupons/{couponId}/update':
    put:
      summary: ''
      operationId: putV1ShopsShopIdCouponsCouponIdUpdate
      description: ''
      parameters: []
      responses:
        '200':
          description: Coupon updated.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Coupon'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: ''
                  example: dolorem
                global:
                  type: boolean
                  description: ''
                  example: false
                discount:
                  type: number
                  description: ''
                  example: 324955.95861741
                type:
                  type: string
                  description: ''
                  example: percentage
                  enum:
                    - percentage
                    - fixed
                max_uses:
                  type: number
                  description: ''
                  example: 5049987.56002
                expiration_date:
                  type: string
                  description: Must be a valid date.
                  example: '2024-09-25T12:35:22'
                allowed_emails:
                  type: array
                  description: Must be a valid email address.
                  example:
                    - marvin.joseph@example.net
                  items:
                    type: string
                products:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: string
              required:
                - code
                - global
                - discount
                - type
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: voluptate
        required: true
        schema:
          type: string
      - in: path
        name: couponId
        description: ''
        example: et
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/invoices':
    get:
      summary: ''
      operationId: getV1ShopsShopIdInvoices
      description: ''
      parameters: []
      responses:
        '200':
          description: Invoices retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  current_page:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                      $ref: '#/components/schemas/Invoice'
                  first_page_url:
                    type: string
                  from:
                    type: integer
                  last_page:
                    type: integer
                  last_page_url:
                    type: string
                  links:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          nullable: true
                        label:
                          type: string
                        active:
                          type: boolean
                  next_page_url:
                    type: string
                    nullable: true
                  path:
                    type: string
                  per_page:
                    type: integer
                  prev_page_url:
                    type: string
                    nullable: true
                  to:
                    type: integer
                  total:
                    type: integer
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: magni
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/invoices/{invoiceId}':
    get:
      summary: ''
      operationId: getV1ShopsShopIdInvoicesInvoiceId
      description: ''
      parameters: []
      responses:
        '200':
          description: Invoice retrieved.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/Invoice'
                  - type: object
                    properties:
                      coupon_id:
                        type: integer
                        nullable: true
                      paypalff_email:
                        type: string
                        nullable: true
                      customer_id:
                        type: integer
                      delivered:
                        type: string
                        nullable: true
                      amount:
                        type: integer
                      price_usd:
                        type: string
                      custom_fields:
                        type: array
                        items:
                          type: object
                          allOf:
                            - $ref: '#/components/schemas/CustomField'
                            - type: object
                              properties:
                                pivot:
                                  type: object
                                  properties:
                                    morphable_id:
                                      type: integer
                                      example: 1
                                    custom_field_id:
                                      type: integer
                                      example: 1
                      ip:
                        type: string
                      user_agent:
                        type: string
                      crypto_address:
                        type: string
                        nullable: true
                      crypto_amount:
                        type: string
                        nullable: true
                      shop_id:
                        type: integer
                      cashapp_cashtag:
                        type: string
                        nullable: true
                      venmo_tag:
                        type: string
                        nullable: true
                      cashapp_receipt_id:
                        type: string
                        nullable: true
                      cashapp_transaction_id:
                        type: string
                        nullable: true
                      discord_user_id:
                        type: string
                        nullable: true
                      paypalff_transaction_id:
                        type: string
                        nullable: true
                      price_eur:
                        type: string
                      paypalff_currency:
                        type: string
                      paypalff_note:
                        type: string
                        nullable: true
                      stripe_pi_id:
                        type: string
                        nullable: true
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: quae
        required: true
        schema:
          type: string
      - in: path
        name: invoiceId
        description: ''
        example: aspernatur
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/invoices/{invoiceId}/process':
    get:
      summary: ''
      operationId: getV1ShopsShopIdInvoicesInvoiceIdProcess
      description: ''
      parameters: []
      responses:
        '200':
          description: Invoice processed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invoice processed successfully.
        '400':
          description: Invoice already processed or failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invoice already processed or failed.
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: ut
        required: true
        schema:
          type: string
      - in: path
        name: invoiceId
        description: ''
        example: velit
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/invoices/{invoiceId}/archive':
    post:
      summary: ''
      operationId: postV1ShopsShopIdInvoicesInvoiceIdArchive
      description: ''
      parameters: []
      responses:
        '200':
          description: Invoice archived.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invoice archived
        '400':
          description: Invoice archival failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invoice cannot be archived
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: cupiditate
        required: true
        schema:
          type: string
      - in: path
        name: invoiceId
        description: ''
        example: nihil
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/invoices/{invoiceId}/unarchive':
    post:
      summary: ''
      operationId: postV1ShopsShopIdInvoicesInvoiceIdUnarchive
      description: ''
      parameters: []
      responses:
        '200':
          description: Invoice unarchived.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invoice unarchived
        '400':
          description: Invoice unarchival failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invoice cannot be unarchived
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: ut
        required: true
        schema:
          type: string
      - in: path
        name: invoiceId
        description: ''
        example: voluptates
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/feedbacks':
    get:
      summary: ''
      operationId: getV1ShopsShopIdFeedbacks
      description: ''
      parameters: []
      responses:
        '200':
          description: Feedbacks retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  current_page:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                      allOf:
                        - $ref: '#/components/schemas/Feedback'
                        - type: object
                          properties:
                            product_id:
                              type: integer
                              nullable: true
                            product_name:
                              type: string
                              nullable: true
                  first_page_url:
                    type: string
                    format: uri
                  from:
                    type: integer
                  last_page:
                    type: integer
                  last_page_url:
                    type: string
                    format: uri
                  links:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                          nullable: true
                        label:
                          type: string
                        active:
                          type: boolean
                  next_page_url:
                    type: string
                    format: uri
                    nullable: true
                  path:
                    type: string
                    format: uri
                  per_page:
                    type: integer
                  prev_page_url:
                    type: string
                    format: uri
                    nullable: true
                  to:
                    type: integer
                  total:
                    type: integer
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: quos
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/feedbacks/{feedbackId}':
    get:
      summary: ''
      operationId: getV1ShopsShopIdFeedbacksFeedbackId
      description: ''
      parameters: []
      responses:
        '200':
          description: Feedback retrieved.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Feedback'
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: suscipit
        required: true
        schema:
          type: string
      - in: path
        name: feedbackId
        description: ''
        example: impedit
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/feedbacks/{feedbackId}/reply':
    post:
      summary: ''
      operationId: postV1ShopsShopIdFeedbacksFeedbackIdReply
      description: ''
      parameters: []
      responses:
        '200':
          description: Feedback replied to.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Feedback replied to successfully
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                reply:
                  type: string
                  description: ''
                  example: provident
              required:
                - reply
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: illo
        required: true
        schema:
          type: string
      - in: path
        name: feedbackId
        description: ''
        example: enim
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/feedbacks/{feedbackId}/appeal':
    post:
      summary: ''
      operationId: postV1ShopsShopIdFeedbacksFeedbackIdAppeal
      description: ''
      parameters: []
      responses:
        '200':
          description: Feedback appealed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Feedback appealed successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: ut
        required: true
        schema:
          type: string
      - in: path
        name: feedbackId
        description: ''
        example: sunt
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/images':
    get:
      summary: ''
      operationId: getV1ShopsShopIdImages
      description: ''
      parameters: []
      responses:
        '200':
          description: Images retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  $ref: '#/components/schemas/Image'
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdImages
      description: ''
      parameters: []
      responses:
        '200':
          description: Image uploaded.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Image'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                image:
                  type: string
                  format: binary
                  description: Must be an image. Must not be greater than 20480 kilobytes.
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: mollitia
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/images/{imageId}':
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdImagesImageId
      description: ''
      parameters: []
      responses:
        '200':
          description: Image deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Image deleted successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: consequatur
        required: true
        schema:
          type: string
      - in: path
        name: imageId
        description: ''
        example: possimus
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/domains':
    get:
      summary: ''
      operationId: getV1ShopsShopIdDomains
      description: ''
      parameters: []
      responses:
        '200':
          description: A list of custom hostname details
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  $ref: '#/components/schemas/Domain'
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdDomains
      description: ''
      parameters: []
      responses:
        '200':
          description: Domain created.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Domain'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: dolor
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/domains/{domainId}':
    get:
      summary: ''
      operationId: getV1ShopsShopIdDomainsDomainId
      description: ''
      parameters: []
      responses:
        '200':
          description: Domain retrieved.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Domain'
      tags:
        - Endpoints
      security: []
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdDomainsDomainId
      description: ''
      parameters: []
      responses:
        '200':
          description: Domain deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Domain deleted successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: recusandae
        required: true
        schema:
          type: string
      - in: path
        name: domainId
        description: ''
        example: illo
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/themes':
    get:
      summary: ''
      operationId: getV1ShopsShopIdThemes
      description: ''
      parameters: []
      responses:
        '200':
          description: Themes retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  $ref: '#/components/schemas/Theme'
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdThemes
      description: ''
      parameters: []
      responses:
        '200':
          description: Theme created.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Theme'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: earum
                description:
                  type: string
                  description: ''
                  example: null
                template:
                  type: string
                  description: ''
                  example: null
              required:
                - name
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: autem
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/themes/{themeId}':
    get:
      summary: ''
      operationId: getV1ShopsShopIdThemesThemeId
      description: ''
      parameters: []
      responses:
        '200':
          description: Theme retrieved.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Theme'
      tags:
        - Endpoints
      security: []
    put:
      summary: ''
      operationId: putV1ShopsShopIdThemesThemeId
      description: ''
      parameters: []
      responses:
        '200':
          description: Theme updated.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/Theme'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: ''
                  example: null
                description:
                  type: string
                  description: ''
                  example: null
                type:
                  type: string
                  description: ''
                  example: private
                  enum:
                    - private
                    - public
                image_id:
                  type: string
                  description: ''
                  example: null
      security: []
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdThemesThemeId
      description: ''
      parameters: []
      responses:
        '200':
          description: Theme deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Theme deleted successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: blanditiis
        required: true
        schema:
          type: string
      - in: path
        name: themeId
        description: ''
        example: rem
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/themes/{themeId}/apply':
    put:
      summary: ''
      operationId: putV1ShopsShopIdThemesThemeIdApply
      description: ''
      parameters: []
      responses:
        '200':
          description: Theme applied.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Theme applied successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: numquam
        required: true
        schema:
          type: string
      - in: path
        name: themeId
        description: ''
        example: corrupti
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/themes/{themeId}/import':
    post:
      summary: ''
      operationId: postV1ShopsShopIdThemesThemeIdImport
      description: ''
      parameters: []
      responses:
        '200':
          description: Theme imported.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Theme imported successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: qui
        required: true
        schema:
          type: string
      - in: path
        name: themeId
        description: ''
        example: aut
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/themes/{themeId}/update':
    post:
      summary: ''
      operationId: postV1ShopsShopIdThemesThemeIdUpdate
      description: ''
      parameters: []
      responses:
        '200':
          description: Theme updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Theme updated successfully
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: nisi
        required: true
        schema:
          type: string
      - in: path
        name: themeId
        description: ''
        example: totam
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/payment-processors/update':
    put:
      summary: ''
      operationId: putV1ShopsShopIdPaymentProcessorsUpdate
      description: ''
      parameters: []
      responses:
        '200':
          description: Payment processors updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Payment Processor Updated Successfully
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                paypal_email:
                  type: string
                  description: Must be a valid email address.
                  example: mklein@example.org
                paypal_method:
                  type: string
                  description: ''
                  example: legacy
                  enum:
                    - legacy
                    - rest
                paypal_client_id:
                  type: string
                  description: ''
                  example: null
                paypal_client_secret:
                  type: string
                  description: ''
                  example: null
                paypalff_email:
                  type: string
                  description: Must be a valid email address.
                  example: irma.brekke@example.com
                paypalff_method:
                  type: string
                  description: ''
                  example: ipn_note
                  enum:
                    - email
                    - ipn_note
                paypalff_currency:
                  type: string
                  description: ''
                  example: USD
                  enum:
                    - USD
                    - EUR
                stripe_api_key:
                  type: string
                  description: ''
                  example: null
                stripe_webhook_secret:
                  type: string
                  description: ''
                  example: null
                stripe_paypal:
                  type: boolean
                  description: ''
                  example: true
                square_api_key:
                  type: string
                  description: ''
                  example: null
                square_location_id:
                  type: string
                  description: ''
                  example: null
                bitcoin_address:
                  type: string
                  description: ''
                  example: null
                litecoin_address:
                  type: string
                  description: ''
                  example: null
                cashapp_cashtag:
                  type: string
                  description: ''
                  example: null
                cashapp_email:
                  type: string
                  description: ''
                  example: null
                venmo_tag:
                  type: string
                  description: ''
                  example: null
                venmo_email:
                  type: string
                  description: ''
                  example: null
                amazonps_merchant_identifier:
                  type: string
                  description: ''
                  example: null
                amazonps_access_code:
                  type: string
                  description: ''
                  example: null
                amazonps_sha_request_phrase:
                  type: string
                  description: ''
                  example: null
                amazonps_sha_response_phrase:
                  type: string
                  description: ''
                  example: null
              required:
                - paypal_method
                - paypalff_method
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: totam
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/payouts':
    get:
      summary: ''
      operationId: getV1ShopsShopIdPayouts
      description: ''
      parameters: []
      responses:
        '200':
          description: Payouts retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  current_page:
                    type: integer
                    example: 1
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        shop_id:
                          type: integer
                          example: 1
                        method:
                          type: string
                          example: LTC
                        currency:
                          type: string
                          example: LTC
                        amount:
                          type: string
                          example: '2.79593364'
                        amount_usd:
                          type: string
                          example: '185.88'
                        recipient:
                          type: string
                          example: MNFPLowp9YBzrEcBv9jCpnwSUBVoiGovLN
                        transaction_id:
                          type: string
                          example: >-
                            9a4459337429f7b6f3eb083f657ba5bd9a83c3df78de04aae195d6d4197a5d1a
                        status:
                          type: integer
                          example: 1
                        created_at:
                          type: string
                          format: date-time
                          example: '2024-01-01T00:00:00.000000Z'
                        updated_at:
                          type: string
                          format: date-time
                          example: '2024-01-01T00:00:00.000000Z'
                        deleted_at:
                          type: string
                          format: date-time
                          nullable: true
                          example: null
                  first_page_url:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/91081/payouts?page=1'
                  from:
                    type: integer
                    example: 1
                  last_page:
                    type: integer
                    example: 1
                  last_page_url:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/91081/payouts?page=1'
                  links:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          nullable: true
                          example: null
                        label:
                          type: string
                          example: '&laquo; Previous'
                        active:
                          type: boolean
                          example: false
                  next_page_url:
                    type: string
                    nullable: true
                    example: null
                  path:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/91081/payouts'
                  per_page:
                    type: integer
                    example: 20
                  prev_page_url:
                    type: string
                    nullable: true
                    example: null
                  to:
                    type: integer
                    example: 14
                  total:
                    type: integer
                    example: 14
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: et
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/payouts/balances':
    get:
      summary: ''
      operationId: getV1ShopsShopIdPayoutsBalances
      description: ''
      parameters: []
      responses:
        '200':
          description: Cryptocurrency balances retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  btc:
                    type: object
                    properties:
                      btc:
                        type: number
                        format: float
                        example: 0
                      usd:
                        type: number
                        format: float
                        example: 0
                  ltc:
                    type: object
                    properties:
                      ltc:
                        type: number
                        format: float
                        example: 0
                      usd:
                        type: number
                        format: float
                        example: 0
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: sequi
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/payouts/payout':
    post:
      summary: ''
      operationId: postV1ShopsShopIdPayoutsPayout
      description: ''
      parameters: []
      responses:
        '200':
          description: Payout successful.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Payout successful for LTC.
                  payout:
                    type: object
                    properties:
                      shop_id:
                        type: integer
                        example: 1
                      method:
                        type: string
                        example: LTC
                      currency:
                        type: string
                        example: LTC
                      amount:
                        type: number
                        format: float
                        example: 2.79593364
                      amount_usd:
                        type: number
                        format: float
                        example: 185.879159706832
                      recipient:
                        type: string
                        example: MNFPLowp9YBzrEcBv9jCpnwSUBVoiGovLN
                      transaction_id:
                        type: object
                        properties:
                          result:
                            type: string
                            example: >-
                              9a4459337429f7b6f3eb083f657ba5bd9a83c3df78de04aae195d6d4197a5d1a
                          error:
                            type: string
                            nullable: true
                            example: null
                          id:
                            type: integer
                            example: 2
                      status:
                        type: integer
                        example: 1
                      updated_at:
                        type: string
                        format: date-time
                        example: '2024-09-25T13:29:02.000000Z'
                      created_at:
                        type: string
                        format: date-time
                        example: '2024-09-25T13:29:02.000000Z'
                      id:
                        type: integer
                        example: 25755
        '400':
          description: Payout failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Payout failed for LTC: Insufficient funds.'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                currency:
                  type: string
                  description: ''
                  example: btc
                  enum:
                    - btc
                    - ltc
                address:
                  type: string
                  description: ''
                  example: voluptate
                amount:
                  type: number
                  description: ''
                  example: 1310.5739
              required:
                - currency
                - address
                - amount
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: inventore
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/payouts/transactions':
    get:
      summary: ''
      operationId: getV1ShopsShopIdPayoutsTransactions
      description: ''
      parameters: []
      responses:
        '200':
          description: Transactions retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        txid:
                          type: string
                          example: >-
                            3747a3cf5a545e28b2021013fd9ba2dfd5cb2baefe010d311b085d4ada43836e
                        amount:
                          type: number
                          format: float
                          example: 0.78817736
                        currency:
                          type: string
                          example: ltc
                        confirmations:
                          type: integer
                          example: 5604
                        time:
                          type: integer
                          example: 1726437993
                  per_page:
                    type: integer
                    example: 10
                  total:
                    type: integer
                    example: -1
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: molestiae
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/blacklist':
    get:
      summary: ''
      operationId: getV1ShopsShopIdBlacklist
      description: ''
      parameters: []
      responses:
        '200':
          description: Blacklist entries retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  current_page:
                    type: integer
                    example: 1
                  data:
                    type: array
                    items:
                      type: object
                      allOf:
                        - $ref: '#/components/schemas/BlacklistEntry'
                        - type: object
                          properties:
                            deleted_at:
                              type: string
                              nullable: true
                              example: null
                  first_page_url:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/1/blacklist?page=1'
                  from:
                    type: integer
                    example: 1
                  last_page:
                    type: integer
                    example: 1
                  last_page_url:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/1/blacklist?page=1'
                  links:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          nullable: true
                          example: null
                        label:
                          type: string
                          example: '&laquo; Previous'
                        active:
                          type: boolean
                          example: false
                  next_page_url:
                    type: string
                    nullable: true
                    example: null
                  path:
                    type: string
                    example: 'https://api.sellauth.com/v1/shops/1/blacklist'
                  per_page:
                    type: integer
                    example: 25
                  prev_page_url:
                    type: string
                    nullable: true
                    example: null
                  to:
                    type: integer
                    example: 2
                  total:
                    type: integer
                    example: 2
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postV1ShopsShopIdBlacklist
      description: ''
      parameters: []
      responses:
        '200':
          description: Blacklist entry created.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/BlacklistEntry'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ValidationError'
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  type: string
                  description: ''
                  example: eos
                type:
                  type: string
                  description: ''
                  example: ip
                  enum:
                    - email
                    - ip
                reason:
                  type: string
                  description: ''
                  example: occaecati
              required:
                - value
                - type
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: in
        required: true
        schema:
          type: string
  '/v1/shops/{shopId}/blacklist/{blacklistId}':
    delete:
      summary: ''
      operationId: deleteV1ShopsShopIdBlacklistBlacklistId
      description: ''
      parameters: []
      responses:
        '200':
          description: Blacklist entry deleted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Blacklist entry deleted successfully.
      tags:
        - Endpoints
      security: []
    parameters:
      - in: path
        name: shopId
        description: ''
        example: neque
        required: true
        schema:
          type: string
      - in: path
        name: blacklistId
        description: ''
        example: nesciunt
        required: true
        schema:
          type: string
tags:
  - name: Endpoints
    description: ''
