// ------------------------------------------------------------------------------
//  Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.  See License in the project root for license information.
// ------------------------------------------------------------------------------

// **NOTE** This file was generated by a tool and any changes will be overwritten.

// Template Source: Templates\CSharp\Requests\EntityRequestBuilder.cs.tt

namespace Microsoft.Graph
{
    using System;
    using System.Collections.Generic;
    using System.IO;

    /// <summary>
    /// The type DomainRequestBuilder.
    /// </summary>
    public partial class DomainRequestBuilder : EntityRequestBuilder, IDomainRequestBuilder
    {

        /// <summary>
        /// Constructs a new DomainRequestBuilder.
        /// </summary>
        /// <param name="requestUrl">The URL for the built request.</param>
        /// <param name="client">The <see cref="IBaseClient"/> for handling requests.</param>
        public DomainRequestBuilder(
            string requestUrl,
            IBaseClient client)
            : base(requestUrl, client)
        {
        }

        /// <summary>
        /// Builds the request.
        /// </summary>
        /// <returns>The built request.</returns>
        public new IDomainRequest Request()
        {
            return this.Request(null);
        }

        /// <summary>
        /// Builds the request.
        /// </summary>
        /// <param name="options">The query and header options for the request.</param>
        /// <returns>The built request.</returns>
        public new IDomainRequest Request(IEnumerable<Option> options)
        {
            return new DomainRequest(this.RequestUrl, this.Client, options);
        }
    
        /// <summary>
        /// Gets the request builder for ServiceConfigurationRecords.
        /// </summary>
        /// <returns>The <see cref="IDomainServiceConfigurationRecordsCollectionRequestBuilder"/>.</returns>
        public IDomainServiceConfigurationRecordsCollectionRequestBuilder ServiceConfigurationRecords
        {
            get
            {
                return new DomainServiceConfigurationRecordsCollectionRequestBuilder(this.AppendSegmentToRequestUrl("serviceConfigurationRecords"), this.Client);
            }
        }

        /// <summary>
        /// Gets the request builder for VerificationDnsRecords.
        /// </summary>
        /// <returns>The <see cref="IDomainVerificationDnsRecordsCollectionRequestBuilder"/>.</returns>
        public IDomainVerificationDnsRecordsCollectionRequestBuilder VerificationDnsRecords
        {
            get
            {
                return new DomainVerificationDnsRecordsCollectionRequestBuilder(this.AppendSegmentToRequestUrl("verificationDnsRecords"), this.Client);
            }
        }

        /// <summary>
        /// Gets the request builder for DomainNameReferences.
        /// </summary>
        /// <returns>The <see cref="IDomainDomainNameReferencesCollectionWithReferencesRequestBuilder"/>.</returns>
        public IDomainDomainNameReferencesCollectionWithReferencesRequestBuilder DomainNameReferences
        {
            get
            {
                return new DomainDomainNameReferencesCollectionWithReferencesRequestBuilder(this.AppendSegmentToRequestUrl("domainNameReferences"), this.Client);
            }
        }
    
        /// <summary>
        /// Gets the request builder for DomainVerify.
        /// </summary>
        /// <returns>The <see cref="IDomainVerifyRequestBuilder"/>.</returns>
        public IDomainVerifyRequestBuilder Verify()
        {
            return new DomainVerifyRequestBuilder(
                this.AppendSegmentToRequestUrl("microsoft.graph.verify"),
                this.Client);
        }
    
    }
}
