vivenu products API

The products API from vivenu — 8 operation(s) for products.

OpenAPI Specification

vivenu-products-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: vivenu access-lists products API
  description: vivenu API Documentation
  version: 1.0.0
  contact:
    name: vivenu GmbH
    url: https://vivenu.com
servers:
- url: https://vivenu.com
  description: Production API
- url: https://vivenu.dev
  description: Staging API
tags:
- name: products
paths:
  /api/products:
    get:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: top
        required: false
        schema:
          type: number
          format: float
          description: A limit on the number of objects to be returned. Can range between 1 and 1000.
          default: 25
          metas: {}
        in: query
        style: form
        explode: true
      - name: skip
        required: false
        schema:
          type: number
          format: float
          description: The number of objects to skip for the requested result
          metas: {}
        in: query
        style: form
        explode: true
      - name: name
        required: false
        schema:
          type: string
          description: The name of the product
          metas: {}
        in: query
        style: form
        explode: true
      - name: variantIds
        required: false
        schema:
          type: array
          items:
            type: string
            metas: {}
          description: An arrray of product variants to filter by
          metas: {}
        in: query
        style: form
        explode: true
      - name: type
        required: false
        schema:
          type: string
          enum:
          - voucher
          - product
          - donation
          - membership
          - addOn
          description: The type of the product
          metas: {}
        in: query
        style: form
        explode: true
      - name: active
        required: false
        schema:
          type: boolean
          description: The active status of the product
          metas: {}
        in: query
        style: form
        explode: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GET_Products_GetAllProducts_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
      tags:
      - products
      description: Get all Products
      operationId: products/list
    post:
      security:
      - jwt: []
      - apikey: []
      parameters: []
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/POST_Products_CreateAProduct_201_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/POST_Products_CreateAProduct'
      tags:
      - products
      description: Create a Product
      operationId: products/create
  /api/products/rich:
    get:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: top
        required: false
        schema:
          type: number
          format: float
          description: A limit on the number of objects to be returned. Can range between 1 and 1000.
          default: 25
          metas: {}
        in: query
        style: form
        explode: true
      - name: skip
        required: false
        schema:
          type: number
          format: float
          description: The number of objects to skip for the requested result
          metas: {}
        in: query
        style: form
        explode: true
      - name: name
        required: false
        schema:
          type: string
          description: The name of the product
          metas: {}
        in: query
        style: form
        explode: true
      - name: type
        required: false
        schema:
          type: string
          enum:
          - voucher
          - product
          - donation
          - membership
          - addOn
          description: The type of the product
          metas: {}
        in: query
        style: form
        explode: true
      - name: active
        required: false
        schema:
          type: boolean
          description: The active status of the product
          metas: {}
        in: query
        style: form
        explode: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GET_Products_GetAllProducts_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
      tags:
      - products
      description: Get all Products
      operationId: get_all_products
  /api/products/{id}:
    get:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: id
        required: true
        schema:
          type: string
          description: The ID of the product to update
          metas: {}
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GET_Products_GetAProduct_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      tags:
      - products
      description: Get a Product
      operationId: products/get
    put:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: id
        required: true
        schema:
          type: string
          description: The ID of the product to update
          metas: {}
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PUT_Products_UpdateAProduct_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PUT_Products_UpdateAProduct'
      tags:
      - products
      description: Update a Product
      operationId: products/update
    delete:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: id
        required: true
        schema:
          type: string
          description: The ID of the product to update
          metas: {}
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DELETE_Products_DeleteAProduct_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      tags:
      - products
      description: Delete a Product
      operationId: products/delete
  /api/products/streams/rich:
    get:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: top
        required: false
        schema:
          type: number
          format: float
          description: A limit on the number of objects to be returned. Can range between 1 and 1000.
          default: 25
          metas: {}
        in: query
        style: form
        explode: true
      - name: skip
        required: false
        schema:
          type: number
          format: float
          description: The number of objects to skip for the requested result
          metas: {}
        in: query
        style: form
        explode: true
      - name: name
        required: false
        schema:
          type: string
          description: The name of the product stream
          metas: {}
        in: query
        style: form
        explode: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GET_Products_GetAllProductStreams_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
      tags:
      - products
      description: Get all Product Streams
      operationId: get_all_product_streams
  /api/products/streams/{id}:
    get:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: id
        required: true
        schema:
          type: string
          description: The ID of the product stream
          metas: {}
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GET_Products_GetAProductStream_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      tags:
      - products
      description: Get a Product Stream
      operationId: get_a_product_stream
    put:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: id
        required: true
        schema:
          type: string
          metas: {}
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PUT_Products_UpdateAProductStream_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PUT_Products_UpdateAProductStream'
      tags:
      - products
      description: Update a Product Stream
      operationId: update_a_product_stream
    delete:
      security:
      - jwt: []
      - apikey: []
      parameters:
      - name: id
        required: true
        schema:
          type: string
          description: The ID of the product stream
          metas: {}
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DELETE_Products_DeleteAProductStream_200_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      tags:
      - products
      description: Delete a Product Stream
      operationId: delete_a_product_stream
  /api/public/products/{id}:
    get:
      parameters:
      - name: id
        schema:
          type: string
        required: true
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GET_Products_GetAPublicProduct_200_response'
        '404':
          description: Not Found
      tags:
      - products
      description: Get a Public Product
      operationId: get_a_public_product
  /api/products/streams/{id}/products:
    get:
      parameters:
      - name: id
        required: true
        schema:
          type: string
          description: The ID of the product stream
          metas: {}
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GET_Products_GetAProductStreamsProducts_200_response'
        '400':
          description: Bad Request
        '404':
          description: Not Found
      tags:
      - products
      description: Get a Product Stream's Products
      operationId: get_a_product_streams_products
  /api/products/streams:
    post:
      security:
      - jwt: []
      - apikey: []
      parameters: []
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/POST_Products_CreateAProductStream_201_response'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/POST_Products_CreateAProductStream'
      tags:
      - products
      description: Create a Product Stream
      operationId: create_a_product_stream
