// 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.GlossariesImpl;
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 com.azure.core.util.polling.SyncPoller;

/** Initializes a new instance of the synchronous PurviewCatalogClient type. */
@ServiceClient(builder = GlossaryClientBuilder.class)
public final class GlossaryClient {
    @Generated private final GlossariesImpl serviceClient;

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

    /**
     * Get all glossaries registered with Atlas.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     *     <tr><td>ignoreTermsAndCategories</td><td>Boolean</td><td>No</td><td>Whether ignore terms and categories</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         categories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 parentCategoryGuid: String (Optional)
     *                 relationGuid: String (Optional)
     *             }
     *         ]
     *         language: String (Optional)
     *         terms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *         usage: 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 all glossaries registered with Atlas along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listGlossariesWithResponse(RequestOptions requestOptions) {
        return this.serviceClient.listGlossariesWithResponse(requestOptions);
    }

    /**
     * Create a glossary.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     language: String (Optional)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     usage: String (Optional)
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     language: String (Optional)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     usage: String (Optional)
     * }
     * }</pre>
     *
     * @param atlasGlossary Glossary definition, terms &amp; categories can be anchored to a glossary. Using the anchor
     *     attribute when creating the Term/Category.
     * @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 atlasGlossary along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> createGlossaryWithResponse(BinaryData atlasGlossary, RequestOptions requestOptions) {
        return this.serviceClient.createGlossaryWithResponse(atlasGlossary, requestOptions);
    }

    /**
     * Create glossary category in bulk.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         anchor (Optional): {
     *             displayText: String (Optional)
     *             glossaryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *         childrenCategories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 parentCategoryGuid: String (Optional)
     *                 relationGuid: String (Optional)
     *             }
     *         ]
     *         parentCategory (Optional): (recursive schema, see parentCategory above)
     *         terms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *     }
     * ]
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         anchor (Optional): {
     *             displayText: String (Optional)
     *             glossaryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *         childrenCategories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 parentCategoryGuid: String (Optional)
     *                 relationGuid: String (Optional)
     *             }
     *         ]
     *         parentCategory (Optional): (recursive schema, see parentCategory above)
     *         terms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *     }
     * ]
     * }</pre>
     *
     * @param glossaryCategory An array of glossary category definitions to be created.
     * @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 glossary category created successfully in bulk along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> createGlossaryCategoriesWithResponse(
            BinaryData glossaryCategory, RequestOptions requestOptions) {
        return this.serviceClient.createGlossaryCategoriesWithResponse(glossaryCategory, requestOptions);
    }

    /**
     * Create a glossary category.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     childrenCategories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     parentCategory (Optional): (recursive schema, see parentCategory above)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     childrenCategories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     parentCategory (Optional): (recursive schema, see parentCategory above)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param glossaryCategory The glossary category definition. A category must be anchored to a Glossary when
     *     creating. Optionally, terms belonging to the category and the hierarchy can also be defined during creation.
     * @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 atlasGlossaryCategory along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> createGlossaryCategoryWithResponse(
            BinaryData glossaryCategory, RequestOptions requestOptions) {
        return this.serviceClient.createGlossaryCategoryWithResponse(glossaryCategory, requestOptions);
    }

    /**
     * Get specific glossary category by its GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     childrenCategories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     parentCategory (Optional): (recursive schema, see parentCategory above)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param categoryGuid The globally unique identifier of the category.
     * @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 specific glossary category by its GUID along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> getGlossaryCategoryWithResponse(String categoryGuid, RequestOptions requestOptions) {
        return this.serviceClient.getGlossaryCategoryWithResponse(categoryGuid, requestOptions);
    }

    /**
     * Update the given glossary category by its GUID.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     childrenCategories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     parentCategory (Optional): (recursive schema, see parentCategory above)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     childrenCategories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     parentCategory (Optional): (recursive schema, see parentCategory above)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param categoryGuid The globally unique identifier of the category.
     * @param glossaryCategory The glossary category to be updated.
     * @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 atlasGlossaryCategory along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> updateGlossaryCategoryWithResponse(
            String categoryGuid, BinaryData glossaryCategory, RequestOptions requestOptions) {
        return this.serviceClient.updateGlossaryCategoryWithResponse(categoryGuid, glossaryCategory, requestOptions);
    }

    /**
     * Delete a glossary category.
     *
     * @param categoryGuid The globally unique identifier of the category.
     * @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}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<Void> deleteGlossaryCategoryWithResponse(String categoryGuid, RequestOptions requestOptions) {
        return this.serviceClient.deleteGlossaryCategoryWithResponse(categoryGuid, requestOptions);
    }

    /**
     * Update the glossary category partially.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     String: String (Required)
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     childrenCategories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     parentCategory (Optional): (recursive schema, see parentCategory above)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param categoryGuid The globally unique identifier of the category.
     * @param partialUpdates A map containing keys as attribute names and values as corresponding attribute values for
     *     partial update.
     * @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 atlasGlossaryCategory along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> partialUpdateGlossaryCategoryWithResponse(
            String categoryGuid, BinaryData partialUpdates, RequestOptions requestOptions) {
        return this.serviceClient.partialUpdateGlossaryCategoryWithResponse(
                categoryGuid, partialUpdates, requestOptions);
    }

    /**
     * Get all related categories (parent and children). Limit, offset, and sort parameters are currently not being
     * enabled and won't work even they are passed.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     String (Required): [
     *          (Required){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param categoryGuid The globally unique identifier of the category.
     * @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 related categories (parent and children) along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listRelatedCategoriesWithResponse(String categoryGuid, RequestOptions requestOptions) {
        return this.serviceClient.listRelatedCategoriesWithResponse(categoryGuid, requestOptions);
    }

    /**
     * Get all terms associated with the specific category.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         description: String (Optional)
     *         displayText: String (Optional)
     *         expression: String (Optional)
     *         relationGuid: String (Optional)
     *         source: String (Optional)
     *         status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         steward: String (Optional)
     *         termGuid: String (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param categoryGuid The globally unique identifier of the category.
     * @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 terms associated with the specific category along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listCategoryTermsWithResponse(String categoryGuid, RequestOptions requestOptions) {
        return this.serviceClient.listCategoryTermsWithResponse(categoryGuid, requestOptions);
    }

    /**
     * Create a glossary term.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     abbreviation: String (Optional)
     *     templateName (Optional): [
     *         Object (Optional)
     *     ]
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     antonyms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     status: String(Draft/Approved/Alert/Expired) (Optional)
     *     resources (Optional): [
     *          (Optional){
     *             displayName: String (Optional)
     *             url: String (Optional)
     *         }
     *     ]
     *     contacts (Optional): {
     *         String (Optional): [
     *              (Optional){
     *                 id: String (Optional)
     *                 info: String (Optional)
     *             }
     *         ]
     *     }
     *     attributes (Optional): {
     *         String (Optional): {
     *             String: Object (Optional)
     *         }
     *     }
     *     assignedEntities (Optional): [
     *          (Optional){
     *             guid: String (Optional)
     *             typeName: String (Optional)
     *             uniqueAttributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             displayText: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             relationshipType: String (Optional)
     *             relationshipAttributes (Optional): {
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *             }
     *             relationshipGuid: String (Optional)
     *             relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *         }
     *     ]
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             relationGuid: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         }
     *     ]
     *     classifies (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     examples (Optional): [
     *         String (Optional)
     *     ]
     *     isA (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredToTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacedBy (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacementTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     seeAlso (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     synonyms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translatedTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translationTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     usage: String (Optional)
     *     validValues (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     validValuesFor (Optional): [
     *         (recursive schema, see above)
     *     ]
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     abbreviation: String (Optional)
     *     templateName (Optional): [
     *         Object (Optional)
     *     ]
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     antonyms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     status: String(Draft/Approved/Alert/Expired) (Optional)
     *     resources (Optional): [
     *          (Optional){
     *             displayName: String (Optional)
     *             url: String (Optional)
     *         }
     *     ]
     *     contacts (Optional): {
     *         String (Optional): [
     *              (Optional){
     *                 id: String (Optional)
     *                 info: String (Optional)
     *             }
     *         ]
     *     }
     *     attributes (Optional): {
     *         String (Optional): {
     *             String: Object (Optional)
     *         }
     *     }
     *     assignedEntities (Optional): [
     *          (Optional){
     *             guid: String (Optional)
     *             typeName: String (Optional)
     *             uniqueAttributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             displayText: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             relationshipType: String (Optional)
     *             relationshipAttributes (Optional): {
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *             }
     *             relationshipGuid: String (Optional)
     *             relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *         }
     *     ]
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             relationGuid: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         }
     *     ]
     *     classifies (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     examples (Optional): [
     *         String (Optional)
     *     ]
     *     isA (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredToTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacedBy (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacementTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     seeAlso (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     synonyms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translatedTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translationTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     usage: String (Optional)
     *     validValues (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     validValuesFor (Optional): [
     *         (recursive schema, see above)
     *     ]
     * }
     * }</pre>
     *
     * @param glossaryTerm The glossary term definition. A term must be anchored to a Glossary at the time of creation.
     *     Optionally it can be categorized as well.
     * @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 atlasGlossaryTerm along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> createGlossaryTermWithResponse(BinaryData glossaryTerm, RequestOptions requestOptions) {
        return this.serviceClient.createGlossaryTermWithResponse(glossaryTerm, requestOptions);
    }

    /**
     * Get a specific glossary term by its GUID.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     *     <tr><td>excludeRelationshipTypes</td><td>List&lt;String&gt;</td><td>No</td><td>An array of relationship types which need to be excluded. Call {@link RequestOptions#addQueryParam} to add string to array.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     abbreviation: String (Optional)
     *     templateName (Optional): [
     *         Object (Optional)
     *     ]
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     antonyms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     status: String(Draft/Approved/Alert/Expired) (Optional)
     *     resources (Optional): [
     *          (Optional){
     *             displayName: String (Optional)
     *             url: String (Optional)
     *         }
     *     ]
     *     contacts (Optional): {
     *         String (Optional): [
     *              (Optional){
     *                 id: String (Optional)
     *                 info: String (Optional)
     *             }
     *         ]
     *     }
     *     attributes (Optional): {
     *         String (Optional): {
     *             String: Object (Optional)
     *         }
     *     }
     *     assignedEntities (Optional): [
     *          (Optional){
     *             guid: String (Optional)
     *             typeName: String (Optional)
     *             uniqueAttributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             displayText: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             relationshipType: String (Optional)
     *             relationshipAttributes (Optional): {
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *             }
     *             relationshipGuid: String (Optional)
     *             relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *         }
     *     ]
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             relationGuid: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         }
     *     ]
     *     classifies (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     examples (Optional): [
     *         String (Optional)
     *     ]
     *     isA (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredToTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacedBy (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacementTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     seeAlso (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     synonyms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translatedTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translationTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     usage: String (Optional)
     *     validValues (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     validValuesFor (Optional): [
     *         (recursive schema, see above)
     *     ]
     * }
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @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 a specific glossary term by its GUID along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> getGlossaryTermWithResponse(String termGuid, RequestOptions requestOptions) {
        return this.serviceClient.getGlossaryTermWithResponse(termGuid, requestOptions);
    }

    /**
     * Update the given glossary term by its GUID.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     abbreviation: String (Optional)
     *     templateName (Optional): [
     *         Object (Optional)
     *     ]
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     antonyms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     status: String(Draft/Approved/Alert/Expired) (Optional)
     *     resources (Optional): [
     *          (Optional){
     *             displayName: String (Optional)
     *             url: String (Optional)
     *         }
     *     ]
     *     contacts (Optional): {
     *         String (Optional): [
     *              (Optional){
     *                 id: String (Optional)
     *                 info: String (Optional)
     *             }
     *         ]
     *     }
     *     attributes (Optional): {
     *         String (Optional): {
     *             String: Object (Optional)
     *         }
     *     }
     *     assignedEntities (Optional): [
     *          (Optional){
     *             guid: String (Optional)
     *             typeName: String (Optional)
     *             uniqueAttributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             displayText: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             relationshipType: String (Optional)
     *             relationshipAttributes (Optional): {
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *             }
     *             relationshipGuid: String (Optional)
     *             relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *         }
     *     ]
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             relationGuid: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         }
     *     ]
     *     classifies (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     examples (Optional): [
     *         String (Optional)
     *     ]
     *     isA (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredToTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacedBy (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacementTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     seeAlso (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     synonyms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translatedTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translationTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     usage: String (Optional)
     *     validValues (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     validValuesFor (Optional): [
     *         (recursive schema, see above)
     *     ]
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     abbreviation: String (Optional)
     *     templateName (Optional): [
     *         Object (Optional)
     *     ]
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     antonyms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     status: String(Draft/Approved/Alert/Expired) (Optional)
     *     resources (Optional): [
     *          (Optional){
     *             displayName: String (Optional)
     *             url: String (Optional)
     *         }
     *     ]
     *     contacts (Optional): {
     *         String (Optional): [
     *              (Optional){
     *                 id: String (Optional)
     *                 info: String (Optional)
     *             }
     *         ]
     *     }
     *     attributes (Optional): {
     *         String (Optional): {
     *             String: Object (Optional)
     *         }
     *     }
     *     assignedEntities (Optional): [
     *          (Optional){
     *             guid: String (Optional)
     *             typeName: String (Optional)
     *             uniqueAttributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             displayText: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             relationshipType: String (Optional)
     *             relationshipAttributes (Optional): {
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *             }
     *             relationshipGuid: String (Optional)
     *             relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *         }
     *     ]
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             relationGuid: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         }
     *     ]
     *     classifies (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     examples (Optional): [
     *         String (Optional)
     *     ]
     *     isA (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredToTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacedBy (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacementTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     seeAlso (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     synonyms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translatedTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translationTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     usage: String (Optional)
     *     validValues (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     validValuesFor (Optional): [
     *         (recursive schema, see above)
     *     ]
     * }
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @param glossaryTerm The glossary term to be updated.
     * @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 atlasGlossaryTerm along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> updateGlossaryTermWithResponse(
            String termGuid, BinaryData glossaryTerm, RequestOptions requestOptions) {
        return this.serviceClient.updateGlossaryTermWithResponse(termGuid, glossaryTerm, requestOptions);
    }

    /**
     * Delete a glossary term.
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @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}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<Void> deleteGlossaryTermWithResponse(String termGuid, RequestOptions requestOptions) {
        return this.serviceClient.deleteGlossaryTermWithResponse(termGuid, requestOptions);
    }

    /**
     * Update the glossary term partially.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     String: String (Required)
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     abbreviation: String (Optional)
     *     templateName (Optional): [
     *         Object (Optional)
     *     ]
     *     anchor (Optional): {
     *         displayText: String (Optional)
     *         glossaryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     *     antonyms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     createTime: Float (Optional)
     *     createdBy: String (Optional)
     *     updateTime: Float (Optional)
     *     updatedBy: String (Optional)
     *     status: String(Draft/Approved/Alert/Expired) (Optional)
     *     resources (Optional): [
     *          (Optional){
     *             displayName: String (Optional)
     *             url: String (Optional)
     *         }
     *     ]
     *     contacts (Optional): {
     *         String (Optional): [
     *              (Optional){
     *                 id: String (Optional)
     *                 info: String (Optional)
     *             }
     *         ]
     *     }
     *     attributes (Optional): {
     *         String (Optional): {
     *             String: Object (Optional)
     *         }
     *     }
     *     assignedEntities (Optional): [
     *          (Optional){
     *             guid: String (Optional)
     *             typeName: String (Optional)
     *             uniqueAttributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             displayText: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             relationshipType: String (Optional)
     *             relationshipAttributes (Optional): {
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *             }
     *             relationshipGuid: String (Optional)
     *             relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *         }
     *     ]
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             relationGuid: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         }
     *     ]
     *     classifies (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     examples (Optional): [
     *         String (Optional)
     *     ]
     *     isA (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     preferredToTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacedBy (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     replacementTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     seeAlso (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     synonyms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translatedTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     translationTerms (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     usage: String (Optional)
     *     validValues (Optional): [
     *         (recursive schema, see above)
     *     ]
     *     validValuesFor (Optional): [
     *         (recursive schema, see above)
     *     ]
     * }
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @param partialUpdates A map containing keys as attribute names and values as corresponding attribute values to be
     *     updated.
     * @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 atlasGlossaryTerm along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> partialUpdateGlossaryTermWithResponse(
            String termGuid, BinaryData partialUpdates, RequestOptions requestOptions) {
        return this.serviceClient.partialUpdateGlossaryTermWithResponse(termGuid, partialUpdates, requestOptions);
    }

    /**
     * Create glossary terms 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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         abbreviation: String (Optional)
     *         templateName (Optional): [
     *             Object (Optional)
     *         ]
     *         anchor (Optional): {
     *             displayText: String (Optional)
     *             glossaryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *         antonyms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *         createTime: Float (Optional)
     *         createdBy: String (Optional)
     *         updateTime: Float (Optional)
     *         updatedBy: String (Optional)
     *         status: String(Draft/Approved/Alert/Expired) (Optional)
     *         resources (Optional): [
     *              (Optional){
     *                 displayName: String (Optional)
     *                 url: String (Optional)
     *             }
     *         ]
     *         contacts (Optional): {
     *             String (Optional): [
     *                  (Optional){
     *                     id: String (Optional)
     *                     info: String (Optional)
     *                 }
     *             ]
     *         }
     *         attributes (Optional): {
     *             String (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *         assignedEntities (Optional): [
     *              (Optional){
     *                 guid: String (Optional)
     *                 typeName: String (Optional)
     *                 uniqueAttributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 displayText: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 relationshipType: String (Optional)
     *                 relationshipAttributes (Optional): {
     *                     attributes (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     lastModifiedTS: String (Optional)
     *                 }
     *                 relationshipGuid: String (Optional)
     *                 relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *             }
     *         ]
     *         categories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 relationGuid: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             }
     *         ]
     *         classifies (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         examples (Optional): [
     *             String (Optional)
     *         ]
     *         isA (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredToTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacedBy (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacementTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         seeAlso (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         synonyms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translatedTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translationTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         usage: String (Optional)
     *         validValues (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         validValuesFor (Optional): [
     *             (recursive schema, see above)
     *         ]
     *     }
     * ]
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         abbreviation: String (Optional)
     *         templateName (Optional): [
     *             Object (Optional)
     *         ]
     *         anchor (Optional): {
     *             displayText: String (Optional)
     *             glossaryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *         antonyms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *         createTime: Float (Optional)
     *         createdBy: String (Optional)
     *         updateTime: Float (Optional)
     *         updatedBy: String (Optional)
     *         status: String(Draft/Approved/Alert/Expired) (Optional)
     *         resources (Optional): [
     *              (Optional){
     *                 displayName: String (Optional)
     *                 url: String (Optional)
     *             }
     *         ]
     *         contacts (Optional): {
     *             String (Optional): [
     *                  (Optional){
     *                     id: String (Optional)
     *                     info: String (Optional)
     *                 }
     *             ]
     *         }
     *         attributes (Optional): {
     *             String (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *         assignedEntities (Optional): [
     *              (Optional){
     *                 guid: String (Optional)
     *                 typeName: String (Optional)
     *                 uniqueAttributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 displayText: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 relationshipType: String (Optional)
     *                 relationshipAttributes (Optional): {
     *                     attributes (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     lastModifiedTS: String (Optional)
     *                 }
     *                 relationshipGuid: String (Optional)
     *                 relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *             }
     *         ]
     *         categories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 relationGuid: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             }
     *         ]
     *         classifies (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         examples (Optional): [
     *             String (Optional)
     *         ]
     *         isA (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredToTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacedBy (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacementTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         seeAlso (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         synonyms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translatedTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translationTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         usage: String (Optional)
     *         validValues (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         validValuesFor (Optional): [
     *             (recursive schema, see above)
     *         ]
     *     }
     * ]
     * }</pre>
     *
     * @param glossaryTerm An array of glossary term definitions to be created in bulk.
     * @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 if bulk glossary terms creation was successful along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> createGlossaryTermsWithResponse(
            BinaryData glossaryTerm, RequestOptions requestOptions) {
        return this.serviceClient.createGlossaryTermsWithResponse(glossaryTerm, requestOptions);
    }

    /**
     * Get all related objects assigned with the specified term.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         typeName: String (Optional)
     *         uniqueAttributes (Optional): {
     *             String: Object (Optional)
     *         }
     *         displayText: String (Optional)
     *         entityStatus: String(ACTIVE/DELETED) (Optional)
     *         relationshipType: String (Optional)
     *         relationshipAttributes (Optional): {
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *         }
     *         relationshipGuid: String (Optional)
     *         relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @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 related objects assigned with the specified term along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> getEntitiesAssignedWithTermWithResponse(
            String termGuid, RequestOptions requestOptions) {
        return this.serviceClient.getEntitiesAssignedWithTermWithResponse(termGuid, requestOptions);
    }

    /**
     * Assign the given term to the provided list of related objects.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         typeName: String (Optional)
     *         uniqueAttributes (Optional): {
     *             String: Object (Optional)
     *         }
     *         displayText: String (Optional)
     *         entityStatus: String(ACTIVE/DELETED) (Optional)
     *         relationshipType: String (Optional)
     *         relationshipAttributes (Optional): {
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *         }
     *         relationshipGuid: String (Optional)
     *         relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @param relatedObjectIds An array of related object IDs to which the term has to be associated.
     * @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}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<Void> assignTermToEntitiesWithResponse(
            String termGuid, BinaryData relatedObjectIds, RequestOptions requestOptions) {
        return this.serviceClient.assignTermToEntitiesWithResponse(termGuid, relatedObjectIds, requestOptions);
    }

    /**
     * Delete the term assignment for the given list of related objects.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         typeName: String (Optional)
     *         uniqueAttributes (Optional): {
     *             String: Object (Optional)
     *         }
     *         displayText: String (Optional)
     *         entityStatus: String(ACTIVE/DELETED) (Optional)
     *         relationshipType: String (Optional)
     *         relationshipAttributes (Optional): {
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *         }
     *         relationshipGuid: String (Optional)
     *         relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @param relatedObjectIds An array of related object IDs from which the term has to be dissociated.
     * @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}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<Void> removeTermAssignmentFromEntitiesWithResponse(
            String termGuid, BinaryData relatedObjectIds, RequestOptions requestOptions) {
        return this.serviceClient.removeTermAssignmentFromEntitiesWithResponse(
                termGuid, relatedObjectIds, requestOptions);
    }

    /**
     * Delete the term assignment for the given list of related objects.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         typeName: String (Optional)
     *         uniqueAttributes (Optional): {
     *             String: Object (Optional)
     *         }
     *         displayText: String (Optional)
     *         entityStatus: String(ACTIVE/DELETED) (Optional)
     *         relationshipType: String (Optional)
     *         relationshipAttributes (Optional): {
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *         }
     *         relationshipGuid: String (Optional)
     *         relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @param relatedObjectIds An array of related object IDs from which the term has to be dissociated.
     * @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}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<Void> deleteTermAssignmentFromEntitiesWithResponse(
            String termGuid, BinaryData relatedObjectIds, RequestOptions requestOptions) {
        return this.serviceClient.deleteTermAssignmentFromEntitiesWithResponse(
                termGuid, relatedObjectIds, requestOptions);
    }

    /**
     * Get all related terms for a specific term by its GUID. Limit, offset, and sort parameters are currently not being
     * enabled and won't work even they are passed.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     String (Required): [
     *          (Required){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     * }
     * }</pre>
     *
     * @param termGuid The globally unique identifier for glossary term.
     * @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 related terms for a specific term by its GUID along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listRelatedTermsWithResponse(String termGuid, RequestOptions requestOptions) {
        return this.serviceClient.listRelatedTermsWithResponse(termGuid, requestOptions);
    }

    /**
     * Get a specific Glossary by its GUID.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     language: String (Optional)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     usage: String (Optional)
     * }
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @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 a specific Glossary by its GUID along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> getGlossaryWithResponse(String glossaryGuid, RequestOptions requestOptions) {
        return this.serviceClient.getGlossaryWithResponse(glossaryGuid, requestOptions);
    }

    /**
     * Update the given glossary.
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     language: String (Optional)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     usage: String (Optional)
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     language: String (Optional)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     usage: String (Optional)
     * }
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @param updatedGlossary The glossary definition to be updated.
     * @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 atlasGlossary along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> updateGlossaryWithResponse(
            String glossaryGuid, BinaryData updatedGlossary, RequestOptions requestOptions) {
        return this.serviceClient.updateGlossaryWithResponse(glossaryGuid, updatedGlossary, requestOptions);
    }

    /**
     * Delete a glossary.
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @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}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<Void> deleteGlossaryWithResponse(String glossaryGuid, RequestOptions requestOptions) {
        return this.serviceClient.deleteGlossaryWithResponse(glossaryGuid, requestOptions);
    }

    /**
     * Get the categories belonging to a specific glossary.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         anchor (Optional): {
     *             displayText: String (Optional)
     *             glossaryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *         childrenCategories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 parentCategoryGuid: String (Optional)
     *                 relationGuid: String (Optional)
     *             }
     *         ]
     *         parentCategory (Optional): (recursive schema, see parentCategory above)
     *         terms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *     }
     * ]
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @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 categories belonging to a specific glossary along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listGlossaryCategoriesWithResponse(String glossaryGuid, RequestOptions requestOptions) {
        return this.serviceClient.listGlossaryCategoriesWithResponse(glossaryGuid, requestOptions);
    }

    /**
     * Get the category headers belonging to a specific glossary.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         categoryGuid: String (Optional)
     *         description: String (Optional)
     *         displayText: String (Optional)
     *         parentCategoryGuid: String (Optional)
     *         relationGuid: String (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @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 category headers belonging to a specific glossary along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listGlossaryCategoriesHeadersWithResponse(
            String glossaryGuid, RequestOptions requestOptions) {
        return this.serviceClient.listGlossaryCategoriesHeadersWithResponse(glossaryGuid, requestOptions);
    }

    /**
     * Get a specific glossary with detailed information.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     language: String (Optional)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     usage: String (Optional)
     *     categoryInfo (Optional): {
     *         String (Optional): {
     *             guid: String (Optional)
     *             classifications (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             longDescription: String (Optional)
     *             name: String (Optional)
     *             qualifiedName: String (Optional)
     *             shortDescription: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             anchor (Optional): {
     *                 displayText: String (Optional)
     *                 glossaryGuid: String (Optional)
     *                 relationGuid: String (Optional)
     *             }
     *             childrenCategories (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             parentCategory (Optional): (recursive schema, see parentCategory above)
     *             terms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     }
     *     termInfo (Optional): {
     *         String (Optional): {
     *             guid: String (Optional)
     *             classifications (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             longDescription: String (Optional)
     *             name: String (Optional)
     *             qualifiedName: String (Optional)
     *             shortDescription: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             abbreviation: String (Optional)
     *             templateName (Optional): [
     *                 Object (Optional)
     *             ]
     *             anchor (Optional): (recursive schema, see anchor above)
     *             antonyms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             createTime: Float (Optional)
     *             createdBy: String (Optional)
     *             updateTime: Float (Optional)
     *             updatedBy: String (Optional)
     *             status: String(Draft/Approved/Alert/Expired) (Optional)
     *             resources (Optional): [
     *                  (Optional){
     *                     displayName: String (Optional)
     *                     url: String (Optional)
     *                 }
     *             ]
     *             contacts (Optional): {
     *                 String (Optional): [
     *                      (Optional){
     *                         id: String (Optional)
     *                         info: String (Optional)
     *                     }
     *                 ]
     *             }
     *             attributes (Optional): {
     *                 String (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *             assignedEntities (Optional): [
     *                  (Optional){
     *                     guid: String (Optional)
     *                     typeName: String (Optional)
     *                     uniqueAttributes (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     displayText: String (Optional)
     *                     entityStatus: String(ACTIVE/DELETED) (Optional)
     *                     relationshipType: String (Optional)
     *                     relationshipAttributes (Optional): {
     *                         attributes (Optional): {
     *                             String: Object (Optional)
     *                         }
     *                         typeName: String (Optional)
     *                         lastModifiedTS: String (Optional)
     *                     }
     *                     relationshipGuid: String (Optional)
     *                     relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *                 }
     *             ]
     *             categories (Optional): [
     *                  (Optional){
     *                     categoryGuid: String (Optional)
     *                     description: String (Optional)
     *                     displayText: String (Optional)
     *                     relationGuid: String (Optional)
     *                     status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 }
     *             ]
     *             classifies (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             examples (Optional): [
     *                 String (Optional)
     *             ]
     *             isA (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             preferredTerms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             preferredToTerms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             replacedBy (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             replacementTerms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             seeAlso (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             synonyms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             translatedTerms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             translationTerms (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             usage: String (Optional)
     *             validValues (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *             validValuesFor (Optional): [
     *                 (recursive schema, see above)
     *             ]
     *         }
     *     }
     * }
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @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 a specific glossary with detailed information along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> getDetailedGlossaryWithResponse(String glossaryGuid, RequestOptions requestOptions) {
        return this.serviceClient.getDetailedGlossaryWithResponse(glossaryGuid, requestOptions);
    }

    /**
     * Update the glossary partially. Some properties such as qualifiedName are not allowed to be updated.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     String: String (Required)
     * }
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     guid: String (Optional)
     *     classifications (Optional): [
     *          (Optional){
     *             attributes (Optional): {
     *                 String: Object (Optional)
     *             }
     *             typeName: String (Optional)
     *             lastModifiedTS: String (Optional)
     *             entityGuid: String (Optional)
     *             entityStatus: String(ACTIVE/DELETED) (Optional)
     *             removePropagationsOnEntityDelete: Boolean (Optional)
     *             validityPeriods (Optional): [
     *                  (Optional){
     *                     endTime: String (Optional)
     *                     startTime: String (Optional)
     *                     timeZone: String (Optional)
     *                 }
     *             ]
     *             source: String (Optional)
     *             sourceDetails (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *     ]
     *     longDescription: String (Optional)
     *     name: String (Optional)
     *     qualifiedName: String (Optional)
     *     shortDescription: String (Optional)
     *     lastModifiedTS: String (Optional)
     *     categories (Optional): [
     *          (Optional){
     *             categoryGuid: String (Optional)
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             parentCategoryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *     ]
     *     language: String (Optional)
     *     terms (Optional): [
     *          (Optional){
     *             description: String (Optional)
     *             displayText: String (Optional)
     *             expression: String (Optional)
     *             relationGuid: String (Optional)
     *             source: String (Optional)
     *             status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             steward: String (Optional)
     *             termGuid: String (Optional)
     *         }
     *     ]
     *     usage: String (Optional)
     * }
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @param partialUpdates A map containing keys as attribute names and values as corresponding attribute values.
     * @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 atlasGlossary along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> partialUpdateGlossaryWithResponse(
            String glossaryGuid, BinaryData partialUpdates, RequestOptions requestOptions) {
        return this.serviceClient.partialUpdateGlossaryWithResponse(glossaryGuid, partialUpdates, requestOptions);
    }

    /**
     * Get terms belonging to a specific glossary.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     *     <tr><td>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         abbreviation: String (Optional)
     *         templateName (Optional): [
     *             Object (Optional)
     *         ]
     *         anchor (Optional): {
     *             displayText: String (Optional)
     *             glossaryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *         antonyms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *         createTime: Float (Optional)
     *         createdBy: String (Optional)
     *         updateTime: Float (Optional)
     *         updatedBy: String (Optional)
     *         status: String(Draft/Approved/Alert/Expired) (Optional)
     *         resources (Optional): [
     *              (Optional){
     *                 displayName: String (Optional)
     *                 url: String (Optional)
     *             }
     *         ]
     *         contacts (Optional): {
     *             String (Optional): [
     *                  (Optional){
     *                     id: String (Optional)
     *                     info: String (Optional)
     *                 }
     *             ]
     *         }
     *         attributes (Optional): {
     *             String (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *         assignedEntities (Optional): [
     *              (Optional){
     *                 guid: String (Optional)
     *                 typeName: String (Optional)
     *                 uniqueAttributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 displayText: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 relationshipType: String (Optional)
     *                 relationshipAttributes (Optional): {
     *                     attributes (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     lastModifiedTS: String (Optional)
     *                 }
     *                 relationshipGuid: String (Optional)
     *                 relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *             }
     *         ]
     *         categories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 relationGuid: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             }
     *         ]
     *         classifies (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         examples (Optional): [
     *             String (Optional)
     *         ]
     *         isA (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredToTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacedBy (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacementTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         seeAlso (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         synonyms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translatedTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translationTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         usage: String (Optional)
     *         validValues (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         validValuesFor (Optional): [
     *             (recursive schema, see above)
     *         ]
     *     }
     * ]
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @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 terms belonging to a specific glossary along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listGlossaryTermsWithResponse(String glossaryGuid, RequestOptions requestOptions) {
        return this.serviceClient.listGlossaryTermsWithResponse(glossaryGuid, requestOptions);
    }

    /**
     * Get term headers belonging to a specific glossary.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>sort</td><td>String</td><td>No</td><td>The sort order, ASC (default) or DESC.</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         description: String (Optional)
     *         displayText: String (Optional)
     *         expression: String (Optional)
     *         relationGuid: String (Optional)
     *         source: String (Optional)
     *         status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *         steward: String (Optional)
     *         termGuid: String (Optional)
     *     }
     * ]
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @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 term headers belonging to a specific glossary along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listGlossaryTermHeadersWithResponse(
            String glossaryGuid, RequestOptions requestOptions) {
        return this.serviceClient.listGlossaryTermHeadersWithResponse(glossaryGuid, requestOptions);
    }

    /**
     * Import Glossary Terms from local csv file.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * BinaryData
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     id: String (Optional)
     *     status: String(NotStarted/Succeeded/Failed/Running) (Optional)
     *     createTime: String (Optional)
     *     lastUpdateTime: String (Optional)
     *     properties (Optional): {
     *         importedTerms: String (Optional)
     *         totalTermsDetected: String (Optional)
     *     }
     *     error (Optional): {
     *         errorCode: Integer (Optional)
     *         errorMessage: String (Optional)
     *     }
     * }
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @param file The csv file to import glossary terms from.
     * @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 SyncPoller} for polling of status of import csv operation.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    public SyncPoller<BinaryData, BinaryData> beginImportGlossaryTermsViaCsv(
            String glossaryGuid, BinaryData file, RequestOptions requestOptions) {
        return this.serviceClient.beginImportGlossaryTermsViaCsv(glossaryGuid, file, requestOptions);
    }

    /**
     * Import Glossary Terms from local csv file by glossaryName.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * BinaryData
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     id: String (Optional)
     *     status: String(NotStarted/Succeeded/Failed/Running) (Optional)
     *     createTime: String (Optional)
     *     lastUpdateTime: String (Optional)
     *     properties (Optional): {
     *         importedTerms: String (Optional)
     *         totalTermsDetected: String (Optional)
     *     }
     *     error (Optional): {
     *         errorCode: Integer (Optional)
     *         errorMessage: String (Optional)
     *     }
     * }
     * }</pre>
     *
     * @param glossaryName The name of the glossary.
     * @param file The csv file to import glossary terms from.
     * @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 SyncPoller} for polling of status of import csv operation.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    public SyncPoller<BinaryData, BinaryData> beginImportGlossaryTermsViaCsvByGlossaryName(
            String glossaryName, BinaryData file, RequestOptions requestOptions) {
        return this.serviceClient.beginImportGlossaryTermsViaCsvByGlossaryName(glossaryName, file, requestOptions);
    }

    /**
     * Get the status of import csv operation.
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * {
     *     id: String (Optional)
     *     status: String(NotStarted/Succeeded/Failed/Running) (Optional)
     *     createTime: String (Optional)
     *     lastUpdateTime: String (Optional)
     *     properties (Optional): {
     *         importedTerms: String (Optional)
     *         totalTermsDetected: String (Optional)
     *     }
     *     error (Optional): {
     *         errorCode: Integer (Optional)
     *         errorMessage: String (Optional)
     *     }
     * }
     * }</pre>
     *
     * @param operationGuid The globally unique identifier for async operation/job.
     * @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 status of import csv operation along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> getImportCsvOperationStatusWithResponse(
            String operationGuid, RequestOptions requestOptions) {
        return this.serviceClient.getImportCsvOperationStatusWithResponse(operationGuid, requestOptions);
    }

    /**
     * Export Glossary Terms as csv file.
     *
     * <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>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Request Body Schema</strong>
     *
     * <pre>{@code
     * [
     *     String (Required)
     * ]
     * }</pre>
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * BinaryData
     * }</pre>
     *
     * @param glossaryGuid The globally unique identifier for glossary.
     * @param termGuids An array of term guids.
     * @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 response body along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> exportGlossaryTermsAsCsvWithResponse(
            String glossaryGuid, BinaryData termGuids, RequestOptions requestOptions) {
        return this.serviceClient.exportGlossaryTermsAsCsvWithResponse(glossaryGuid, termGuids, requestOptions);
    }

    /**
     * Get terms by glossary name.
     *
     * <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>limit</td><td>Integer</td><td>No</td><td>The page size - by default there is no paging.</td></tr>
     *     <tr><td>offset</td><td>Integer</td><td>No</td><td>The offset for pagination purpose.</td></tr>
     *     <tr><td>includeTermHierarchy</td><td>Boolean</td><td>No</td><td>Whether include term hierarchy</td></tr>
     * </table>
     *
     * You can add these to a request with {@link RequestOptions#addQueryParam}
     *
     * <p><strong>Response Body Schema</strong>
     *
     * <pre>{@code
     * [
     *      (Required){
     *         guid: String (Optional)
     *         classifications (Optional): [
     *              (Optional){
     *                 attributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 typeName: String (Optional)
     *                 lastModifiedTS: String (Optional)
     *                 entityGuid: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 removePropagationsOnEntityDelete: Boolean (Optional)
     *                 validityPeriods (Optional): [
     *                      (Optional){
     *                         endTime: String (Optional)
     *                         startTime: String (Optional)
     *                         timeZone: String (Optional)
     *                     }
     *                 ]
     *                 source: String (Optional)
     *                 sourceDetails (Optional): {
     *                     String: Object (Optional)
     *                 }
     *             }
     *         ]
     *         longDescription: String (Optional)
     *         name: String (Optional)
     *         qualifiedName: String (Optional)
     *         shortDescription: String (Optional)
     *         lastModifiedTS: String (Optional)
     *         abbreviation: String (Optional)
     *         templateName (Optional): [
     *             Object (Optional)
     *         ]
     *         anchor (Optional): {
     *             displayText: String (Optional)
     *             glossaryGuid: String (Optional)
     *             relationGuid: String (Optional)
     *         }
     *         antonyms (Optional): [
     *              (Optional){
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 expression: String (Optional)
     *                 relationGuid: String (Optional)
     *                 source: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *                 steward: String (Optional)
     *                 termGuid: String (Optional)
     *             }
     *         ]
     *         createTime: Float (Optional)
     *         createdBy: String (Optional)
     *         updateTime: Float (Optional)
     *         updatedBy: String (Optional)
     *         status: String(Draft/Approved/Alert/Expired) (Optional)
     *         resources (Optional): [
     *              (Optional){
     *                 displayName: String (Optional)
     *                 url: String (Optional)
     *             }
     *         ]
     *         contacts (Optional): {
     *             String (Optional): [
     *                  (Optional){
     *                     id: String (Optional)
     *                     info: String (Optional)
     *                 }
     *             ]
     *         }
     *         attributes (Optional): {
     *             String (Optional): {
     *                 String: Object (Optional)
     *             }
     *         }
     *         assignedEntities (Optional): [
     *              (Optional){
     *                 guid: String (Optional)
     *                 typeName: String (Optional)
     *                 uniqueAttributes (Optional): {
     *                     String: Object (Optional)
     *                 }
     *                 displayText: String (Optional)
     *                 entityStatus: String(ACTIVE/DELETED) (Optional)
     *                 relationshipType: String (Optional)
     *                 relationshipAttributes (Optional): {
     *                     attributes (Optional): {
     *                         String: Object (Optional)
     *                     }
     *                     typeName: String (Optional)
     *                     lastModifiedTS: String (Optional)
     *                 }
     *                 relationshipGuid: String (Optional)
     *                 relationshipStatus: String(ACTIVE/DELETED) (Optional)
     *             }
     *         ]
     *         categories (Optional): [
     *              (Optional){
     *                 categoryGuid: String (Optional)
     *                 description: String (Optional)
     *                 displayText: String (Optional)
     *                 relationGuid: String (Optional)
     *                 status: String(DRAFT/ACTIVE/DEPRECATED/OBSOLETE/OTHER) (Optional)
     *             }
     *         ]
     *         classifies (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         examples (Optional): [
     *             String (Optional)
     *         ]
     *         isA (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         preferredToTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacedBy (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         replacementTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         seeAlso (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         synonyms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translatedTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         translationTerms (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         usage: String (Optional)
     *         validValues (Optional): [
     *             (recursive schema, see above)
     *         ]
     *         validValuesFor (Optional): [
     *             (recursive schema, see above)
     *         ]
     *     }
     * ]
     * }</pre>
     *
     * @param glossaryName The name of the glossary.
     * @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 terms by glossary name along with {@link Response}.
     */
    @Generated
    @ServiceMethod(returns = ReturnType.SINGLE)
    public Response<BinaryData> listTermsByGlossaryNameWithResponse(
            String glossaryName, RequestOptions requestOptions) {
        return this.serviceClient.listTermsByGlossaryNameWithResponse(glossaryName, requestOptions);
    }
}
