All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.konfigthis.carbonai.client.model.FileSyncConfig Maven / Gradle / Ivy

Go to download

Connect external data to LLMs, no matter the source. This library was generated by https://konfigthis.com

There is a newer version: 0.1.51
Show newest version
/*
 * Carbon
 * Connect external data to LLMs, no matter the source.
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 *
 * NOTE: This class is auto generated by Konfig (https://konfigthis.com).
 * Do not edit the class manually.
 */


package com.konfigthis.carbonai.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.konfigthis.carbonai.client.model.HSNFileTypes;
import com.konfigthis.carbonai.client.model.TranscriptionServiceNullable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.openapitools.jackson.nullable.JsonNullable;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.konfigthis.carbonai.client.JSON;

/**
 * FileSyncConfig
 */@javax.annotation.Generated(value = "Generated by https://konfigthis.com")
public class FileSyncConfig {
  public static final String SERIALIZED_NAME_AUTO_SYNCED_SOURCE_TYPES = "auto_synced_source_types";
  @SerializedName(SERIALIZED_NAME_AUTO_SYNCED_SOURCE_TYPES)
  private List autoSyncedSourceTypes = null;

  public static final String SERIALIZED_NAME_SYNC_ATTACHMENTS = "sync_attachments";
  @SerializedName(SERIALIZED_NAME_SYNC_ATTACHMENTS)
  private Boolean syncAttachments = false;

  public static final String SERIALIZED_NAME_DETECT_AUDIO_LANGUAGE = "detect_audio_language";
  @SerializedName(SERIALIZED_NAME_DETECT_AUDIO_LANGUAGE)
  private Boolean detectAudioLanguage = false;

  public static final String SERIALIZED_NAME_TRANSCRIPTION_SERVICE = "transcription_service";
  @SerializedName(SERIALIZED_NAME_TRANSCRIPTION_SERVICE)
  private TranscriptionServiceNullable transcriptionService;

  public static final String SERIALIZED_NAME_INCLUDE_SPEAKER_LABELS = "include_speaker_labels";
  @SerializedName(SERIALIZED_NAME_INCLUDE_SPEAKER_LABELS)
  private Boolean includeSpeakerLabels = false;

  public static final String SERIALIZED_NAME_SPLIT_ROWS = "split_rows";
  @SerializedName(SERIALIZED_NAME_SPLIT_ROWS)
  private Boolean splitRows = false;

  public static final String SERIALIZED_NAME_GENERATE_CHUNKS_ONLY = "generate_chunks_only";
  @SerializedName(SERIALIZED_NAME_GENERATE_CHUNKS_ONLY)
  private Boolean generateChunksOnly = false;

  public static final String SERIALIZED_NAME_STORE_FILE_ONLY = "store_file_only";
  @SerializedName(SERIALIZED_NAME_STORE_FILE_ONLY)
  private Boolean storeFileOnly = false;

  public static final String SERIALIZED_NAME_SKIP_FILE_PROCESSING = "skip_file_processing";
  @SerializedName(SERIALIZED_NAME_SKIP_FILE_PROCESSING)
  private Boolean skipFileProcessing = false;

  public FileSyncConfig() {
  }

  public FileSyncConfig autoSyncedSourceTypes(List autoSyncedSourceTypes) {
    
    
    
    
    this.autoSyncedSourceTypes = autoSyncedSourceTypes;
    return this;
  }

  public FileSyncConfig addAutoSyncedSourceTypesItem(HSNFileTypes autoSyncedSourceTypesItem) {
    if (this.autoSyncedSourceTypes == null) {
      this.autoSyncedSourceTypes = new ArrayList<>();
    }
    this.autoSyncedSourceTypes.add(autoSyncedSourceTypesItem);
    return this;
  }

