# coding: utf-8

"""
    Mixpeek API

    This is the Mixpeek API, providing access to various endpoints for data processing and retrieval.

    The version of the OpenAPI document: 1.3.0
    Contact: info@mixpeek.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from __future__ import annotations
import json
from enum import Enum
from typing_extensions import Self


class RetrieverInputSchemaFieldType(str, Enum):
    """
    Supported data types for retriever input schema fields.  Retriever input schemas define what parameters users can provide when executing a retriever. This includes all bucket schema types plus additional reference types.  Types fall into three categories:  1. **Metadata Types** (JSON types):    - Standard JSON-compatible types    - Examples: string, number, boolean, date    - Inherited from BucketSchemaFieldType  2. **File Types** (blobs):    - Users can upload files/content as search inputs    - Examples: text, image, video, pdf    - Inherited from BucketSchemaFieldType  3. **Reference Types** (structured metadata):    - Special types for referencing existing documents    - Examples: document_reference    - Only available in retriever input schemas (NOT in bucket schemas)  **DOCUMENT_REFERENCE Usage**:     Accept document reference for \"find similar\" queries.      Example - Find similar products retriever:     {         \"reference_product\": {             \"type\": \"document_reference\",             \"description\": \"Find products similar to this one\",             \"required\": true         }     }      Execution input:     {         \"inputs\": {             \"reference_product\": {                 \"collection_id\": \"col_products\",                 \"document_id\": \"doc_item_123\"             }         }     }      The system will use the pre-computed features from doc_item_123     to find similar documents without re-processing.
    """

    """
    allowed enum values
    """
    STRING = 'string'
    NUMBER = 'number'
    INTEGER = 'integer'
    FLOAT = 'float'
    BOOLEAN = 'boolean'
    OBJECT = 'object'
    ARRAY = 'array'
    DATE = 'date'
    DATETIME = 'datetime'
    TEXT = 'text'
    IMAGE = 'image'
    AUDIO = 'audio'
    VIDEO = 'video'
    PDF = 'pdf'
    EXCEL = 'excel'
    DOCUMENT_REFERENCE = 'document_reference'

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of RetrieverInputSchemaFieldType from a JSON string"""
        return cls(json.loads(json_str))


