# encoding: utf-8
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.

module Azure::Support::Mgmt::V2020_04_01
  module Models
    #
    # Object that represents SupportTicketDetails resource.
    #
    class SupportTicketDetails

      include MsRestAzure

      # @return [String] Id of the resource.
      attr_accessor :id

      # @return [String] Name of the resource.
      attr_accessor :name

      # @return [String] Type of the resource
      # 'Microsoft.Support/supportTickets'.
      attr_accessor :type

      # @return [String] System generated support ticket Id that is unique.
      attr_accessor :support_ticket_id

      # @return [String] Detailed description of the question or issue.
      attr_accessor :description

      # @return [String] Each Azure service has its own set of issue
      # categories, also known as problem classification. This parameter is the
      # unique Id for the type of problem you are experiencing.
      attr_accessor :problem_classification_id

      # @return [String] Localized name of problem classification.
      attr_accessor :problem_classification_display_name

      # @return [SeverityLevel] A value that indicates the urgency of the case,
      # which in turn determines the response time according to the service
      # level agreement of the technical support plan you have with Azure.
      # Note: 'Highest critical impact' severity is reserved only for our
      # Premium customers. Possible values include: 'minimal', 'moderate',
      # 'critical', 'highestcriticalimpact'
      attr_accessor :severity

      # @return [String] Enrollment Id associated with the support ticket.
      attr_accessor :enrollment_id

      # @return [Boolean] Indicates if this requires a 24x7 response from
      # Azure.
      attr_accessor :require24x7response

      # @return [ContactProfile] Contact information of the user requesting to
      # create a support ticket.
      attr_accessor :contact_details

      # @return [ServiceLevelAgreement] Service Level Agreement information for
      # this support ticket.
      attr_accessor :service_level_agreement

      # @return [SupportEngineer] Information about the support engineer
      # working on this support ticket.
      attr_accessor :support_engineer

      # @return [String] Support plan type associated with the support ticket.
      attr_accessor :support_plan_type

      # @return [String] Title of the support ticket.
      attr_accessor :title

      # @return [DateTime] Time in UTC (ISO 8601 format) when the problem
      # started.
      attr_accessor :problem_start_time

      # @return [String] This is the resource Id of the Azure service resource
      # associated with the support ticket.
      attr_accessor :service_id

      # @return [String] Localized name of the Azure service.
      attr_accessor :service_display_name

      # @return [String] Status of the support ticket.
      attr_accessor :status

      # @return [DateTime] Time in UTC (ISO 8601 format) when the support
      # ticket was created.
      attr_accessor :created_date

      # @return [DateTime] Time in UTC (ISO 8601 format) when the support
      # ticket was last modified.
      attr_accessor :modified_date

      # @return [TechnicalTicketDetails] Additional ticket details associated
      # with a technical support ticket request.
      attr_accessor :technical_ticket_details

      # @return [QuotaTicketDetails] Additional ticket details associated with
      # a quota support ticket request.
      attr_accessor :quota_ticket_details


      #
      # Mapper for SupportTicketDetails class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'SupportTicketDetails',
          type: {
            name: 'Composite',
            class_name: 'SupportTicketDetails',
            model_properties: {
              id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'id',
                type: {
                  name: 'String'
                }
              },
              name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'name',
                type: {
                  name: 'String'
                }
              },
              type: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'type',
                type: {
                  name: 'String'
                }
              },
              support_ticket_id: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.supportTicketId',
                type: {
                  name: 'String'
                }
              },
              description: {
                client_side_validation: true,
                required: true,
                serialized_name: 'properties.description',
                type: {
                  name: 'String'
                }
              },
              problem_classification_id: {
                client_side_validation: true,
                required: true,
                serialized_name: 'properties.problemClassificationId',
                type: {
                  name: 'String'
                }
              },
              problem_classification_display_name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.problemClassificationDisplayName',
                type: {
                  name: 'String'
                }
              },
              severity: {
                client_side_validation: true,
                required: true,
                serialized_name: 'properties.severity',
                type: {
                  name: 'String'
                }
              },
              enrollment_id: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.enrollmentId',
                type: {
                  name: 'String'
                }
              },
              require24x7response: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.require24X7Response',
                type: {
                  name: 'Boolean'
                }
              },
              contact_details: {
                client_side_validation: true,
                required: true,
                serialized_name: 'properties.contactDetails',
                type: {
                  name: 'Composite',
                  class_name: 'ContactProfile'
                }
              },
              service_level_agreement: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.serviceLevelAgreement',
                type: {
                  name: 'Composite',
                  class_name: 'ServiceLevelAgreement'
                }
              },
              support_engineer: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.supportEngineer',
                type: {
                  name: 'Composite',
                  class_name: 'SupportEngineer'
                }
              },
              support_plan_type: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.supportPlanType',
                type: {
                  name: 'String'
                }
              },
              title: {
                client_side_validation: true,
                required: true,
                serialized_name: 'properties.title',
                type: {
                  name: 'String'
                }
              },
              problem_start_time: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.problemStartTime',
                type: {
                  name: 'DateTime'
                }
              },
              service_id: {
                client_side_validation: true,
                required: true,
                serialized_name: 'properties.serviceId',
                type: {
                  name: 'String'
                }
              },
              service_display_name: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.serviceDisplayName',
                type: {
                  name: 'String'
                }
              },
              status: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.status',
                type: {
                  name: 'String'
                }
              },
              created_date: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.createdDate',
                type: {
                  name: 'DateTime'
                }
              },
              modified_date: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'properties.modifiedDate',
                type: {
                  name: 'DateTime'
                }
              },
              technical_ticket_details: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.technicalTicketDetails',
                type: {
                  name: 'Composite',
                  class_name: 'TechnicalTicketDetails'
                }
              },
              quota_ticket_details: {
                client_side_validation: true,
                required: false,
                serialized_name: 'properties.quotaTicketDetails',
                type: {
                  name: 'Composite',
                  class_name: 'QuotaTicketDetails'
                }
              }
            }
          }
        }
      end
    end
  end
end