components:
  schemas:
    PUT_Products_UpdateAProductStream:
      type: object
      properties:
        name:
          type: string
          description: The name of the product stream.
        active:
          type: boolean
          description: Whether the product stream is active or not.
        products:
          type: array
          items:
            type: string
          description: The products in the product stream.
          default: []
      required:
      - name
    PUT_Products_UpdateAProduct:
      type: object
      properties:
        name:
          type: string
          description: The name of the product
        description:
          type: string
          nullable: true
          description: The description of the product
        image:
          type: string
          nullable: true
          description: The image of the product
        type:
          type: string
          enum:
          - voucher
          - product
          - donation
          - membership
          - addOn
          description: The type of the product
        variants:
          type: array
          items:
            type: object
            properties:
              _id:
                type: string
                description: The ID of the product variant of the product
              name:
                type: string
                nullable: true
                description: The Name of the product variant, defaults to product name if not specified
              description:
                type: string
                nullable: true
                description: A description of the variant
              price:
                type: number
                format: float
                nullable: true
                description: The price of the product
              priceType:
                type: string
                enum:
                - fixed
                - range
                default: fixed
              priceRange:
                type: object
                properties:
                  min:
                    type: number
                    format: float
                    minimum: 0
                    nullable: true
                    description: The minimum price of the product
                  max:
                    type: number
                    format: float
                    minimum: 0
                    nullable: true
                    description: The maximum price of the product
              taxable:
                type: boolean
                description: Whether the product is taxable or not
              taxRate:
                type: number
                format: float
                description: The tax rate of the product
              compareAtPrice:
                type: number
                format: float
                nullable: true
                description: The recommended retail price to compare with the actual price.
              taxServiceTypeId:
                type: string
                nullable: true
                description: The ID of the tax service of the product
              gtin:
                type: string
                pattern: ^\d+$
              localization:
                type: object
                description: Localization of the product for multiple languages
            required:
            - _id
            - taxable
        categoryIds:
          type: array
          items:
            type: string
          description: An array of categories to which the product belongs
        voucherSettings:
          type: object
          properties:
            limitedValidityPeriod:
              type: boolean
              description: Whether the voucher should expire
            validityConfig:
              type: object
              properties:
                amount:
                  type: number
                  format: float
                  minimum: 1
                type:
                  type: number
                  format: float
                untilEndOfPeriod:
                  type: boolean
            pdfImage:
              type: string
              description: A marketing image printed onto voucher pdf
            disclaimer:
              type: string
              nullable: true
              description: A disclaimer text printed onto voucher pdf
            documentTemplateSettings:
              type: object
              properties:
                templates:
                  type: array
                  items:
                    type: object
                    properties:
                      templateId:
                        type: string
                        description: The ID of the document template
                      format:
                        type: string
                        enum:
                        - A4
                        - LETTER
                        - LEGAL
                        - BOARDING-PASS
                        - PLASTIC-CARD
                        - CARD
                        - LABEL
                        - CUSTOM
                        - APPLE
                        - GOOGLE
                        description: The format of document template for the dimensions.
                      target:
                        type: string
                        enum:
                        - thermal
                        - digital
                        - wallet
                        description: The target of document template for which targets it should be used.
                      type:
                        type: string
                        enum:
                        - ticket
                        - invoice
                        - voucher
                        - member-card
                        - header-card
                        description: The type of document template for which document it should be used. ticket = The document template will be used on tickets. invoice = The document template will be used on invoices.
                    required:
                    - templateId
                    - format
                    - target
                    - type
          nullable: true
          description: If the product is of type voucher
        addOnSettings:
          type: object
          properties:
            optOutDescription:
              type: string
              nullable: true
              description: The description that is shown to the user if he decides to not buy the addOn
            localization:
              type: object
              description: Localization of the addOnSettings for multiple languages
          nullable: true
        donationSettings:
          type: object
          properties:
            campaignId:
              type: string
              description: The ID of the fundraise campaign
            fundId:
              type: string
              description: The ID of the donation fund
          required:
          - campaignId
          - fundId
          nullable: true
          description: Settings for donation products
        active:
          type: boolean
          description: Whether the product is active and can be distributed
          default: true
        meta:
          type: object
          description: Custom key-value data. Metadata is useful for storing additional, structured information on an object.
        isFulfillable:
          type: boolean
          description: Whether the product can be delivered
        localization:
          type: object
          description: Localization of the product for multiple languages
      required:
      - name
      - type
    POST_Products_CreateAProduct:
      type: object
      properties:
        name:
          type: string
          description: The name of the product
        description:
          type: string
          nullable: true
          description: The description of the product
        image:
          type: string
          nullable: true
          description: The image of the product
        type:
          type: string
          enum:
          - voucher
          - product
          - donation
          - membership
          - addOn
          description: The type of the product
        variants:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                nullable: true
                description: The Name of the product variant, defaults to product name if not specified
              description:
                type: string
                nullable: true
                description: A description of the variant
              price:
                type: number
                format: float
                nullable: true
                description: The price of the product
              priceType:
                type: string
                enum:
                - fixed
                - range
                default: fixed
              priceRange:
                type: object
                properties:
                  min:
                    type: number
                    format: float
                    minimum: 0
                    nullable: true
                    description: The minimum price of the product
                  max:
                    type: number
                    format: float
                    minimum: 0
                    nullable: true
                    description: The maximum price of the product
              taxable:
                type: boolean
                description: Whether the product is taxable or not
              taxRate:
                type: number
                format: float
                description: The tax rate of the product
              compareAtPrice:
                type: number
                format: float
                nullable: true
                description: The recommended retail price to compare with the actual price.
              taxServiceTypeId:
                type: string
                nullable: true
                description: The ID of the tax service of the product
              gtin:
                type: string
                pattern: ^\d+$
              localization:
                type: object
                description: Localization of the product for multiple languages
            required:
            - taxable
        categoryIds:
          type: array
          items:
            type: string
          description: An array of categories to which the product belongs
        voucherSettings:
          type: object
          properties:
            limitedValidityPeriod:
              type: boolean
              description: Whether the voucher should expire
            validityConfig:
              type: object
              properties:
                amount:
                  type: number
                  format: float
                  minimum: 1
                type:
                  type: number
                  format: float
                untilEndOfPeriod:
                  type: boolean
            pdfImage:
              type: string
              description: A marketing image printed onto voucher pdf
            disclaimer:
              type: string
              nullable: true
              description: A disclaimer text printed onto voucher pdf
            documentTemplateSettings:
              type: object
              properties:
                templates:
                  type: array
                  items:
                    type: object
                    properties:
                      templateId:
                        type: string
                        description: The ID of the document template
                      format:
                        type: string
                        enum:
                        - A4
                        - LETTER
                        - LEGAL
                        - BOARDING-PASS
                        - PLASTIC-CARD
                        - CARD
                        - LABEL
                        - CUSTOM
                        - APPLE
                        - GOOGLE
                        description: The format of document template for the dimensions.
                      target:
                        type: string
                        enum:
                        - thermal
                        - digital
                        - wallet
                        description: The target of document template for which targets it should be used.
                      type:
                        type: string
                        enum:
                        - ticket
                        - invoice
                        - voucher
                        - member-card
                        - header-card
                        description: The type of document template for which document it should be used. ticket = The document template will be used on tickets. invoice = The document template will be used on invoices.
                    required:
                    - templateId
                    - format
                    - target
                    - type
          nullable: true
          description: If the product is of type voucher
        addOnSettings:
          type: object
          properties:
            optOutDescription:
              type: string
              nullable: true
              description: The description that is shown to the user if he decides to not buy the addOn
            localization:
              type: object
              description: Localization of the addOnSettings for multiple languages
          nullable: true
        donationSettings:
          type: object
          properties:
            campaignId:
              type: string
              description: The ID of the fundraise campaign
            fundId:
              type: string
              description: The ID of the donation fund
          required:
          - campaignId
          - fundId
          nullable: true
          description: Settings for donation products
        active:
          type: boolean
          description: Whether the product is active and can be distributed
          default: true
        meta:
          type: object
          description: Custom key-value data. Metadata is useful for storing additional, structured information on an object.
        isFulfillable:
          type: boolean
          description: Whether the product can be delivered
        localization:
          type: object
          description: Localization of the product for multiple languages
      required:
      - name
      - type
    POST_Products_CreateAProductStream:
      type: object
      properties:
        name:
          type: string
          description: The name of the product stream.
        active:
          type: boolean
          description: Whether the product stream is active or not.
        products:
          type: array
          items:
            type: string
          description: The products in the product stream.
          default: []
      required:
      - name
    DELETE_Products_DeleteAProduct_200_response:
      type: object
      properties:
        _id:
          type: string
          description: The ID of the product
        name:
          type: string
          description: The name of the product
        active:
          type: boolean
          description: Whether the product is active and can be distributed
          default: true
        isFulfillable:
          type: boolean
          description: Whether the product can be delivered
        type:
          type: string
          enum:
          - voucher
          - product
          - donation
          - membership
          - addOn
          description: The type of the product
        image:
          type: string
          nullable: true
          description: The image of the product
        description:
          type: string
          nullable: true
          description: The description of the product
        variants:
          type: array
          items:
            type: object
            properties:
              _id:
                type: string
                description: The ID of the product variant of the product
              name:
                type: string
                nullable: true
                description: The Name of the product variant, defaults to product name if not specified
              description:
                type: string
                nullable: true
                description: A description of the variant
              priceType:
                type: string
                enum:
                - fixed
                - range
                default: fixed
              price:
                type: number
                format: float
                nullable: true
                description: The price of the product
              priceRange:
                type: object
                properties:
                  min:
                    type: number
                    format: float
                    minimum: 0
                    nullable: true
                    description: The minimum price of the product
                  max:
                    type: number
                    format: float
                    minimum: 0
                    nullable: true
                    description: The maximum price of the product
              taxable:
                type: boolean
                description: Whether the product is taxable or not
              taxRate:
                type: number
                format: float
                description: The tax rate of the product
              compareAtPrice:
                type: number
                format: float
                nullable: true
                description: The recommended retail price to compare with the actual price.
              taxServiceTypeId:
                type: string
                nullable: true
                description: The ID of the tax service of the product
              gtin:
                type: string
                pattern: ^\d+$
              localization:
                type: object
                description: Localization of the product for multiple languages
            required:
            - _id
            - taxable
          description: An array of variants of the product
        categoryIds:
          type: array
          items:
            type: string
          description: An array of categories to which the product belongs
        voucherSettings:
          type: object
          properties:
            limitedValidityPeriod:
              type: boolean
              description: Whether the voucher should expire
            validityConfig:
              type: object
              properties:
                amount:
                  type: number
                  format: float
                  minimum: 1
                type:
                  type: number
                  format: float
                untilEndOfPeriod:
                  type: boolean
            pdfImage:
              type: string
              description: A marketing image printed onto voucher pdf
            disclaimer:
              type: string
              nullable: true
              description: A disclaimer text printed onto voucher pdf
            documentTemplateSettings:
              type: object
              properties:
                templates:
                  type: array
                  items:
                    type: object
                    properties:
                      templ

# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vivenu/refs/heads/main/openapi/vivenu-products-api-openapi.yml