/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the codeguruprofiler-2019-07-18.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.CodeGuruProfiler.Model { /// /// Container for the parameters to the GetProfile operation. /// Gets the aggregated profile of a profiling group for a specified time range. Amazon /// CodeGuru Profiler collects posted agent profiles for a profiling group into aggregated /// profiles. /// ///
 <note> <p> Because aggregated profiles expire over time <code>GetProfile</code>
    /// is not idempotent. </p> </note> <p> Specify the time range for the
    /// requested aggregated profile using 1 or 2 of the following parameters: <code>startTime</code>,
    /// <code>endTime</code>, <code>period</code>. The maximum time
    /// range allowed is 7 days. If you specify all 3 parameters, an exception is thrown.
    /// If you specify only <code>period</code>, the latest aggregated profile
    /// is returned. </p> <p> Aggregated profiles are available with aggregation
    /// periods of 5 minutes, 1 hour, and 1 day, aligned to UTC. The aggregation period of
    /// an aggregated profile determines how long it is retained. For more information, see
    /// <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_AggregatedProfileTime.html">
    /// <code>AggregatedProfileTime</code> </a>. The aggregated profile's
    /// aggregation period determines how long it is retained by CodeGuru Profiler. </p>
    /// <ul> <li> <p> If the aggregation period is 5 minutes, the aggregated
    /// profile is retained for 15 days. </p> </li> <li> <p> If the
    /// aggregation period is 1 hour, the aggregated profile is retained for 60 days. </p>
    /// </li> <li> <p> If the aggregation period is 1 day, the aggregated
    /// profile is retained for 3 years. </p> </li> </ul> <p>There
    /// are two use cases for calling <code>GetProfile</code>.</p> <ol>
    /// <li> <p> If you want to return an aggregated profile that already exists,
    /// use <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ListProfileTimes.html">
    /// <code>ListProfileTimes</code> </a> to view the time ranges of existing
    /// aggregated profiles. Use them in a <code>GetProfile</code> request to
    /// return a specific, existing aggregated profile. </p> </li> <li>
    /// <p> If you want to return an aggregated profile for a time range that doesn't
    /// align with an existing aggregated profile, then CodeGuru Profiler makes a best effort
    /// to combine existing aggregated profiles from the requested time range and return them
    /// as one aggregated profile. </p> <p> If aggregated profiles do not exist
    /// for the full time range requested, then aggregated profiles for a smaller time range
    /// are returned. For example, if the requested time range is from 00:00 to 00:20, and
    /// the existing aggregated profiles are from 00:15 and 00:25, then the aggregated profiles
    /// from 00:15 to 00:20 are returned. </p> </li> </ol> 
///
public partial class GetProfileRequest : AmazonCodeGuruProfilerRequest { private string _accept; private DateTime? _endTime; private int? _maxDepth; private string _period; private string _profilingGroupName; private DateTime? _startTime; /// /// Gets and sets the property Accept. /// /// The format of the returned profiling data. The format maps to the Accept /// and Content-Type headers of the HTTP request. You can specify one of /// the following: or the default . /// ///
 <ul> <li> <p> <code>application/json</code>
        /// — standard JSON format </p> </li> <li> <p> <code>application/x-amzn-ion</code>
        /// — the Amazon Ion data format. For more information, see <a href="http://amzn.github.io/ion-docs/">Amazon
        /// Ion</a>. </p> </li> </ul> 
///
public string Accept { get { return this._accept; } set { this._accept = value; } } // Check to see if Accept property is set internal bool IsSetAccept() { return this._accept != null; } /// /// Gets and sets the property EndTime. /// /// The end time of the requested profile. Specify using the ISO 8601 format. For example, /// 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020 1:15:02 PM UTC. /// /// /// /// /// If you specify endTime, then you must also specify period /// or startTime, but not both. /// /// public DateTime EndTime { get { return this._endTime.GetValueOrDefault(); } set { this._endTime = value; } } // Check to see if EndTime property is set internal bool IsSetEndTime() { return this._endTime.HasValue; } /// /// Gets and sets the property MaxDepth. /// /// The maximum depth of the stacks in the code that is represented in the aggregated /// profile. For example, if CodeGuru Profiler finds a method A, which calls /// method B, which calls method C, which calls method D, /// then the depth is 4. If the maxDepth is set to 2, then the aggregated /// profile contains representations of methods A and B. /// /// [AWSProperty(Min=1, Max=10000)] public int MaxDepth { get { return this._maxDepth.GetValueOrDefault(); } set { this._maxDepth = value; } } // Check to see if MaxDepth property is set internal bool IsSetMaxDepth() { return this._maxDepth.HasValue; } /// /// Gets and sets the property Period. /// /// Used with startTime or endTime to specify the time range /// for the returned aggregated profile. Specify using the ISO 8601 format. For example, /// P1DT1H1M1S. /// ///
 <p> To get the latest aggregated profile, specify only <code>period</code>.
        /// </p> 
///
[AWSProperty(Min=1, Max=64)] public string Period { get { return this._period; } set { this._period = value; } } // Check to see if Period property is set internal bool IsSetPeriod() { return this._period != null; } /// /// Gets and sets the property ProfilingGroupName. /// /// The name of the profiling group to get. /// /// [AWSProperty(Required=true, Min=1, Max=255)] public string ProfilingGroupName { get { return this._profilingGroupName; } set { this._profilingGroupName = value; } } // Check to see if ProfilingGroupName property is set internal bool IsSetProfilingGroupName() { return this._profilingGroupName != null; } /// /// Gets and sets the property StartTime. /// /// The start time of the profile to get. Specify using the ISO 8601 format. For example, /// 2020-06-01T13:15:02.001Z represents 1 millisecond past June 1, 2020 1:15:02 PM UTC. /// ///
 <p> If you specify <code>startTime</code>, then you
        /// must also specify <code>period</code> or <code>endTime</code>,
        /// but not both. </p> 
///
public DateTime StartTime { get { return this._startTime.GetValueOrDefault(); } set { this._startTime = value; } } // Check to see if StartTime property is set internal bool IsSetStartTime() { return this._startTime.HasValue; } } }