   /**
   * File types to automatically sync when the data source connects. Only a subset of file types can be          controlled. If not supported, then they will always be synced
   * @return autoSyncedSourceTypes
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "[\"ARTICLE\"]", value = "File types to automatically sync when the data source connects. Only a subset of file types can be          controlled. If not supported, then they will always be synced")

  public List getAutoSyncedSourceTypes() {
    return autoSyncedSourceTypes;
  }


  public void setAutoSyncedSourceTypes(List autoSyncedSourceTypes) {
    
    
    
    this.autoSyncedSourceTypes = autoSyncedSourceTypes;
  }


  public FileSyncConfig syncAttachments(Boolean syncAttachments) {
    
    
    
    
    this.syncAttachments = syncAttachments;
    return this;
  }

   /**
   * Automatically sync attachments from files where supported. Currently applies to Helpdesk Tickets
   * @return syncAttachments
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "Automatically sync attachments from files where supported. Currently applies to Helpdesk Tickets")

  public Boolean getSyncAttachments() {
    return syncAttachments;
  }


  public void setSyncAttachments(Boolean syncAttachments) {
    
    
    
    this.syncAttachments = syncAttachments;
  }


  public FileSyncConfig detectAudioLanguage(Boolean detectAudioLanguage) {
    
    
    
    
    this.detectAudioLanguage = detectAudioLanguage;
    return this;
  }

   /**
   * Detect audio language before transcription for audio files
   * @return detectAudioLanguage
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "Detect audio language before transcription for audio files")

  public Boolean getDetectAudioLanguage() {
    return detectAudioLanguage;
  }


  public void setDetectAudioLanguage(Boolean detectAudioLanguage) {
    
    
    
    this.detectAudioLanguage = detectAudioLanguage;
  }


  public FileSyncConfig transcriptionService(TranscriptionServiceNullable transcriptionService) {
    
    
    
    
    this.transcriptionService = transcriptionService;
    return this;
  }

   /**
   * Get transcriptionService
   * @return transcriptionService
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public TranscriptionServiceNullable getTranscriptionService() {
    return transcriptionService;
  }


  public void setTranscriptionService(TranscriptionServiceNullable transcriptionService) {
    
    
    
    this.transcriptionService = transcriptionService;
  }


  public FileSyncConfig includeSpeakerLabels(Boolean includeSpeakerLabels) {
    
    
    
    
    this.includeSpeakerLabels = includeSpeakerLabels;
    return this;
  }

   /**
   * Detect multiple speakers and label segments of speech by speaker for audio files.
   * @return includeSpeakerLabels
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "Detect multiple speakers and label segments of speech by speaker for audio files.")

  public Boolean getIncludeSpeakerLabels() {
    return includeSpeakerLabels;
  }


  public void setIncludeSpeakerLabels(Boolean includeSpeakerLabels) {
    
    
    
    this.includeSpeakerLabels = includeSpeakerLabels;
  }


  public FileSyncConfig splitRows(Boolean splitRows) {
    
    
    
    
    this.splitRows = splitRows;
    return this;
  }

   /**
   * Whether to split tabular rows into chunks. Currently only valid for CSV, TSV, and XLSX files.
   * @return splitRows
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "Whether to split tabular rows into chunks. Currently only valid for CSV, TSV, and XLSX files.")

  public Boolean getSplitRows() {
    return splitRows;
  }


  public void setSplitRows(Boolean splitRows) {
    
    
    
    this.splitRows = splitRows;
  }


  public FileSyncConfig generateChunksOnly(Boolean generateChunksOnly) {
    
    
    
    
    this.generateChunksOnly = generateChunksOnly;
    return this;
  }

   /**
   * If this flag is enabled, the file will be chunked and stored with Carbon,           but no embeddings will be generated. This overrides the skip_embedding_generation flag.
   * @return generateChunksOnly
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "If this flag is enabled, the file will be chunked and stored with Carbon,           but no embeddings will be generated. This overrides the skip_embedding_generation flag.")

  public Boolean getGenerateChunksOnly() {
    return generateChunksOnly;
  }


  public void setGenerateChunksOnly(Boolean generateChunksOnly) {
    
    
    
    this.generateChunksOnly = generateChunksOnly;
  }


  public FileSyncConfig storeFileOnly(Boolean storeFileOnly) {
    
    
    
    
    this.storeFileOnly = storeFileOnly;
    return this;
  }

   /**
   * If this flag is enabled, the file will be stored with Carbon, but no chunks or embeddings will be generated.            This overrides the skip_embedding_generation and generate_chunks_only flags.
   * @return storeFileOnly
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "If this flag is enabled, the file will be stored with Carbon, but no chunks or embeddings will be generated.            This overrides the skip_embedding_generation and generate_chunks_only flags.")

  public Boolean getStoreFileOnly() {
    return storeFileOnly;
  }


  public void setStoreFileOnly(Boolean storeFileOnly) {
    
    
    
    this.storeFileOnly = storeFileOnly;
  }


  public FileSyncConfig skipFileProcessing(Boolean skipFileProcessing) {
    
    
    
    
    this.skipFileProcessing = skipFileProcessing;
    return this;
  }

   /**
   * Setting this flag will create a new file record with Carbon but skip any and all processing.          This means that we do not download the remote file content or generate any chunks or embeddings. We will store         some metadata like name, external id, and external URL depending on the source you are syncing from. Note that this          flag overrides both skip_embedding_generation and generate_chunks_only flags. The file will be moved to          READY_TO_SYNC status.
   * @return skipFileProcessing
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(example = "false", value = "Setting this flag will create a new file record with Carbon but skip any and all processing.          This means that we do not download the remote file content or generate any chunks or embeddings. We will store         some metadata like name, external id, and external URL depending on the source you are syncing from. Note that this          flag overrides both skip_embedding_generation and generate_chunks_only flags. The file will be moved to          READY_TO_SYNC status.")

  public Boolean getSkipFileProcessing() {
    return skipFileProcessing;
  }


  public void setSkipFileProcessing(Boolean skipFileProcessing) {
    
    
    
    this.skipFileProcessing = skipFileProcessing;
  }

  /**
   * A container for additional, undeclared properties.
   * This is a holder for any undeclared properties as specified with
   * the 'additionalProperties' keyword in the OAS document.
   */
  private Map additionalProperties;

