// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.analytics.purview.catalog;

import com.azure.analytics.purview.catalog.implementation.TypesImpl;
import com.azure.core.annotation.Generated;
import com.azure.core.annotation.ReturnType;
import com.azure.core.annotation.ServiceClient;
import com.azure.core.annotation.ServiceMethod;
import com.azure.core.exception.ClientAuthenticationException;
import com.azure.core.exception.HttpResponseException;
import com.azure.core.exception.ResourceModifiedException;
import com.azure.core.exception.ResourceNotFoundException;
import com.azure.core.http.rest.RequestOptions;
import com.azure.core.http.rest.Response;
import com.azure.core.util.BinaryData;
import reactor.core.publisher.Mono;

/** Initializes a new instance of the asynchronous PurviewCatalogClient type. */
@ServiceClient(builder = TypesClientBuilder.class, isAsync = true)
public final class TypesAsyncClient {
    @Generated private final TypesImpl serviceClient;

    /**
     * Initializes an instance of TypesAsyncClient class.
     *
     * @param serviceClient the service client implementation.
     */
    @Generated
    TypesAsyncClient(TypesImpl serviceClient) {
        this.serviceClient = serviceClient;
    }

    /**
     * Get the businessMetadata definition for the given guid.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param guid businessMetadata guid.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the businessMetadata definition for the given guid along with {@link Response} on successful completion
     *     of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getBusinessMetadataDefByGuidWithResponse(
            String guid, RequestOptions requestOptions) {
        return this.serviceClient.getBusinessMetadataDefByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the businessMetadata definition by it's name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param name businessMetadata name.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the businessMetadata definition by it's name (unique) along with {@link Response} on successful
     *     completion of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getBusinessMetadataDefByNameWithResponse(
            String name, RequestOptions requestOptions) {
        return this.serviceClient.getBusinessMetadataDefByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Get the classification definition for the given GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     *     entityTypes (Optional): [
     *         String (Optional)
     *     ]
     *     subTypes (Optional): [
     *         String (Optional)
     *     ]
     *     superTypes (Optional): [
     *         String (Optional)
     *     ]
     * }
     * }</pre>
     *
     * @param guid The globally unique identifier of the classification.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the classification definition for the given GUID along with {@link Response} on successful completion of
     *     {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getClassificationDefByGuidWithResponse(
            String guid, RequestOptions requestOptions) {
        return this.serviceClient.getClassificationDefByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the classification definition by its name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     *     entityTypes (Optional): [
     *         String (Optional)
     *     ]
     *     subTypes (Optional): [
     *         String (Optional)
     *     ]
     *     superTypes (Optional): [
     *         String (Optional)
     *     ]
     * }
     * }</pre>
     *
     * @param name The name of the classification.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the classification definition by its name (unique) along with {@link Response} on successful completion
     *     of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getClassificationDefByNameWithResponse(
            String name, RequestOptions requestOptions) {
        return this.serviceClient.getClassificationDefByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Get the Entity definition for the given GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     *     subTypes (Optional): [
     *         String (Optional)
     *     ]
     *     superTypes (Optional): [
     *         String (Optional)
     *     ]
     *     relationshipAttributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *             isLegacyAttribute: Boolean (Optional)
     *             relationshipTypeName: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param guid The globally unique identifier of the entity.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the Entity definition for the given GUID along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getEntityDefinitionByGuidWithResponse(
            String guid, RequestOptions requestOptions) {
        return this.serviceClient.getEntityDefinitionByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the entity definition by its name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     *     subTypes (Optional): [
     *         String (Optional)
     *     ]
     *     superTypes (Optional): [
     *         String (Optional)
     *     ]
     *     relationshipAttributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *             isLegacyAttribute: Boolean (Optional)
     *             relationshipTypeName: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param name The name of the entity.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the entity definition by its name (unique) along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getEntityDefinitionByNameWithResponse(
            String name, RequestOptions requestOptions) {
        return this.serviceClient.getEntityDefinitionByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Get the enum definition for the given GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     defaultValue: String (Optional)
     *     elementDefs (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             ordinal: Float (Optional)
     *             value: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param guid The globally unique identifier of the enum.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the enum definition for the given GUID along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getEnumDefByGuidWithResponse(String guid, RequestOptions requestOptions) {
        return this.serviceClient.getEnumDefByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the enum definition by its name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     defaultValue: String (Optional)
     *     elementDefs (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             ordinal: Float (Optional)
     *             value: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param name The name of the enum.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the enum definition by its name (unique) along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getEnumDefByNameWithResponse(String name, RequestOptions requestOptions) {
        return this.serviceClient.getEnumDefByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Get the relationship definition for the given GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     *     endDef1 (Optional): {
     *         cardinality: String(SINGLE/LIST/SET) (Optional)
     *         description: String (Optional)
     *         isContainer: Boolean (Optional)
     *         isLegacyAttribute: Boolean (Optional)
     *         name: String (Optional)
     *         type: String (Optional)
     *     }
     *     endDef2 (Optional): (recursive schema, see endDef2 above)
     *     relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *     relationshipLabel: String (Optional)
     * }
     * }</pre>
     *
     * @param guid The globally unique identifier of the relationship.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the relationship definition for the given GUID along with {@link Response} on successful completion of
     *     {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getRelationshipDefByGuidWithResponse(String guid, RequestOptions requestOptions) {
        return this.serviceClient.getRelationshipDefByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the relationship definition by its name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     *     endDef1 (Optional): {
     *         cardinality: String(SINGLE/LIST/SET) (Optional)
     *         description: String (Optional)
     *         isContainer: Boolean (Optional)
     *         isLegacyAttribute: Boolean (Optional)
     *         name: String (Optional)
     *         type: String (Optional)
     *     }
     *     endDef2 (Optional): (recursive schema, see endDef2 above)
     *     relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *     relationshipLabel: String (Optional)
     * }
     * }</pre>
     *
     * @param name The name of the relationship.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the relationship definition by its name (unique) along with {@link Response} on successful completion of
     *     {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getRelationshipDefByNameWithResponse(String name, RequestOptions requestOptions) {
        return this.serviceClient.getRelationshipDefByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Get the struct definition for the given GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param guid The globally unique identifier of the struct.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the struct definition for the given GUID along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getStructDefByGuidWithResponse(String guid, RequestOptions requestOptions) {
        return this.serviceClient.getStructDefByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the struct definition by its name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param name The name of the struct.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the struct definition by its name (unique) along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getStructDefByNameWithResponse(String name, RequestOptions requestOptions) {
        return this.serviceClient.getStructDefByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Get the type definition for the given GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     entityTypes (Optional): [
     *         String (Optional)
     *     ]
     *     subTypes (Optional): [
     *         String (Optional)
     *     ]
     *     superTypes (Optional): [
     *         String (Optional)
     *     ]
     *     relationshipAttributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *             isLegacyAttribute: Boolean (Optional)
     *             relationshipTypeName: String (Optional)
     *         }
     *     ]
     *     defaultValue: String (Optional)
     *     elementDefs (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             ordinal: Float (Optional)
     *             value: String (Optional)
     *         }
     *     ]
     *     endDef1 (Optional): {
     *         cardinality: String(SINGLE/LIST/SET) (Optional)
     *         description: String (Optional)
     *         isContainer: Boolean (Optional)
     *         isLegacyAttribute: Boolean (Optional)
     *         name: String (Optional)
     *         type: String (Optional)
     *     }
     *     endDef2 (Optional): (recursive schema, see endDef2 above)
     *     relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *     relationshipLabel: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param guid The globally unique identifier of the type.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the type definition for the given GUID along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getTypeDefinitionByGuidWithResponse(String guid, RequestOptions requestOptions) {
        return this.serviceClient.getTypeDefinitionByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the type definition by its name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     entityTypes (Optional): [
     *         String (Optional)
     *     ]
     *     subTypes (Optional): [
     *         String (Optional)
     *     ]
     *     superTypes (Optional): [
     *         String (Optional)
     *     ]
     *     relationshipAttributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *             isLegacyAttribute: Boolean (Optional)
     *             relationshipTypeName: String (Optional)
     *         }
     *     ]
     *     defaultValue: String (Optional)
     *     elementDefs (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             ordinal: Float (Optional)
     *             value: String (Optional)
     *         }
     *     ]
     *     endDef1 (Optional): {
     *         cardinality: String(SINGLE/LIST/SET) (Optional)
     *         description: String (Optional)
     *         isContainer: Boolean (Optional)
     *         isLegacyAttribute: Boolean (Optional)
     *         name: String (Optional)
     *         type: String (Optional)
     *     }
     *     endDef2 (Optional): (recursive schema, see endDef2 above)
     *     relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *     relationshipLabel: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param name The name of the type.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the type definition by its name (unique) along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getTypeDefinitionByNameWithResponse(String name, RequestOptions requestOptions) {
        return this.serviceClient.getTypeDefinitionByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Delete API for type identified by its name.
     *
     * @param name The name of the type.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the {@link Response} on successful completion of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<Void>> deleteTypeByNameWithResponse(String name, RequestOptions requestOptions) {
        return this.serviceClient.deleteTypeByNameWithResponseAsync(name, requestOptions);
    }

    /**
     * Get all type definitions in Atlas in bulk.
     *
     * <p><strong>Query Parameters</strong>
     *
     * <table border="1">
     *     <caption>Query Parameters</caption>
     *     <tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
     *     <tr><td>includeTermTemplate</td><td>Boolean</td><td>No</td><td>Whether include termtemplatedef when return all typedefs.
     * This is always true when search filter type=term_template</td></tr>
     *     <tr><td>type</td><td>String</td><td>No</td><td>Typedef name as search filter when get typedefs. Allowed values: "enum", "entity", "classification", "relationship", "struct", "term_template".</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     businessMetadataDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): {
     *                 availableLocales (Optional): [
     *                     String (Optional)
     *                 ]
     *                 calendar: Float (Optional)
     *                 dateInstance (Optional): (recursive schema, see dateInstance above)
     *                 dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *                 instance (Optional): (recursive schema, see instance above)
     *                 lenient: Boolean (Optional)
     *                 numberFormat (Optional): {
     *                     availableLocales (Optional): [
     *                         String (Optional)
     *                     ]
     *                     currency: String (Optional)
     *                     currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *                     groupingUsed: Boolean (Optional)
     *                     instance (Optional): (recursive schema, see instance above)
     *                     integerInstance (Optional): (recursive schema, see integerInstance above)
     *                     maximumFractionDigits: Integer (Optional)
     *                     maximumIntegerDigits: Integer (Optional)
     *                     minimumFractionDigits: Integer (Optional)
     *                     minimumIntegerDigits: Integer (Optional)
     *                     numberInstance (Optional): (recursive schema, see numberInstance above)
     *                     parseIntegerOnly: Boolean (Optional)
     *                     percentInstance (Optional): (recursive schema, see percentInstance above)
     *                     roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *                 }
     *                 timeInstance (Optional): (recursive schema, see timeInstance above)
     *                 timeZone (Optional): {
     *                     dstSavings: Integer (Optional)
     *                     id: String (Optional)
     *                     availableIds (Optional): [
     *                         String (Optional)
     *                     ]
     *                     default (Optional): (recursive schema, see default above)
     *                     displayName: String (Optional)
     *                     rawOffset: Integer (Optional)
     *                 }
     *             }
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                          (Optional){
     *                             params (Optional): {
     *                                 String: Object (Optional)
     *                             }
     *                             type: String (Optional)
     *                         }
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     classificationDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             entityTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *         }
     *     ]
     *     entityDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             relationshipAttributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                         (recursive schema, see above)
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                     isLegacyAttribute: Boolean (Optional)
     *                     relationshipTypeName: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     enumDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             defaultValue: String (Optional)
     *             elementDefs (Optional): [
     *                  (Optional){
     *                     description: String (Optional)
     *                     ordinal: Float (Optional)
     *                     value: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     relationshipDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             endDef1 (Optional): {
     *                 cardinality: String(SINGLE/LIST/SET) (Optional)
     *                 description: String (Optional)
     *                 isContainer: Boolean (Optional)
     *                 isLegacyAttribute: Boolean (Optional)
     *                 name: String (Optional)
     *                 type: String (Optional)
     *             }
     *             endDef2 (Optional): (recursive schema, see endDef2 above)
     *             relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *             relationshipLabel: String (Optional)
     *         }
     *     ]
     *     structDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     *     termTemplateDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return all type definitions in Atlas in bulk along with {@link Response} on successful completion of {@link
     *     Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getAllTypeDefinitionsWithResponse(RequestOptions requestOptions) {
        return this.serviceClient.getAllTypeDefinitionsWithResponseAsync(requestOptions);
    }

    /**
     * Create all atlas type definitions in bulk, only new definitions will be created. Any changes to the existing
     * definitions will be discarded.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     businessMetadataDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): {
     *                 availableLocales (Optional): [
     *                     String (Optional)
     *                 ]
     *                 calendar: Float (Optional)
     *                 dateInstance (Optional): (recursive schema, see dateInstance above)
     *                 dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *                 instance (Optional): (recursive schema, see instance above)
     *                 lenient: Boolean (Optional)
     *                 numberFormat (Optional): {
     *                     availableLocales (Optional): [
     *                         String (Optional)
     *                     ]
     *                     currency: String (Optional)
     *                     currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *                     groupingUsed: Boolean (Optional)
     *                     instance (Optional): (recursive schema, see instance above)
     *                     integerInstance (Optional): (recursive schema, see integerInstance above)
     *                     maximumFractionDigits: Integer (Optional)
     *                     maximumIntegerDigits: Integer (Optional)
     *                     minimumFractionDigits: Integer (Optional)
     *                     minimumIntegerDigits: Integer (Optional)
     *                     numberInstance (Optional): (recursive schema, see numberInstance above)
     *                     parseIntegerOnly: Boolean (Optional)
     *                     percentInstance (Optional): (recursive schema, see percentInstance above)
     *                     roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *                 }
     *                 timeInstance (Optional): (recursive schema, see timeInstance above)
     *                 timeZone (Optional): {
     *                     dstSavings: Integer (Optional)
     *                     id: String (Optional)
     *                     availableIds (Optional): [
     *                         String (Optional)
     *                     ]
     *                     default (Optional): (recursive schema, see default above)
     *                     displayName: String (Optional)
     *                     rawOffset: Integer (Optional)
     *                 }
     *             }
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                          (Optional){
     *                             params (Optional): {
     *                                 String: Object (Optional)
     *                             }
     *                             type: String (Optional)
     *                         }
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     classificationDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             entityTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *         }
     *     ]
     *     entityDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             relationshipAttributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                         (recursive schema, see above)
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                     isLegacyAttribute: Boolean (Optional)
     *                     relationshipTypeName: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     enumDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             defaultValue: String (Optional)
     *             elementDefs (Optional): [
     *                  (Optional){
     *                     description: String (Optional)
     *                     ordinal: Float (Optional)
     *                     value: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     relationshipDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             endDef1 (Optional): {
     *                 cardinality: String(SINGLE/LIST/SET) (Optional)
     *                 description: String (Optional)
     *                 isContainer: Boolean (Optional)
     *                 isLegacyAttribute: Boolean (Optional)
     *                 name: String (Optional)
     *                 type: String (Optional)
     *             }
     *             endDef2 (Optional): (recursive schema, see endDef2 above)
     *             relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *             relationshipLabel: String (Optional)
     *         }
     *     ]
     *     structDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     *     termTemplateDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     businessMetadataDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): {
     *                 availableLocales (Optional): [
     *                     String (Optional)
     *                 ]
     *                 calendar: Float (Optional)
     *                 dateInstance (Optional): (recursive schema, see dateInstance above)
     *                 dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *                 instance (Optional): (recursive schema, see instance above)
     *                 lenient: Boolean (Optional)
     *                 numberFormat (Optional): {
     *                     availableLocales (Optional): [
     *                         String (Optional)
     *                     ]
     *                     currency: String (Optional)
     *                     currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *                     groupingUsed: Boolean (Optional)
     *                     instance (Optional): (recursive schema, see instance above)
     *                     integerInstance (Optional): (recursive schema, see integerInstance above)
     *                     maximumFractionDigits: Integer (Optional)
     *                     maximumIntegerDigits: Integer (Optional)
     *                     minimumFractionDigits: Integer (Optional)
     *                     minimumIntegerDigits: Integer (Optional)
     *                     numberInstance (Optional): (recursive schema, see numberInstance above)
     *                     parseIntegerOnly: Boolean (Optional)
     *                     percentInstance (Optional): (recursive schema, see percentInstance above)
     *                     roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *                 }
     *                 timeInstance (Optional): (recursive schema, see timeInstance above)
     *                 timeZone (Optional): {
     *                     dstSavings: Integer (Optional)
     *                     id: String (Optional)
     *                     availableIds (Optional): [
     *                         String (Optional)
     *                     ]
     *                     default (Optional): (recursive schema, see default above)
     *                     displayName: String (Optional)
     *                     rawOffset: Integer (Optional)
     *                 }
     *             }
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                          (Optional){
     *                             params (Optional): {
     *                                 String: Object (Optional)
     *                             }
     *                             type: String (Optional)
     *                         }
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     classificationDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             entityTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *         }
     *     ]
     *     entityDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             relationshipAttributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                         (recursive schema, see above)
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                     isLegacyAttribute: Boolean (Optional)
     *                     relationshipTypeName: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     enumDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             defaultValue: String (Optional)
     *             elementDefs (Optional): [
     *                  (Optional){
     *                     description: String (Optional)
     *                     ordinal: Float (Optional)
     *                     value: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     relationshipDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             endDef1 (Optional): {
     *                 cardinality: String(SINGLE/LIST/SET) (Optional)
     *                 description: String (Optional)
     *                 isContainer: Boolean (Optional)
     *                 isLegacyAttribute: Boolean (Optional)
     *                 name: String (Optional)
     *                 type: String (Optional)
     *             }
     *             endDef2 (Optional): (recursive schema, see endDef2 above)
     *             relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *             relationshipLabel: String (Optional)
     *         }
     *     ]
     *     structDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     *     termTemplateDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param typesDef A composite wrapper object with corresponding lists of the type definition.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return atlasTypesDef along with {@link Response} on successful completion of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> createTypeDefinitionsWithResponse(
            BinaryData typesDef, RequestOptions requestOptions) {
        return this.serviceClient.createTypeDefinitionsWithResponseAsync(typesDef, requestOptions);
    }

    /**
     * Update all types in bulk, changes detected in the type definitions would be persisted.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     businessMetadataDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): {
     *                 availableLocales (Optional): [
     *                     String (Optional)
     *                 ]
     *                 calendar: Float (Optional)
     *                 dateInstance (Optional): (recursive schema, see dateInstance above)
     *                 dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *                 instance (Optional): (recursive schema, see instance above)
     *                 lenient: Boolean (Optional)
     *                 numberFormat (Optional): {
     *                     availableLocales (Optional): [
     *                         String (Optional)
     *                     ]
     *                     currency: String (Optional)
     *                     currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *                     groupingUsed: Boolean (Optional)
     *                     instance (Optional): (recursive schema, see instance above)
     *                     integerInstance (Optional): (recursive schema, see integerInstance above)
     *                     maximumFractionDigits: Integer (Optional)
     *                     maximumIntegerDigits: Integer (Optional)
     *                     minimumFractionDigits: Integer (Optional)
     *                     minimumIntegerDigits: Integer (Optional)
     *                     numberInstance (Optional): (recursive schema, see numberInstance above)
     *                     parseIntegerOnly: Boolean (Optional)
     *                     percentInstance (Optional): (recursive schema, see percentInstance above)
     *                     roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *                 }
     *                 timeInstance (Optional): (recursive schema, see timeInstance above)
     *                 timeZone (Optional): {
     *                     dstSavings: Integer (Optional)
     *                     id: String (Optional)
     *                     availableIds (Optional): [
     *                         String (Optional)
     *                     ]
     *                     default (Optional): (recursive schema, see default above)
     *                     displayName: String (Optional)
     *                     rawOffset: Integer (Optional)
     *                 }
     *             }
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                          (Optional){
     *                             params (Optional): {
     *                                 String: Object (Optional)
     *                             }
     *                             type: String (Optional)
     *                         }
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     classificationDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             entityTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *         }
     *     ]
     *     entityDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             relationshipAttributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                         (recursive schema, see above)
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                     isLegacyAttribute: Boolean (Optional)
     *                     relationshipTypeName: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     enumDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             defaultValue: String (Optional)
     *             elementDefs (Optional): [
     *                  (Optional){
     *                     description: String (Optional)
     *                     ordinal: Float (Optional)
     *                     value: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     relationshipDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             endDef1 (Optional): {
     *                 cardinality: String(SINGLE/LIST/SET) (Optional)
     *                 description: String (Optional)
     *                 isContainer: Boolean (Optional)
     *                 isLegacyAttribute: Boolean (Optional)
     *                 name: String (Optional)
     *                 type: String (Optional)
     *             }
     *             endDef2 (Optional): (recursive schema, see endDef2 above)
     *             relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *             relationshipLabel: String (Optional)
     *         }
     *     ]
     *     structDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     *     termTemplateDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     businessMetadataDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): {
     *                 availableLocales (Optional): [
     *                     String (Optional)
     *                 ]
     *                 calendar: Float (Optional)
     *                 dateInstance (Optional): (recursive schema, see dateInstance above)
     *                 dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *                 instance (Optional): (recursive schema, see instance above)
     *                 lenient: Boolean (Optional)
     *                 numberFormat (Optional): {
     *                     availableLocales (Optional): [
     *                         String (Optional)
     *                     ]
     *                     currency: String (Optional)
     *                     currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *                     groupingUsed: Boolean (Optional)
     *                     instance (Optional): (recursive schema, see instance above)
     *                     integerInstance (Optional): (recursive schema, see integerInstance above)
     *                     maximumFractionDigits: Integer (Optional)
     *                     maximumIntegerDigits: Integer (Optional)
     *                     minimumFractionDigits: Integer (Optional)
     *                     minimumIntegerDigits: Integer (Optional)
     *                     numberInstance (Optional): (recursive schema, see numberInstance above)
     *                     parseIntegerOnly: Boolean (Optional)
     *                     percentInstance (Optional): (recursive schema, see percentInstance above)
     *                     roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *                 }
     *                 timeInstance (Optional): (recursive schema, see timeInstance above)
     *                 timeZone (Optional): {
     *                     dstSavings: Integer (Optional)
     *                     id: String (Optional)
     *                     availableIds (Optional): [
     *                         String (Optional)
     *                     ]
     *                     default (Optional): (recursive schema, see default above)
     *                     displayName: String (Optional)
     *                     rawOffset: Integer (Optional)
     *                 }
     *             }
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                          (Optional){
     *                             params (Optional): {
     *                                 String: Object (Optional)
     *                             }
     *                             type: String (Optional)
     *                         }
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     classificationDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             entityTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *         }
     *     ]
     *     entityDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             relationshipAttributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                         (recursive schema, see above)
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                     isLegacyAttribute: Boolean (Optional)
     *                     relationshipTypeName: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     enumDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             defaultValue: String (Optional)
     *             elementDefs (Optional): [
     *                  (Optional){
     *                     description: String (Optional)
     *                     ordinal: Float (Optional)
     *                     value: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     relationshipDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             endDef1 (Optional): {
     *                 cardinality: String(SINGLE/LIST/SET) (Optional)
     *                 description: String (Optional)
     *                 isContainer: Boolean (Optional)
     *                 isLegacyAttribute: Boolean (Optional)
     *                 name: String (Optional)
     *                 type: String (Optional)
     *             }
     *             endDef2 (Optional): (recursive schema, see endDef2 above)
     *             relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *             relationshipLabel: String (Optional)
     *         }
     *     ]
     *     structDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     *     termTemplateDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param typesDef A composite object that captures all type definition changes.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return atlasTypesDef along with {@link Response} on successful completion of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> updateAtlasTypeDefinitionsWithResponse(
            BinaryData typesDef, RequestOptions requestOptions) {
        return this.serviceClient.updateAtlasTypeDefinitionsWithResponseAsync(typesDef, requestOptions);
    }

    /**
     * Delete API for all types in bulk.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     businessMetadataDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): {
     *                 availableLocales (Optional): [
     *                     String (Optional)
     *                 ]
     *                 calendar: Float (Optional)
     *                 dateInstance (Optional): (recursive schema, see dateInstance above)
     *                 dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *                 instance (Optional): (recursive schema, see instance above)
     *                 lenient: Boolean (Optional)
     *                 numberFormat (Optional): {
     *                     availableLocales (Optional): [
     *                         String (Optional)
     *                     ]
     *                     currency: String (Optional)
     *                     currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *                     groupingUsed: Boolean (Optional)
     *                     instance (Optional): (recursive schema, see instance above)
     *                     integerInstance (Optional): (recursive schema, see integerInstance above)
     *                     maximumFractionDigits: Integer (Optional)
     *                     maximumIntegerDigits: Integer (Optional)
     *                     minimumFractionDigits: Integer (Optional)
     *                     minimumIntegerDigits: Integer (Optional)
     *                     numberInstance (Optional): (recursive schema, see numberInstance above)
     *                     parseIntegerOnly: Boolean (Optional)
     *                     percentInstance (Optional): (recursive schema, see percentInstance above)
     *                     roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *                 }
     *                 timeInstance (Optional): (recursive schema, see timeInstance above)
     *                 timeZone (Optional): {
     *                     dstSavings: Integer (Optional)
     *                     id: String (Optional)
     *                     availableIds (Optional): [
     *                         String (Optional)
     *                     ]
     *                     default (Optional): (recursive schema, see default above)
     *                     displayName: String (Optional)
     *                     rawOffset: Integer (Optional)
     *                 }
     *             }
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                          (Optional){
     *                             params (Optional): {
     *                                 String: Object (Optional)
     *                             }
     *                             type: String (Optional)
     *                         }
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     classificationDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             entityTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *         }
     *     ]
     *     entityDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             subTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             superTypes (Optional): [
     *                 String (Optional)
     *             ]
     *             relationshipAttributeDefs (Optional): [
     *                  (Optional){
     *                     cardinality: String(SINGLE/LIST/SET) (Optional)
     *                     constraints (Optional): [
     *                         (recursive schema, see above)
     *                     ]
     *                     defaultValue: String (Optional)
     *                     description: String (Optional)
     *                     includeInNotification: Boolean (Optional)
     *                     isIndexable: Boolean (Optional)
     *                     isOptional: Boolean (Optional)
     *                     isUnique: Boolean (Optional)
     *                     name: String (Optional)
     *                     options (Optional): {
     *                         String: String (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     valuesMaxCount: Integer (Optional)
     *                     valuesMinCount: Integer (Optional)
     *                     isLegacyAttribute: Boolean (Optional)
     *                     relationshipTypeName: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     enumDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             defaultValue: String (Optional)
     *             elementDefs (Optional): [
     *                  (Optional){
     *                     description: String (Optional)
     *                     ordinal: Float (Optional)
     *                     value: String (Optional)
     *                 }
     *             ]
     *         }
     *     ]
     *     relationshipDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             endDef1 (Optional): {
     *                 cardinality: String(SINGLE/LIST/SET) (Optional)
     *                 description: String (Optional)
     *                 isContainer: Boolean (Optional)
     *                 isLegacyAttribute: Boolean (Optional)
     *                 name: String (Optional)
     *                 type: String (Optional)
     *             }
     *             endDef2 (Optional): (recursive schema, see endDef2 above)
     *             relationshipCategory: String(ASSOCIATION/AGGREGATION/COMPOSITION) (Optional)
     *             relationshipLabel: String (Optional)
     *         }
     *     ]
     *     structDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     *     termTemplateDefs (Optional): [
     *          (Optional){
     *             category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             dateFormatter (Optional): (recursive schema, see dateFormatter above)
     *             description: String (Optional)
     *             guid: String (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             serviceType: String (Optional)
     *             typeVersion: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             version: Float (Optional)
     *             lastModifiedTS: String (Optional)
     *             attributeDefs (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param typesDef A composite object that captures all types to be deleted.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the {@link Response} on successful completion of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<Void>> deleteTypeDefinitionsWithResponse(BinaryData typesDef, RequestOptions requestOptions) {
        return this.serviceClient.deleteTypeDefinitionsWithResponseAsync(typesDef, requestOptions);
    }

    /**
     * List all type definitions returned as a list of minimal information header.
     *
     * <p><strong>Query Parameters</strong>
     *
     * <table border="1">
     *     <caption>Query Parameters</caption>
     *     <tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
     *     <tr><td>includeTermTemplate</td><td>Boolean</td><td>No</td><td>Whether include termtemplatedef when return all typedefs.
     * This is always true when search filter type=term_template</td></tr>
     *     <tr><td>type</td><td>String</td><td>No</td><td>Typedef name as search filter when get typedefs. Allowed values: "enum", "entity", "classification", "relationship", "struct", "term_template".</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *         guid: String (Optional)
     *         name: String (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return an array of AtlasTypeDefHeader matching the search criteria or an empty list if no match along with
     *     {@link Response} on successful completion of {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> listTypeDefinitionHeadersWithResponse(RequestOptions requestOptions) {
        return this.serviceClient.listTypeDefinitionHeadersWithResponseAsync(requestOptions);
    }

    /**
     * Get the term template definition for the given GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param guid The globally unique identifier of the term template.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the term template definition for the given GUID along with {@link Response} on successful completion of
     *     {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getTermTemplateDefByGuidWithResponse(String guid, RequestOptions requestOptions) {
        return this.serviceClient.getTermTemplateDefByGuidWithResponseAsync(guid, requestOptions);
    }

    /**
     * Get the term template definition by its name (unique).
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     category: String(PRIMITIVE/OBJECT_ID_TYPE/ENUM/STRUCT/CLASSIFICATION/ENTITY/ARRAY/MAP/RELATIONSHIP/TERM_TEMPLATE) (Optional)
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     dateFormatter (Optional): {
     *         availableLocales (Optional): [
     *             String (Optional)
     *         ]
     *         calendar: Float (Optional)
     *         dateInstance (Optional): (recursive schema, see dateInstance above)
     *         dateTimeInstance (Optional): (recursive schema, see dateTimeInstance above)
     *         instance (Optional): (recursive schema, see instance above)
     *         lenient: Boolean (Optional)
     *         numberFormat (Optional): {
     *             availableLocales (Optional): [
     *                 String (Optional)
     *             ]
     *             currency: String (Optional)
     *             currencyInstance (Optional): (recursive schema, see currencyInstance above)
     *             groupingUsed: Boolean (Optional)
     *             instance (Optional): (recursive schema, see instance above)
     *             integerInstance (Optional): (recursive schema, see integerInstance above)
     *             maximumFractionDigits: Integer (Optional)
     *             maximumIntegerDigits: Integer (Optional)
     *             minimumFractionDigits: Integer (Optional)
     *             minimumIntegerDigits: Integer (Optional)
     *             numberInstance (Optional): (recursive schema, see numberInstance above)
     *             parseIntegerOnly: Boolean (Optional)
     *             percentInstance (Optional): (recursive schema, see percentInstance above)
     *             roundingMode: String(UP/DOWN/CEILING/FLOOR/HALF_UP/HALF_DOWN/HALF_EVEN/UNNECESSARY) (Optional)
     *         }
     *         timeInstance (Optional): (recursive schema, see timeInstance above)
     *         timeZone (Optional): {
     *             dstSavings: Integer (Optional)
     *             id: String (Optional)
     *             availableIds (Optional): [
     *                 String (Optional)
     *             ]
     *             default (Optional): (recursive schema, see default above)
     *             displayName: String (Optional)
     *             rawOffset: Integer (Optional)
     *         }
     *     }
     *     description: String (Optional)
     *     guid: String (Optional)
     *     name: String (Optional)
     *     options (Optional): {
     *         String: String (Optional)
     *     }
     *     serviceType: String (Optional)
     *     typeVersion: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     version: Float (Optional)
     *     lastModifiedTS: String (Optional)
     *     attributeDefs (Optional): [
     *          (Optional){
     *             cardinality: String(SINGLE/LIST/SET) (Optional)
     *             constraints (Optional): [
     *                  (Optional){
     *                     params (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     type: String (Optional)
     *                 }
     *             ]
     *             defaultValue: String (Optional)
     *             description: String (Optional)
     *             includeInNotification: Boolean (Optional)
     *             isIndexable: Boolean (Optional)
     *             isOptional: Boolean (Optional)
     *             isUnique: Boolean (Optional)
     *             name: String (Optional)
     *             options (Optional): {
     *                 String: String (Optional)
     *             }
     *             typeName: String (Optional)
     *             valuesMaxCount: Integer (Optional)
     *             valuesMinCount: Integer (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param name The name of the term template.
     * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
     * @throws HttpResponseException thrown if the request is rejected by server.
     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
     * @return the term template definition by its name (unique) along with {@link Response} on successful completion of
     *     {@link Mono}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Mono<Response<BinaryData>> getTermTemplateDefByNameWithResponse(String name, RequestOptions requestOptions) {
        return this.serviceClient.getTermTemplateDefByNameWithResponseAsync(name, requestOptions);
    }
}
