# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.

# typed: true
# frozen_string_literal: true


module PlexRubySDK
  module Operations
    FRIEND_SERVERS = [
      'https://plex.tv/api/v2/'
    ].freeze
  

    class Friend < ::PlexRubySDK::Utils::FieldAugmented
      extend T::Sig

      # The account email address
      field :email, ::String, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('email') } }
      # The account full name
      field :friendly_name, ::String, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('friendlyName') } }
      # If the account is a Plex Home user
      field :home, T::Boolean, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('home') } }
      # The Plex account ID
      field :id, ::Integer, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('id') } }
      # If the account is a Plex Home managed user
      field :restricted, T::Boolean, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('restricted') } }

      field :shared_servers, T::Array[::PlexRubySDK::Operations::SharedServers], { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('sharedServers') } }

      field :shared_sources, T::Array[::PlexRubySDK::Operations::SharedSources], { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('sharedSources') } }
      # Current friend request status
      field :status, ::PlexRubySDK::Operations::Status, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('status'), 'decoder': Utils.enum_from_string(::PlexRubySDK::Operations::Status, false) } }
      # URL of the account thumbnail
      field :thumb, ::String, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('thumb') } }
      # The title of the account (username or friendly name)
      field :title, ::String, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('title') } }
      # The account username
      field :username, ::String, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('username') } }
      # The account Universally Unique Identifier (UUID)
      field :uuid, ::String, { 'format_json': { 'letter_case': ::PlexRubySDK::Utils.field_name('uuid') } }


      sig { params(email: ::String, friendly_name: ::String, home: T::Boolean, id: ::Integer, restricted: T::Boolean, shared_servers: T::Array[::PlexRubySDK::Operations::SharedServers], shared_sources: T::Array[::PlexRubySDK::Operations::SharedSources], status: ::PlexRubySDK::Operations::Status, thumb: ::String, title: ::String, username: ::String, uuid: ::String).void }
      def initialize(email: nil, friendly_name: nil, home: nil, id: nil, restricted: nil, shared_servers: nil, shared_sources: nil, status: nil, thumb: nil, title: nil, username: nil, uuid: nil)
        @email = email
        @friendly_name = friendly_name
        @home = home
        @id = id
        @restricted = restricted
        @shared_servers = shared_servers
        @shared_sources = shared_sources
        @status = status
        @thumb = thumb
        @title = title
        @username = username
        @uuid = uuid
      end
    end
  end
end
