/**
 * Data Catalog API
 * Use the Data Catalog APIs to collect, organize, find, access, understand, enrich, and activate technical, business, and operational metadata.
For more information, see [Data Catalog](https://docs.oracle.com/iaas/data-catalog/home.htm).

 * OpenAPI spec version: 20190325
 *
 *
 * NOTE: This class is auto generated by OracleSDKGenerator.
 * Do not edit the class manually.
 *
 * Copyright (c) 2020, 2022, Oracle and/or its affiliates.  All rights reserved.
 * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
 */ import * as model from "../model" ; import common = require ( "oci-common" ) ; /**
 * The search result object is the definition of an element that is returned as part of search. It contains basic
 * information about the object such as key, name and description. The search result also contains the list of tags
 * for each object along with other contextual information like the data asset root, folder, or entity parents.
 *
 */ export interface SearchResult { /**
     * Unique key of the object returned as part of the search result.
     */ "key" ? : string ; /**
     * Name of the object.
     */ "name" ? : string ; /**
     * Detailed description of the object.
     */ "description" ? : string ; /**
     * The date and time the result object was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     * Example: `2019-03-25T21:10:29.600Z`
     *
     */ "timeCreated" ? : Date ; /**
     * The date and time the result object was updated, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     * Example: `2019-03-25T21:10:29.600Z`
     *
     */ "timeUpdated" ? : Date ; /**
     * Array of the tags associated with this object.
     */ "tagSummary" ? : Array < model . SearchTagSummary > ; /**
     * Array of the terms associated with this object.
     */ "termSummary" ? : Array < model . SearchTermSummary > ; /**
     * Name of the object type.
     */ "typeName" ? : string ; /**
     * Name of the external object type in the host data asset. For example, column, field, table, view, or file.
     */ "externalTypeName" ? : string ; /**
     * Data type of the object if the object is an attribute. Null otherwise.
     */ "externalDataType" ? : string ; /**
     * Unique key of the data asset that is the root parent of this object.
     */ "dataAssetKey" ? : string ; /**
     * Type name of the data asset. For example, Oracle, MySQL or Oracle Object Storage.
     */ "dataAssetType" ? : string ; /**
     * Name of the data asset that is the root parent of this object.
     */ "dataAssetName" ? : string ; /**
     * Unique key of the folder object if this object is a sub folder, entity, or attribute.
     */ "folderKey" ? : string ; /**
     * Type name of the folder. For example, schema, directory, or topic.
     */ "folderType" ? : string ; /**
     * Name of the parent folder object if this object is a sub folder, entity, or attribute.
     */ "folderName" ? : string ; /**
     * Unique key of the entity object if this object is an attribute.
     */ "entitykey" ? : string ; /**
     * Type name of the entity. For example, table, view, external table, file, or object.
     */ "entityType" ? : string ; /**
     * Name of the parent entity object if this object is an attribute.
     */ "entityName" ? : string ; /**
     * Unique id of the parent glossary.
     */ "glossaryKey" ? : string ; /**
     * Name of the parent glossary if this object is a term.
     */ "glossaryName" ? : string ; /**
     * This terms parent term key. Will be null if the term has no parent term.
     */ "parentTermKey" ? : string ; /**
     * Name of the parent term. Will be null if the term has no parent term.
     */ "parentTermName" ? : string ; /**
     * OCID of the user who created the resource.
     */ "createdById" ? : string ; /**
     * OCID of the user who updated the resource.
     */ "updatedById" ? : string ; /**
     * Absolute path of this resource, which could be a term, folder, entity etc, usually resolvable to this resource through a namespace hierarchy.
     */ "path" ? : string ; /**
     * Optional user friendly business name of the data object. If set, this supplements the harvested display name of the object.
     */ "businessName" ? : string ; /**
     * The current state of the data object.
     */ "lifecycleState" ? : model . LifecycleState ; /**
     * Type name of the attribute. For example - complex, primitive, or array.
     */ "attributeType" ? : string ; /**
     * Expression for logical entities against which names of dataObjects will be matched.
     */ "expression" ? : string ; /**
     * Custom properties defined by users.
     */ "customProperties" ? : Array < model . FacetedSearchCustomProperty > ; /**
     * A map of maps that contains the properties which are specific to the element type in the search result.
     * The map keys are category names and the values are maps of property name to property value. Every property
     * is contained inside of a category. Most element types have required properties within the \"default\" category.
     * Example: `{\"properties\": { \"default\": { \"key1\": \"value1\"}}}`
     *
     */ "properties" ? : { [ key ] : { [ key ] : string ; } ; } ; } export namespace SearchResult { export function getJsonObj ( obj ) { const jsonObj = { ... obj , ... { "tagSummary" : obj . tagSummary ? obj . tagSummary . map ( item => { return model . SearchTagSummary . getJsonObj ( item ) ; } ) : undefined , "termSummary" : obj . termSummary ? obj . termSummary . map ( item => { return model . SearchTermSummary . getJsonObj ( item ) ; } ) : undefined , "customProperties" : obj . customProperties ? obj . customProperties . map ( item => { return model . FacetedSearchCustomProperty . getJsonObj ( item ) ; } ) : undefined } } ; return jsonObj ; } export function getDeserializedJsonObj ( obj ) { const jsonObj = { ... obj , ... { "tagSummary" : obj . tagSummary ? obj . tagSummary . map ( item => { return model . SearchTagSummary . getDeserializedJsonObj ( item ) ; } ) : undefined , "termSummary" : obj . termSummary ? obj . termSummary . map ( item => { return model . SearchTermSummary . getDeserializedJsonObj ( item ) ; } ) : undefined , "customProperties" : obj . customProperties ? obj . customProperties . map ( item => { return model . FacetedSearchCustomProperty . getDeserializedJsonObj ( item ) ; } ) : undefined } } ; return jsonObj ; } }