openapi: 3.0.0
info:
  version: 1.1.4
  title: SmartVu® API
  contact:
    email: info@vuframe.com
    name: Vuframe® c/o Vu3D Software GmbH
  description: >-
    The Vuframe® Public API offers a number of endpoints to view, create and edit different types of content within the VUFRAME® platform. The public API can be accessed by any Vuframe® Studio user. This specific API controls everything related to [SmartVu®](https://docs.vuframe.com/smartvu/concepts/what-is-a-smartvu)'s, which are editable visual representations to show and share products virtually – in 3D, Augmented Reality & Virtual Reality.


    The base URL for all the endpoints listed below is
    
    
    https://api.vuframe.com/public/v1
    
    
    **Authentication**

      In order to integrate the Vuframe® Public API into your own application, you will first need to register an SSO app by contacting us directly. This is required as the API access is currently an enterprise-only feature.
      
      After your SSO app is set up, you will receive a unique token that allows you to communicate with the Vuframe® Public API.
      
      In addition to the SSO app token, all requests to the Vuframe® Public API need to be authenticated with an authentication token that is bound to an active Vuframe® Studio account. This authentication token can be obtained with the "/sso/{app_token}/create_token" endpoint.
      
      
      The required authentication mechanism for all other endpoints is Basic Auth with the following credentials:
      
      Username: SSO_APP_TOKEN Password: USER_AUTH_TOKEN
  termsOfService: 'https://www.vuframe.com/terms-of-service/'
paths:
  /sso/{app_token}/create_token:
    post:
      tags:
        - Authentication
      summary: Create SSO Auth Token for VUFRAME® Studio User
      description: |-
        Creates an authentication token for a Vuframe® Studio user. This token can then be used to access the various endpoints of the Vuframe® Public API. If the user already has a valid auth token for the given SSO app, the existing token will be returned instead of creating a new one. 

        This endpoint uses Basic Auth with the following Credentials:

        Username: Your Vuframe® Studio Email
        
        Password: Your Vuframe® Studio Password
        
      operationId: createToken
      responses:
        '200':
          description: "Returns the newly created auth token in the displayed format."
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    description: "success indicator"
                    type: boolean
                  token:
                    description: "API Token"
                    type: string
        '405':
          description: Invalid input
      security:
        - basicAuth: []
      parameters:
        - in: path
          name: app_token
          description: ""
          required: true
          schema:
            type: string
  /projects:
    get:
      tags:
        - Workspaces
      summary: Get a list of all workspaces
      description: Returns a list of all VUFRAME® Studio workspaces the user has access to.
      operationId: getProjects
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items: 
                  $ref: '#/components/schemas/Project'
        '400':
          description: Invalid status value
      security:
        - basicAuth: []
  /smartvus:
    get:
      tags:
        - SmartVu®
      summary: Get a list of all folders and SmartVu®'s
      description: >-
        Returns a list of all SmartVu's and folders the current user has access to.
      operationId: getFolders
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SmartVu'
        '400':
          description: Invalid value
      security:
        - basicAuth: []
    post:
      tags:
        - SmartVu®
      summary: Create a new SmartVu®
      description: |
        Create a new SmartVu in one of the project the current user has access to. 

        **Notes:**
        - The values "share_code" and "shared_version" are only present if the request param "share" was set to true (null otherwise)
        - Using the share code from the response, the user is able to access the share page for the newly created SmartVu under https://share.vuframe.com/ or 
      operationId: postSmartVu
      requestBody:
        description: ""
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SmartVuRequest'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartVuResponse'
        '400':
          description: Invalid parameters supplied
      security:
        - basicAuth: []
  '/smartvus/{smartvu_token}':
    get:
      tags:
        - SmartVu®
      summary: Get an existing SmartVu®
      description: ""
      operationId: getSmartVu
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu®
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartVuResponse'
        '405':
          description: Invalid input
      security:
        - basicAuth: []
    patch:
      tags:
        - SmartVu®
      summary: Update an existing SmartVu®
      description: |
        Edit and/or share an existing SmartVu.

        **Notes:**
        - The values "version" and "shared_version" show the latest and the public version revision of the SmartVu respectively
        - If the SmartVu is not shared, "share_code" and "shared_version" are set to null

      operationId: updateSmartVu
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu®
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  description: "(optional) new title of the SmartVu"
                  type: string
                description:
                  description: "(optional) new description of the SmartVu"
                  type: string
                item_token:
                  description: "(optional) token of the 3D item that the SmartVu should display"
                  type: string
                share:
                  description: >-
                    (optional)
                    - if true, the new version of the SmartVu is shared
                    - if false, the SmartVu is unshared (no longer publicly accessible)
                    - if not specified or null, the share status of the SmartVu remains unchanged
                  type: boolean
                password:
                  description: "(optional) set password protection to this SmartVu"
                  type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartVuResponse'
        '405':
          description: Invalid input
      security:
        - basicAuth: []
    delete:
      tags:
        - SmartVu®
      summary: Remove an existing SmartVu®
      description: |
        
      operationId: deleteSmartVu
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu®
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    default: true
                    description: Was removal successful?
                  message:
                    type: string
                    description: Removal Message
        '405':
          description: Invalid input
      security:
        - basicAuth: []
  '/smartvus/{smartvu_token}/preview_image':
    post:
      tags:
        - SmartVu®
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu®
          required: true
          schema:
            type: string
      summary: Add or Replace SmartVu® Preview Image
      description: |
        Add or replace the preview image of a SmartVu specified by its token. This will overwrite the automatically added preview image. 
      operationId: postSmartVuPreviewImage
      requestBody:
        description: ""
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                preview_image:
                  description: Image file (png or jpg)
                  type: string
                  format: binary
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Feedback, whether operation was successful.
                  smartvu:
                    type: object
                    properties:
                      token:
                        type: string
                        description: Token of SmartVu
                      preview_image:
                        type: string
                        description: Name of Preview Image
                      preview_image_type:
                        type: string
                        description: Content Type of Preview Image
        '400':
          description: Invalid parameters supplied
      security:
        - basicAuth: []
  
  '/smartvus/{smartvu_token}/widgets':
    get:
      tags:
        - Widgets
      summary: Get all widgets of a SmartVu®
      description: ""
      operationId: getWidgets
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu®
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widgets'
        '404':
          description: Invalid input
      security:
        - basicAuth: []
    
    patch:
      tags:
        - Widgets
      summary: Update Widgets
      description: |
        
        Append one or multiple Widgets.
        
        **Notes:**
        - Currently it is only possible to add new entries -> This will change in the final release.

      operationId: updateWidgets
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Widgets'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widgets'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
    put:
      tags:
        - Widgets
      summary: Replace all Widgets
      description: |
        
        Replace Widgets with given Widgets.

      operationId: replaceWidgets
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Widgets'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widgets'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
        
  '/smartvus/{smartvu_token}/widgets/{widget_token}':
    get:
      tags:
        - Widgets
      summary: '⚠️ Not implemented yet: Get single Widget'
      description: 'This endpoint is not implemented yet.'
      operationId: getWidget
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: widget_token
          in: path
          description: Token of a Widget
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widget'
        '400':
          description: Invalid input
    patch:
      tags:
        - Widgets
      summary: '⚠️ Not implemented yet: Update single Widget'
      description: |
        
        Update Widget with given values.

      operationId: updateWidget
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: widget_token
          in: path
          description: Token of a Widget
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Widget'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widget'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
    put:
      tags:
        - Widgets
      summary: '⚠️ Not implemented yet: Replace single Widget'
      description: |
        
        Replace Widget with given Widget.

      operationId: replaceWidget
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: widget_token
          in: path
          description: Token of a Widget
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Widget'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widget'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
        
    delete:
      tags:
        - Widgets
      summary: '⚠️ Not implemented yet: Remove single Widget'
      description: |
        
        Remove Widget by Token.

      operationId: deleteWidget
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: widget_token
          in: path
          description: Token of a Widget
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widget'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
  '/smartvus/{smartvu_token}/actions':
    get:
      tags:
        - Actions
      summary: Get all actions of a SmartVu®
      description: ""
      operationId: getActions
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu®
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Actions'
        '404':
          description: Invalid input
      security:
        - basicAuth: []
    
    patch:
      tags:
        - Actions
      summary: Update Actions
      description: |
        
        Append one or multiple Actions.
        
        **Notes:**
        - Currently it is only possible to add new entries -> This will change in the final release.

      operationId: updateActions
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Actions'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Actions'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
    put:
      tags:
        - Actions
      summary: Replace all Actions
      description: |
        
        Replace Actions with given Actions.

      operationId: replaceActions
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Actions'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Actions'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
        
  '/smartvus/{smartvu_token}/actions/{action_token}':
    get:
      tags:
        - Actions
      summary: '⚠️ Not implemented yet: Get single Action'
      description: 'This endpoint is not implemented yet.'
      operationId: getAction
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: action_token
          in: path
          description: Token of a Action
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
        '400':
          description: Invalid input
    patch:
      tags:
        - Actions
      summary: '⚠️ Not implemented yet: Update single Action'
      description: |
        
        Update Action with properties.

      operationId: updateAction
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: action_token
          in: path
          description: Token of a Action
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Action'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
    put:
      tags:
        - Actions
      summary: '⚠️ Not implemented yet: Replace single Action'
      description: |
        
        Replace Action with given Action.

      operationId: replaceAction
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: action_token
          in: path
          description: Token of a Action
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Action'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
        
    delete:
      tags:
        - Actions
      summary: '⚠️ Not implemented yet: Remove single Action'
      description: |
        
        Remove Action by Token

      operationId: deleteAction
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
        - name: action_token
          in: path
          description: Token of a Action
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
  '/smartvus/{smartvu_token}/extensions':
    get:
      tags:
        - Extensions
      summary: Get all Extensions of a SmartVu®
      description: ""
      operationId: getExtensions
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu®
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extensions'
        '404':
          description: Invalid input
      security:
        - basicAuth: []
    put:
      tags:
        - Extensions
      summary: Replace all Extensions
      description: |
        
        Replace Extensions with provided Extensions.

      operationId: replaceExtensions
      parameters:
        - name: smartvu_token
          in: path
          description: Token of a SmartVu
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Extensions'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extensions'
        '400':
          description: Invalid input
      security:
        - basicAuth: []
  '/items':
    post:
      tags:
        - Item Upload & Processing
      summary: Create a new item
      description: >-
        Prepare the upload of a new file to the specified folder or SmartVu.


        **Returns:**
        
        - A presigned Amazon S3 URL that allows the user to upload their file to the VUFRAME® cloud storage with a PUT-Request.
        
        - A callback URL pointing to another Public API endpoint that the user needs to call after the file has been uploaded successfully. As soon as this callback is received, VUFRAME® Studio will start processing the uploaded file.
        
        
        **Please Notice**
        
        
        After this request it is required to initiate 2 other requests!
        
        
        - The first follow up is the actual upload of the data to the presigend Amazon S3 URL by PUT.
        
        - The second one will notify the Vuframe Platform, that the data was uploaded. This is achieved by requesting the callback URL by GET.
      operationId: postItem
      requestBody:
        description: ""
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required: 
                - folder_token
                - folder_type
                - filename
                - content_type
              properties:
                folder_token:
                  description: token of the folder or SmartVu® the new item should be created in
                  type: string
                folder_type:
                  description: folder or feature depending on whether the item should be created in a folder or a SmartVu®
                  type: string
                  enum:
                    - feature
                    - folder
                  default: feature
                filename:
                  description: filename with its extension of the file that should be uploaded. (e.g. test.vf3d)
                  type: string
                content_type:
                  description: "content type identifier describing the type of file that should be uploaded (see List of supported content types: [List of supported Content Types](https://docs.vuframe.com/platform/reference/media-formats)"
                  type: string
                  default: any_3d
                  enum:
                    - any_3d
                    - aura3d_files
                    - fbx_files
                    - obj_files
                    - c4d_files
                    - vidya_zip
                    - pdf_files
                    - image_files
                auto_share:
                  description: "Is a stringified boolean and defines, whether the uploaded item should be auto shared, if it has the folder_type='feature'. Possible values: 'true' | 'false', '1' | '0'"
                  type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  description: 
                    description: ""
                    type: string
                  presigned_url: 
                    description: "S3 upload URL"
                    type: string
                  callback_url: 
                    description: "Public API callback URL"
                    type: string
                  upload_action: 
                    description: "upload as new item"
                    type: string
                  upload_filename:
                    description: "generated unique filename"
                    type: string
                  resolved_content_type: 
                    description: "recognized content type"
                    type: string
        '400':
          description: Invalid Folder Token supplied
      security:
        - basicAuth: []
  /items/{item_token}:
    put:
      tags: 
        - Item Upload & Processing
      summary: Add new revision for Item
      description: |
        The functionality is just the same as creating a new item with one difference: We expect an Item Token of an existing Item.
      operationId: putItemRevision
      parameters: 
        - name: item_token
          in: path
          description: item token of an existing item
          required: true
          schema:
            type: string
      requestBody:
        description: ""
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required: 
                - folder_token
                - folder_type
                - filename
                - content_type
              properties:
                filename:
                  description: filename with its extension of the file that should be uploaded. (e.g. test.vf3d)
                  type: string
                content_type:
                  description: "content type identifier describing the type of file that should be uploaded (see List of supported content types: [List of supported Content Types](https://docs.vuframe.com/platform/reference/media-formats)"
                  type: string
                  default: any_3d
                  enum:
                    - any_3d
                    - aura3d_files
                    - fbx_files
                    - obj_files
                    - c4d_files
                    - vidya_zip
                    - pdf_files
                    - image_files
                auto_share:
                  description: "Is a stringified boolean and defines, whether the uploaded item should be auto shared, if it has the folder_type='feature'. Possible values: 'true' | 'false', '1' | '0'"
                  type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  description: 
                    description: ""
                    type: string
                  presigned_url: 
                    description: "S3 upload URL"
                    type: string
                  callback_url: 
                    description: "Public API callback URL"
                    type: string
                  upload_action: 
                    description: "upload as new item"
                    type: string
                  upload_filename:
                    description: "generated unique filename"
                    type: string
                  resolved_content_type: 
                    description: "recognized content type"
                    type: string
        '400':
          description: Invalid Item Token supplied
      security:
        - basicAuth: []
  /items/{resource_token}/status:
    get:
      tags:
        - Item Upload & Processing
      summary: Get file processing status
      description: |
        Get the current processing status of a 3D file that was uploaded using the Public API.

        **Notes:**
        - As the item for the file is only created after the file has finished processing, the value "item_token" is null until then. After the item has been created, you can assign it to a new or existing SmartVu using its token
        - The value "ready" is true only if the item has finished processing and the processing task was completed successfully
        - While the processing task is running, the value "success" is null - The value "status" offers a short description of the processing step the file is currently undergoing
      operationId: getProcessingStatus
      parameters:
        - name: resource_token
          in: path
          description: (URL param) resource token obtained from the response of POST /items/:upload_id/upload_complete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  resource_token:
                    description: "Resource Token"
                    type: string
                  project_token:
                    description: "token of the VUFRAME® Studio project the file was uploaded to"
                    type: string
                  folder_token:
                    description: "token of the VUFRAME® Studio folder or SmartVu the file was uploaded to"
                    type: string
                  item_token:
                    description: "token of the the item that was created for this file"
                    type: string
                    nullable: true
                  ready:
                    description: ""
                    type: boolean
                  finished_processing:
                    description: ""
                    type: boolean
                  success:
                    description: ""
                    type: boolean
                  status:
                    description: ""
                    type: string
      security:
        - basicAuth: []
externalDocs:
  description: For further information consult us here.
  url: 'http://vuframe.com'
components:
  schemas:
    Project:
      type: object
      properties:
        platform_version:
          description: "Version of Platform"
          type: integer
        token:
          description: "Project Token"
          type: string
        name:
          description: "Name of Project"
          type: string
    SmartVu:
      type: object
      properties:
        token: 
          description: "Token of SmartVu"
          type: string
        name: 
          description: "Name of SmartVu"
          type: string
        space:
          description: "Token of Workspace that contains SmartVu"
          type: string
        shared: 
          description: "Indicates whether a SmartVu is shared"
          type: boolean
        share_code:
          description: "If SmartVu is shared, a share code will be delivered"
          type: string
          nullable: true
        password_enabled:
          description: "If SmartVu is shared, you can set a password to it. If this is done, this value will be true."
          type: boolean
    SmartVuRequest:
        type: object
        required: 
          - project_token
          - title
        properties:
          project_token:
            description: token of the project the SmartVu should be created in
            type: string
          title:
            description: "title of the new SmartVu"
            type: string
          description:
            description: "(optional) description of the new SmartVu"
            type: string
          item_token:
            description: "(optional) token of the 3D item that the SmartVu should display. If no item token is specified, an empty SmartVu will be created."
            type: string
          share:
            description: "(optional) if true, the new SmartVu will be shared immediately."
            type: boolean
    SmartVuResponse:
      type: object
      properties:
        success:
          description: ""
          type: boolean
        smartvu:
          type: object
          properties:
            token:
              description: "Token of SmartVu"
              type: string
            title:
              description: "Name of SmartVu"
              type: string
            item_token:
              description: "Token of Item that is behind a SmartVu"
              type: string
              nullable: true
            description:
              description: "Description of SmartVu"
              type: string            
            version:
              description: "Version of SmartVu"
              type: integer
            shared:
              description: "Indicates whether a SmartVu is shared."
              type: boolean
            share_code:
              description: "If SmartVu is shared, a share code will be delivered."
              type: string
              nullable: true
            shared_version:
              description: "If SmartVu is shared, the version of the SmartVu will be delivered."
              type: string
              nullable: true
    Widgets:
      type: object
      properties:
        widgets:
          type: array
          items:
            $ref: '#/components/schemas/Widget'
    Widget:
      type: object
      required: 
        - type
        - title
      properties:
        token:
          type: string
          description: (Optional) alpha-numeric Token with 8 characters.
        title:
          type: string
          description: Name of the Widget that is displayed in the SmartVu® Editor.
        type:
          nullable: false
          type: string
          description: Type of Widget that defines what will be rendered.
          enum:
            - media_widget
            - action_button_widget
        params:
          nullable: true
          type: object
          description: The content of this property depends on the widget_type.
          oneOf:
            - $ref: '#/components/schemas/MediaWidgetParams'
            - $ref: '#/components/schemas/ActionButtonWidgetParams'
        sort_order:
          type: number
          description: Sorting Order
    Actions:
      type: object
      properties:
        widgets:
          type: array
          items:
            $ref: '#/components/schemas/Action'
    Action:
      type: object
      required: 
        - type
        - title
      properties:
        token:
          type: string
          description: (Optional) alpha-numeric Token with 8 characters.
        title:
          type: string
          description: Name of the Widget that is displayed in the SmartVu® Editor.
        type:
          nullable: false
          type: string
          description: Type of Widget that defines what will be rendered.
          enum:
            - popup_with_pdf_action
        params:
          nullable: true
          type: object
          description: The content of this property depends on the widget_type.
          oneOf:
            - $ref: '#/components/schemas/PopupWithPDFActionParams'
        sort_order:
          type: number
          description: Sorting Order
    Extensions:
      type: object
      description: To provide extensions only for a specific language, you need to wrap extensions within an object that is named with a language identifier (e.g. "en", "de", "fr").
      properties:
        extensions:
          type: array
          items:
            $ref: '#/components/schemas/Extension'
        <lang>:
          type: object
          description: Extensions wrapped with a language identifier (e.g. "en", "de", "fr").
          properties:
            extensions:
              type: array
              items:
                $ref: '#/components/schemas/Extension'
    Extension:
      type: object
      required: 
        - type
        - name
      properties:
        token:
          type: string
          description: (Optional) alpha-numeric Token with 8 characters.
        title:
          type: string
          description: Name of the Widget that is displayed in the SmartVu® Editor.
        type:
          nullable: false
          type: string
          description: Type of Widget that defines what will be rendered.
          enum:
            - lifesize_extension
        params:
          nullable: true
          type: object
          description: The content of this property depends on the widget_type.
          oneOf:
            - $ref: '#/components/schemas/LifesizeExtensionParams'
        sort_order:
          type: number
          description: Sorting Order
    PopupWithPDFActionParams:
      type: object
      description: Popup with PDF Action. To be able to use this action you need an Action Button Widget in your Sidebar.
      properties:
        pdf_file:
          type: string
          description: Token of PDF Item
        popup_title:
          type: string
          description: Title of Popup
        button_action:
          type: string
          description: Token of the Action itself
        button_title:
          type: string
          description: Title of Button
    ActionButtonWidgetParams:
      type: object
      description: Button with an Action, that will be triggered on click or press.
      properties:
        title:
          type: string
          description: Title of Button
        button_color:
          type: string
          description: HEX Color Code for Button
        text_color:
          type: string
          description: HEX Color Code for Text in Button
        action:
          type: string
          description: Token of Action that will be triggered
    MediaWidgetParams:
      type: object
      description: Widgets with type 'media_widget' need following properties in the params object.
      properties:
        items:
          type: array
          items:
            type: string
            description: Item Tokens of pdf_files or image_files
        display_mode:
          nullable: false
          type: string
          description: Defines the way the items are displayed.
          enum: 
            - grid
            - list
    LifesizeExtensionParams:
      type: object
      description: Lifesize Extension with Lifesize Mode and Initial Mode
      properties:
        mode:
          type: string
          description: Lifesize Mode
          enum:
            - floor
            - wall
            - ceiling
        initial_mode:
          type: string
          description: Initial 3D Mode
          enum:
            - 3d
            - on_table
            - lifesize
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
security: 
  - basicAuth: []
servers:
  - description: Production SmartVu API
    url: https://api.vuframe.com/public/v1
tags:
  - name: Authentication