/*
 * Subset of Influx API covered by Influx CLI
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * API version: 2.0.0
 */

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package api

import (
	"encoding/json"
)

// ResourceMember struct for ResourceMember
type ResourceMember struct {
	// The user ID.
	Id *string `json:"id,omitempty" yaml:"id,omitempty"`
	// The user name.
	Name string `json:"name" yaml:"name"`
	// The status of a user. An inactive user can't read or write resources.
	Status *string            `json:"status,omitempty" yaml:"status,omitempty"`
	Links  *UserResponseLinks `json:"links,omitempty" yaml:"links,omitempty"`
	Role   *string            `json:"role,omitempty" yaml:"role,omitempty"`
}

// NewResourceMember instantiates a new ResourceMember object
// This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed
func NewResourceMember(name string) *ResourceMember {
	this := ResourceMember{}
	this.Name = name
	var status string = "active"
	this.Status = &status
	var role string = "member"
	this.Role = &role
	return &this
}

// NewResourceMemberWithDefaults instantiates a new ResourceMember object
// This constructor will only assign default values to properties that have it defined,
// but it doesn't guarantee that properties required by API are set
func NewResourceMemberWithDefaults() *ResourceMember {
	this := ResourceMember{}
	var status string = "active"
	this.Status = &status
	var role string = "member"
	this.Role = &role
	return &this
}

// GetId returns the Id field value if set, zero value otherwise.
func (o *ResourceMember) GetId() string {
	if o == nil || o.Id == nil {
		var ret string
		return ret
	}
	return *o.Id
}

// GetIdOk returns a tuple with the Id field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ResourceMember) GetIdOk() (*string, bool) {
	if o == nil || o.Id == nil {
		return nil, false
	}
	return o.Id, true
}

// HasId returns a boolean if a field has been set.
func (o *ResourceMember) HasId() bool {
	if o != nil && o.Id != nil {
		return true
	}

	return false
}

// SetId gets a reference to the given string and assigns it to the Id field.
func (o *ResourceMember) SetId(v string) {
	o.Id = &v
}

// GetName returns the Name field value
func (o *ResourceMember) GetName() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Name
}

// GetNameOk returns a tuple with the Name field value
// and a boolean to check if the value has been set.
func (o *ResourceMember) GetNameOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Name, true
}

// SetName sets field value
func (o *ResourceMember) SetName(v string) {
	o.Name = v
}

// GetStatus returns the Status field value if set, zero value otherwise.
func (o *ResourceMember) GetStatus() string {
	if o == nil || o.Status == nil {
		var ret string
		return ret
	}
	return *o.Status
}

// GetStatusOk returns a tuple with the Status field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ResourceMember) GetStatusOk() (*string, bool) {
	if o == nil || o.Status == nil {
		return nil, false
	}
	return o.Status, true
}

// HasStatus returns a boolean if a field has been set.
func (o *ResourceMember) HasStatus() bool {
	if o != nil && o.Status != nil {
		return true
	}

	return false
}

// SetStatus gets a reference to the given string and assigns it to the Status field.
func (o *ResourceMember) SetStatus(v string) {
	o.Status = &v
}

// GetLinks returns the Links field value if set, zero value otherwise.
func (o *ResourceMember) GetLinks() UserResponseLinks {
	if o == nil || o.Links == nil {
		var ret UserResponseLinks
		return ret
	}
	return *o.Links
}

// GetLinksOk returns a tuple with the Links field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ResourceMember) GetLinksOk() (*UserResponseLinks, bool) {
	if o == nil || o.Links == nil {
		return nil, false
	}
	return o.Links, true
}

// HasLinks returns a boolean if a field has been set.
func (o *ResourceMember) HasLinks() bool {
	if o != nil && o.Links != nil {
		return true
	}

	return false
}

// SetLinks gets a reference to the given UserResponseLinks and assigns it to the Links field.
func (o *ResourceMember) SetLinks(v UserResponseLinks) {
	o.Links = &v
}

// GetRole returns the Role field value if set, zero value otherwise.
func (o *ResourceMember) GetRole() string {
	if o == nil || o.Role == nil {
		var ret string
		return ret
	}
	return *o.Role
}

// GetRoleOk returns a tuple with the Role field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ResourceMember) GetRoleOk() (*string, bool) {
	if o == nil || o.Role == nil {
		return nil, false
	}
	return o.Role, true
}

// HasRole returns a boolean if a field has been set.
func (o *ResourceMember) HasRole() bool {
	if o != nil && o.Role != nil {
		return true
	}

	return false
}

// SetRole gets a reference to the given string and assigns it to the Role field.
func (o *ResourceMember) SetRole(v string) {
	o.Role = &v
}

func (o ResourceMember) MarshalJSON() ([]byte, error) {
	toSerialize := map[string]interface{}{}
	if o.Id != nil {
		toSerialize["id"] = o.Id
	}
	if true {
		toSerialize["name"] = o.Name
	}
	if o.Status != nil {
		toSerialize["status"] = o.Status
	}
	if o.Links != nil {
		toSerialize["links"] = o.Links
	}
	if o.Role != nil {
		toSerialize["role"] = o.Role
	}
	return json.Marshal(toSerialize)
}

type NullableResourceMember struct {
	value *ResourceMember
	isSet bool
}

func (v NullableResourceMember) Get() *ResourceMember {
	return v.value
}

func (v *NullableResourceMember) Set(val *ResourceMember) {
	v.value = val
	v.isSet = true
}

func (v NullableResourceMember) IsSet() bool {
	return v.isSet
}

func (v *NullableResourceMember) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullableResourceMember(val *ResourceMember) *NullableResourceMember {
	return &NullableResourceMember{value: val, isSet: true}
}

func (v NullableResourceMember) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullableResourceMember) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}