  /**
   * Set the additional (undeclared) property with the specified name and value.
   * If the property does not already exist, create it otherwise replace it.
   *
   * @param key name of the property
   * @param value value of the property
   * @return the FileSyncConfig instance itself
   */
  public FileSyncConfig putAdditionalProperty(String key, Object value) {
    if (this.additionalProperties == null) {
        this.additionalProperties = new HashMap();
    }
    this.additionalProperties.put(key, value);
    return this;
  }

  /**
   * Return the additional (undeclared) property.
   *
   * @return a map of objects
   */
  public Map getAdditionalProperties() {
    return additionalProperties;
  }

  /**
   * Return the additional (undeclared) property with the specified name.
   *
   * @param key name of the property
   * @return an object
   */
  public Object getAdditionalProperty(String key) {
    if (this.additionalProperties == null) {
        return null;
    }
    return this.additionalProperties.get(key);
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    FileSyncConfig fileSyncConfig = (FileSyncConfig) o;
    return Objects.equals(this.autoSyncedSourceTypes, fileSyncConfig.autoSyncedSourceTypes) &&
        Objects.equals(this.syncAttachments, fileSyncConfig.syncAttachments) &&
        Objects.equals(this.detectAudioLanguage, fileSyncConfig.detectAudioLanguage) &&
        Objects.equals(this.transcriptionService, fileSyncConfig.transcriptionService) &&
        Objects.equals(this.includeSpeakerLabels, fileSyncConfig.includeSpeakerLabels) &&
        Objects.equals(this.splitRows, fileSyncConfig.splitRows) &&
        Objects.equals(this.generateChunksOnly, fileSyncConfig.generateChunksOnly) &&
        Objects.equals(this.storeFileOnly, fileSyncConfig.storeFileOnly) &&
        Objects.equals(this.skipFileProcessing, fileSyncConfig.skipFileProcessing)&&
        Objects.equals(this.additionalProperties, fileSyncConfig.additionalProperties);
  }

  private static  boolean equalsNullable(JsonNullable a, JsonNullable b) {
    return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
  }

  @Override
  public int hashCode() {
    return Objects.hash(autoSyncedSourceTypes, syncAttachments, detectAudioLanguage, transcriptionService, includeSpeakerLabels, splitRows, generateChunksOnly, storeFileOnly, skipFileProcessing, additionalProperties);
  }

