repo_description: Headless cloud-native authentication and identity management written in Go. Scales to a billion+ users. Replace Homegrown, Auth0, Okta, Firebase with better UX and DX. Passkeys, Social Sign In, OIDC, Magic Link, Multi-Factor Auth, SMS, SAML, TOTP, and more. Runs everywhere, runs best on Ory Network. 
repo_topics: hacktoberfest identity identity-management login profile-management registration user user-management user-profile user-profiles users
code: /*
  Ory Identities API
  
  This is the API specification for Ory Identities with features such as registration, login, recovery, account verification, profile settings, password reset, identity management, session management, email and sms delivery, and more.
  
  API version:
  Contact: [REDACTED_EMAIL]
  */
  
  // Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
  
  package client
  
  import (
  	"encoding/json"
  	"fmt"
  )
  
  // checks if the CreateIdentityBody type satisfies the MappedNullable interface at compile time
  var _ MappedNullable = &CreateIdentityBody{}
  
  // CreateIdentityBody Create Identity Body
  type CreateIdentityBody struct {
  	Credentials *IdentityWithCredentials `json:"credentials,omitempty"`
  	// ExternalID is an optional external ID of the identity. This is used to link the identity to an external system. If set, the external ID must be unique across all identities.
  	ExternalId *string `json:"external_id,omitempty"`
  	// Store metadata about the user which is only accessible through admin APIs such as `GET /admin/identities/<id>`.
  	MetadataAdmin interface{} `json:"metadata_admin,omitempty"`
  	// Store metadata about the identity which the identity itself can see when calling for example the session endpoint. Do not store sensitive information (e.g. credit score) about the identity in this field.
  	MetadataPublic interface{}    `json:"metadata_public,omitempty"`
  	OrganizationId NullableString `json:"organization_id,omitempty"`
  	// RecoveryAddresses contains all the addresses that can be used to recover an identity.  Use this structure to import recovery addresses for an identity. Please keep in mind that the address needs to be represented in the Identity Schema or this field will be overwritten on the next identity update.
  	RecoveryAddresses []RecoveryIdentityAddress `json:"recovery_addresses,omitempty"`
  	// SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.
  	SchemaId string `json:"schema_id"`
  	// State is the identity's state. active StateActive inactive StateInactive
  	State *string `json:"state,omitempty"`
  	// Traits represent an identity's traits. The identity is able to create, modify, and delete traits in a self-service manner. The input will always be validated against the JSON Schema defined in `schema_url`.
  	Traits map[string]interface{} `json:"traits"`
  	// VerifiableAddresses contains all the addresses that can be verified by the user.  Use this structure to import verified addresses for an identity. Please keep in mind that the address needs to be represented in the Identity Schema or this field will be overwritten on the next identity update.
  	VerifiableAddresses  []VerifiableIdentityAddress `json:"verifiable_addresses,omitempty"`
  	AdditionalProperties map[string]interface{}
  }
  
  type _CreateIdentityBody CreateIdentityBody
  
  // NewCreateIdentityBody instantiates a new CreateIdentityBody 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 NewCreateIdentityBody(schemaId string, traits map[string]interface{}) *CreateIdentityBody {
  	this := CreateIdentityBody{}
  	this.SchemaId = schemaId
  	this.Traits = traits
  	return &this
  }
  
  // NewCreateIdentityBodyWithDefaults instantiates a new CreateIdentityBody 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 NewCreateIdentityBodyWithDefaults() *CreateIdentityBody {
  	this := CreateIdentityBody{}
  	return &this
  }
  
  // GetCredentials returns the Credentials field value if set, zero value otherwise.
  func (o *CreateIdentityBody) GetCredentials() IdentityWithCredentials {
  	if o == nil || IsNil(o.Credentials) {
  		var ret IdentityWithCredentials
  		return ret
  	}
  	return *o.Credentials
  }
  
  // GetCredentialsOk returns a tuple with the Credentials field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  func (o *CreateIdentityBody) GetCredentialsOk() (*IdentityWithCredentials, bool) {
  	if o == nil || IsNil(o.Credentials) {
  		return nil, false
  	}
  	return o.Credentials, true
  }
  
  // HasCredentials returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasCredentials() bool {
  	if o != nil && !IsNil(o.Credentials) {
  		return true
  	}
  
  	return false
  }
  
  // SetCredentials gets a reference to the given IdentityWithCredentials and assigns it to the Credentials field.
  func (o *CreateIdentityBody) SetCredentials(v IdentityWithCredentials) {
  	o.Credentials = &v
  }
  
  // GetExternalId returns the ExternalId field value if set, zero value otherwise.
  func (o *CreateIdentityBody) GetExternalId() string {
  	if o == nil || IsNil(o.ExternalId) {
  		var ret string
  		return ret
  	}
  	return *o.ExternalId
  }
  
  // GetExternalIdOk returns a tuple with the ExternalId field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  func (o *CreateIdentityBody) GetExternalIdOk() (*string, bool) {
  	if o == nil || IsNil(o.ExternalId) {
  		return nil, false
  	}
  	return o.ExternalId, true
  }
  
  // HasExternalId returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasExternalId() bool {
  	if o != nil && !IsNil(o.ExternalId) {
  		return true
  	}
  
  	return false
  }
  
  // SetExternalId gets a reference to the given string and assigns it to the ExternalId field.
  func (o *CreateIdentityBody) SetExternalId(v string) {
  	o.ExternalId = &v
  }
  
  // GetMetadataAdmin returns the MetadataAdmin field value if set, zero value otherwise (both if not set or set to explicit null).
  func (o *CreateIdentityBody) GetMetadataAdmin() interface{} {
  	if o == nil {
  		var ret interface{}
  		return ret
  	}
  	return o.MetadataAdmin
  }
  
  // GetMetadataAdminOk returns a tuple with the MetadataAdmin field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  // NOTE: If the value is an explicit nil, `nil, true` will be returned
  func (o *CreateIdentityBody) GetMetadataAdminOk() (*interface{}, bool) {
  	if o == nil || IsNil(o.MetadataAdmin) {
  		return nil, false
  	}
  	return &o.MetadataAdmin, true
  }
  
  // HasMetadataAdmin returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasMetadataAdmin() bool {
  	if o != nil && !IsNil(o.MetadataAdmin) {
  		return true
  	}
  
  	return false
  }
  
  // SetMetadataAdmin gets a reference to the given interface{} and assigns it to the MetadataAdmin field.
  func (o *CreateIdentityBody) SetMetadataAdmin(v interface{}) {
  	o.MetadataAdmin = v
  }
  
  // GetMetadataPublic returns the MetadataPublic field value if set, zero value otherwise (both if not set or set to explicit null).
  func (o *CreateIdentityBody) GetMetadataPublic() interface{} {
  	if o == nil {
  		var ret interface{}
  		return ret
  	}
  	return o.MetadataPublic
  }
  
  // GetMetadataPublicOk returns a tuple with the MetadataPublic field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  // NOTE: If the value is an explicit nil, `nil, true` will be returned
  func (o *CreateIdentityBody) GetMetadataPublicOk() (*interface{}, bool) {
  	if o == nil || IsNil(o.MetadataPublic) {
  		return nil, false
  	}
  	return &o.MetadataPublic, true
  }
  
  // HasMetadataPublic returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasMetadataPublic() bool {
  	if o != nil && !IsNil(o.MetadataPublic) {
  		return true
  	}
  
  	return false
  }
  
  // SetMetadataPublic gets a reference to the given interface{} and assigns it to the MetadataPublic field.
  func (o *CreateIdentityBody) SetMetadataPublic(v interface{}) {
  	o.MetadataPublic = v
  }
  
  // GetOrganizationId returns the OrganizationId field value if set, zero value otherwise (both if not set or set to explicit null).
  func (o *CreateIdentityBody) GetOrganizationId() string {
  	if o == nil || IsNil(o.OrganizationId.Get()) {
  		var ret string
  		return ret
  	}
  	return *o.OrganizationId.Get()
  }
  
  // GetOrganizationIdOk returns a tuple with the OrganizationId field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  // NOTE: If the value is an explicit nil, `nil, true` will be returned
  func (o *CreateIdentityBody) GetOrganizationIdOk() (*string, bool) {
  	if o == nil {
  		return nil, false
  	}
  	return o.OrganizationId.Get(), o.OrganizationId.IsSet()
  }
  
  // HasOrganizationId returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasOrganizationId() bool {
  	if o != nil && o.OrganizationId.IsSet() {
  		return true
  	}
  
  	return false
  }
  
  // SetOrganizationId gets a reference to the given NullableString and assigns it to the OrganizationId field.
  func (o *CreateIdentityBody) SetOrganizationId(v string) {
  	o.OrganizationId.Set(&v)
  }
  
  // SetOrganizationIdNil sets the value for OrganizationId to be an explicit nil
  func (o *CreateIdentityBody) SetOrganizationIdNil() {
  	o.OrganizationId.Set(nil)
  }
  
  // UnsetOrganizationId ensures that no value is present for OrganizationId, not even an explicit nil
  func (o *CreateIdentityBody) UnsetOrganizationId() {
  	o.OrganizationId.Unset()
  }
  
  // GetRecoveryAddresses returns the RecoveryAddresses field value if set, zero value otherwise.
  func (o *CreateIdentityBody) GetRecoveryAddresses() []RecoveryIdentityAddress {
  	if o == nil || IsNil(o.RecoveryAddresses) {
  		var ret []RecoveryIdentityAddress
  		return ret
  	}
  	return o.RecoveryAddresses
  }
  
  // GetRecoveryAddressesOk returns a tuple with the RecoveryAddresses field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  func (o *CreateIdentityBody) GetRecoveryAddressesOk() ([]RecoveryIdentityAddress, bool) {
  	if o == nil || IsNil(o.RecoveryAddresses) {
  		return nil, false
  	}
  	return o.RecoveryAddresses, true
  }
  
  // HasRecoveryAddresses returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasRecoveryAddresses() bool {
  	if o != nil && !IsNil(o.RecoveryAddresses) {
  		return true
  	}
  
  	return false
  }
  
  // SetRecoveryAddresses gets a reference to the given []RecoveryIdentityAddress and assigns it to the RecoveryAddresses field.
  func (o *CreateIdentityBody) SetRecoveryAddresses(v []RecoveryIdentityAddress) {
  	o.RecoveryAddresses = v
  }
  
  // GetSchemaId returns the SchemaId field value
  func (o *CreateIdentityBody) GetSchemaId() string {
  	if o == nil {
  		var ret string
  		return ret
  	}
  
  	return o.SchemaId
  }
  
  // GetSchemaIdOk returns a tuple with the SchemaId field value
  // and a boolean to check if the value has been set.
  func (o *CreateIdentityBody) GetSchemaIdOk() (*string, bool) {
  	if o == nil {
  		return nil, false
  	}
  	return &o.SchemaId, true
  }
  
  // SetSchemaId sets field value
  func (o *CreateIdentityBody) SetSchemaId(v string) {
  	o.SchemaId = v
  }
  
  // GetState returns the State field value if set, zero value otherwise.
  func (o *CreateIdentityBody) GetState() string {
  	if o == nil || IsNil(o.State) {
  		var ret string
  		return ret
  	}
  	return *o.State
  }
  
  // GetStateOk returns a tuple with the State field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  func (o *CreateIdentityBody) GetStateOk() (*string, bool) {
  	if o == nil || IsNil(o.State) {
  		return nil, false
  	}
  	return o.State, true
  }
  
  // HasState returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasState() bool {
  	if o != nil && !IsNil(o.State) {
  		return true
  	}
  
  	return false
  }
  
  // SetState gets a reference to the given string and assigns it to the State field.
  func (o *CreateIdentityBody) SetState(v string) {
  	o.State = &v
  }
  
  // GetTraits returns the Traits field value
  func (o *CreateIdentityBody) GetTraits() map[string]interface{} {
  	if o == nil {
  		var ret map[string]interface{}
  		return ret
  	}
  
  	return o.Traits
  }
  
  // GetTraitsOk returns a tuple with the Traits field value
  // and a boolean to check if the value has been set.
  func (o *CreateIdentityBody) GetTraitsOk() (map[string]interface{}, bool) {
  	if o == nil {
  		return map[string]interface{}{}, false
  	}
  	return o.Traits, true
  }
  
  // SetTraits sets field value
  func (o *CreateIdentityBody) SetTraits(v map[string]interface{}) {
  	o.Traits = v
  }
  
  // GetVerifiableAddresses returns the VerifiableAddresses field value if set, zero value otherwise.
  func (o *CreateIdentityBody) GetVerifiableAddresses() []VerifiableIdentityAddress {
  	if o == nil || IsNil(o.VerifiableAddresses) {
  		var ret []VerifiableIdentityAddress
  		return ret
  	}
  	return o.VerifiableAddresses
  }
  
  // GetVerifiableAddressesOk returns a tuple with the VerifiableAddresses field value if set, nil otherwise
  // and a boolean to check if the value has been set.
  func (o *CreateIdentityBody) GetVerifiableAddressesOk() ([]VerifiableIdentityAddress, bool) {
  	if o == nil || IsNil(o.VerifiableAddresses) {
  		return nil, false
  	}
  	return o.VerifiableAddresses, true
  }
  
  // HasVerifiableAddresses returns a boolean if a field has been set.
  func (o *CreateIdentityBody) HasVerifiableAddresses() bool {
  	if o != nil && !IsNil(o.VerifiableAddresses) {
  		return true
  	}
  
  	return false
  }
  
  // SetVerifiableAddresses gets a reference to the given []VerifiableIdentityAddress and assigns it to the VerifiableAddresses field.
  func (o *CreateIdentityBody) SetVerifiableAddresses(v []VerifiableIdentityAddress) {
  	o.VerifiableAddresses = v
  }
  
  func (o CreateIdentityBody) MarshalJSON() ([]byte, error) {
  	toSerialize, err := o.ToMap()
  	if err != nil {
  		return []byte{}, err
  	}
  	return json.Marshal(toSerialize)
  }
  
  func (o CreateIdentityBody) ToMap() (map[string]interface{}, error) {
  	toSerialize := map[string]interface{}{}
  	if !IsNil(o.Credentials) {
  		toSerialize["credentials"] = o.Credentials
  	}
  	if !IsNil(o.ExternalId) {
  		toSerialize["external_id"] = o.ExternalId
  	}
  	if o.MetadataAdmin != nil {
  		toSerialize["metadata_admin"] = o.MetadataAdmin
  	}
  	if o.MetadataPublic != nil {
  		toSerialize["metadata_public"] = o.MetadataPublic
  	}
  	if o.OrganizationId.IsSet() {
  		toSerialize["organization_id"] = o.OrganizationId.Get()
  	}
  	if !IsNil(o.RecoveryAddresses) {
  		toSerialize["recovery_addresses"] = o.RecoveryAddresses
  	}
  	toSerialize["schema_id"] = o.SchemaId
  	if !IsNil(o.State) {
  		toSerialize["state"] = o.State
  	}
  	toSerialize["traits"] = o.Traits
  	if !IsNil(o.VerifiableAddresses) {
  		toSerialize["verifiable_addresses"] = o.VerifiableAddresses
  	}
  
  	for key, value := range o.AdditionalProperties {
  		toSerialize[key] = value
  	}
  
  	return toSerialize, nil
  }
  
  func (o *CreateIdentityBody) UnmarshalJSON(data []byte) (err error) {
  	// This validates that all required properties are included in the JSON object
  	// by unmarshalling the object into a generic map with string keys and checking
  	// that every required field exists as a key in the generic map.
  	requiredProperties := []string{
  		"schema_id",
  		"traits",
  	}
  
  	allProperties := make(map[string]interface{})
  
  	err = json.Unmarshal(data, &allProperties)
  
  	if err != nil {
  		return err
  	}
  
  	for _, requiredProperty := range requiredProperties {
  		if _, exists := allProperties[requiredProperty]; !exists {
  			return fmt.Errorf("no value given for required property %v", requiredProperty)
  		}
  	}
  
  	varCreateIdentityBody := _CreateIdentityBody{}
  
  	err = json.Unmarshal(data, &varCreateIdentityBody)
  
  	if err != nil {
  		return err
  	}
  
  	*o = CreateIdentityBody(varCreateIdentityBody)
  
  	additionalProperties := make(map[string]interface{})
  
  	if err = json.Unmarshal(data, &additionalProperties); err == nil {
  		delete(additionalProperties, "credentials")
  		delete(additionalProperties, "external_id")
  		delete(additionalProperties, "metadata_admin")
  		delete(additionalProperties, "metadata_public")
  		delete(additionalProperties, "organization_id")
  		delete(additionalProperties, "recovery_addresses")
  		delete(additionalProperties, "schema_id")
  		delete(additionalProperties, "state")
  		delete(additionalProperties, "traits")
  		delete(additionalProperties, "verifiable_addresses")
  		o.AdditionalProperties = additionalProperties
  	}
  
  	return err
  }
  
  type NullableCreateIdentityBody struct {
  	value *CreateIdentityBody
  	isSet bool
  }
  
  func (v NullableCreateIdentityBody) Get() *CreateIdentityBody {
  	return v.value
  }
  
  func (v *NullableCreateIdentityBody) Set(val *CreateIdentityBody) {
  	v.value = val
  	v.isSet = true
  }
  
  func (v NullableCreateIdentityBody) IsSet() bool {
  	return v.isSet
  }
  
  func (v *NullableCreateIdentityBody) Unset() {
  	v.value = nil
  	v.isSet = false
  }
  
  func NewNullableCreateIdentityBody(val *CreateIdentityBody) *NullableCreateIdentityBody {
  	return &NullableCreateIdentityBody{value: val, isSet: true}
  }
  
  func (v NullableCreateIdentityBody) MarshalJSON() ([]byte, error) {
  	return json.Marshal(v.value)
  }
  
  func (v *NullableCreateIdentityBody) UnmarshalJSON(src []byte) error {
  	v.isSet = true
  	return json.Unmarshal(src, &v.value)
  }
  