  private static  int hashCodeNullable(JsonNullable a) {
    if (a == null) {
      return 1;
    }
    return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class FileSyncConfig {\n");
    sb.append("    autoSyncedSourceTypes: ").append(toIndentedString(autoSyncedSourceTypes)).append("\n");
    sb.append("    syncAttachments: ").append(toIndentedString(syncAttachments)).append("\n");
    sb.append("    detectAudioLanguage: ").append(toIndentedString(detectAudioLanguage)).append("\n");
    sb.append("    transcriptionService: ").append(toIndentedString(transcriptionService)).append("\n");
    sb.append("    includeSpeakerLabels: ").append(toIndentedString(includeSpeakerLabels)).append("\n");
    sb.append("    splitRows: ").append(toIndentedString(splitRows)).append("\n");
    sb.append("    generateChunksOnly: ").append(toIndentedString(generateChunksOnly)).append("\n");
    sb.append("    storeFileOnly: ").append(toIndentedString(storeFileOnly)).append("\n");
    sb.append("    skipFileProcessing: ").append(toIndentedString(skipFileProcessing)).append("\n");
    sb.append("    additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }


  public static HashSet openapiFields;
  public static HashSet openapiRequiredFields;

  static {
    // a set of all properties/fields (JSON key names)
    openapiFields = new HashSet();
    openapiFields.add("auto_synced_source_types");
    openapiFields.add("sync_attachments");
    openapiFields.add("detect_audio_language");
    openapiFields.add("transcription_service");
    openapiFields.add("include_speaker_labels");
    openapiFields.add("split_rows");
    openapiFields.add("generate_chunks_only");
    openapiFields.add("store_file_only");
    openapiFields.add("skip_file_processing");

    // a set of required properties/fields (JSON key names)
    openapiRequiredFields = new HashSet();
  }

 /**
  * Validates the JSON Object and throws an exception if issues found
  *
  * @param jsonObj JSON Object
  * @throws IOException if the JSON Object is invalid with respect to FileSyncConfig
  */
  public static void validateJsonObject(JsonObject jsonObj) throws IOException {
      if (jsonObj == null) {
        if (!FileSyncConfig.openapiRequiredFields.isEmpty()) { // has required fields but JSON object is null
          throw new IllegalArgumentException(String.format("The required field(s) %s in FileSyncConfig is not found in the empty JSON string", FileSyncConfig.openapiRequiredFields.toString()));
        }
      }
      // ensure the optional json data is an array if present
      if (jsonObj.get("auto_synced_source_types") != null && !jsonObj.get("auto_synced_source_types").isJsonArray()) {
        throw new IllegalArgumentException(String.format("Expected the field `auto_synced_source_types` to be an array in the JSON string but got `%s`", jsonObj.get("auto_synced_source_types").toString()));
      }
  }

  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public  TypeAdapter create(Gson gson, TypeToken type) {
       if (!FileSyncConfig.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'FileSyncConfig' and its subtypes
       }
       final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(FileSyncConfig.class));

       return (TypeAdapter) new TypeAdapter() {
           @Override
           public void write(JsonWriter out, FileSyncConfig value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             obj.remove("additionalProperties");
             // serialize additonal properties
             if (value.getAdditionalProperties() != null) {
               for (Map.Entry entry : value.getAdditionalProperties().entrySet()) {
                 if (entry.getValue() instanceof String)
                   obj.addProperty(entry.getKey(), (String) entry.getValue());
                 else if (entry.getValue() instanceof Number)
                   obj.addProperty(entry.getKey(), (Number) entry.getValue());
                 else if (entry.getValue() instanceof Boolean)
                   obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
                 else if (entry.getValue() instanceof Character)
                   obj.addProperty(entry.getKey(), (Character) entry.getValue());
                 else if (entry.getValue() == null) {
                   obj.addProperty(entry.getKey(), (String) null);
                 } else {
                   obj.add(entry.getKey(), gson.toJsonTree(entry.getValue()).getAsJsonObject());
                 }
               }
             }
             elementAdapter.write(out, obj);
           }

           @Override
           public FileSyncConfig read(JsonReader in) throws IOException {
             JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
             validateJsonObject(jsonObj);
             // store additional fields in the deserialized instance
             FileSyncConfig instance = thisAdapter.fromJsonTree(jsonObj);
             for (Map.Entry entry : jsonObj.entrySet()) {
               if (!openapiFields.contains(entry.getKey())) {
                 if (entry.getValue().isJsonPrimitive()) { // primitive type
                   if (entry.getValue().getAsJsonPrimitive().isString())
                     instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
                   else if (entry.getValue().getAsJsonPrimitive().isNumber())
                     instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
                   else if (entry.getValue().getAsJsonPrimitive().isBoolean())
                     instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
                   else
                     throw new IllegalArgumentException(String.format("The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
                 } else if (entry.getValue().isJsonArray()) {
                     instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), List.class));
                 } else { // JSON object
                     instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
                 }
               }
             }
             return instance;
           }

       }.nullSafe();
    }
  }

 /**
  * Create an instance of FileSyncConfig given an JSON string
  *
  * @param jsonString JSON string
  * @return An instance of FileSyncConfig
  * @throws IOException if the JSON string is invalid with respect to FileSyncConfig
  */
  public static FileSyncConfig fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, FileSyncConfig.class);
  }

 /**
  * Convert an instance of FileSyncConfig to an JSON string
  *
  * @return JSON string
  */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy