// This is an automatically generated code sample. 
// To make this code sample work in your Oracle Cloud tenancy, 
// please replace the values for any parameters whose current values do not fit
// your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and 
// boolean, number, and enum parameters with values not fitting your use case).

import * as identitydomains from "oci-identitydomains";
import common = require("oci-common");

// Create a default authentication provider that uses the DEFAULT
// profile in the configuration file.
// Refer to <see href="https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File>the public documentation</see> on how to prepare a configuration file.

const provider: common.ConfigFileAuthenticationDetailsProvider = new common.ConfigFileAuthenticationDetailsProvider();

(async () => {
    try {
     // Create a service client
     const client = new identitydomains.IdentityDomainsClient({ authenticationDetailsProvider: provider });

     // Create a request and dependent object(s).
	const  schema = {
		schemas: ["EXAMPLE--Value"				],
		idcsMapsToSameTargetAttributeNameAs: "EXAMPLE-idcsMapsToSameTargetAttributeNameAs-Value",
		externalId: "ocid1.test.oc1..<unique_ID>EXAMPLE-externalId-Value",
		name: "EXAMPLE-name-Value",
		idcsResourceTypes: ["EXAMPLE--Value"				],
		description: "EXAMPLE-description-Value",
		idcsMappable: true,
		idcsAttributeCacheable: false,
		idcsOverrideCommonAttribute: true,
		attributes: [{
				name: "EXAMPLE-name-Value",
				idcsDisplayNameMessageId: "ocid1.test.oc1..<unique_ID>EXAMPLE-idcsDisplayNameMessageId-Value",
				idcsRtsaHideAttribute: false,
				localizedDisplayName: {
					value: "EXAMPLE-value-Value",
					locale: "EXAMPLE-locale-Value",

					}
,
				type: identitydomains.models.SchemaAttributes.Type.Boolean,
				multiValued: false,
				description: "EXAMPLE-description-Value",
				required: false,
				idcsReturnEmptyWhenNull: false,
				canonicalValues: ["EXAMPLE--Value"						],
				idcsDefaultValue: "EXAMPLE-idcsDefaultValue-Value",
				localizedCanonicalValues: [{
						value: "EXAMPLE-value-Value",
						canonicalValue: ["EXAMPLE--Value"								],
						locale: "EXAMPLE-locale-Value",

						}
						],
				caseExact: false,
				mutability: identitydomains.models.SchemaAttributes.Mutability.ReadWrite,
				returned: identitydomains.models.SchemaAttributes.Returned.Default,
				uniqueness: identitydomains.models.SchemaAttributes.Uniqueness.None,
				idcsCsvAttributeName: "EXAMPLE-idcsCsvAttributeName-Value",
				idcsComplexAttributeNameMappings: [{
						name: "EXAMPLE-name-Value",
						mapsTo: "EXAMPLE-mapsTo-Value",
						idcsRtsaHideAttribute: true,

						}
						],
				idcsICFBundleAttributeName: "EXAMPLE-idcsICFBundleAttributeName-Value",
				idcsICFRequired: false,
				idcsICFAttributeType: identitydomains.models.SchemaAttributes.IdcsICFAttributeType.Bytes,
				idcsCsvAttributeNameMappings: [{
						columnHeaderName: "EXAMPLE-columnHeaderName-Value",
						deprecatedColumnHeaderName: "EXAMPLE-deprecatedColumnHeaderName-Value",
						mapsTo: "EXAMPLE-mapsTo-Value",
						defaultValue: "EXAMPLE-defaultValue-Value",
						multiValueDelimiter: "EXAMPLE-multiValueDelimiter-Value",
						csvColumnForResolvingResourceType: "EXAMPLE-csvColumnForResolvingResourceType-Value",
						resolveValueUsingResourceType: [{
								valueToBeResolved: "EXAMPLE-valueToBeResolved-Value",
								resolveBy: "EXAMPLE-resolveBy-Value",

								}
								],
						referencedResourceTypeUniqueAttributeNameMappings: [{
								resourceTypeAttributeName: "EXAMPLE-resourceTypeAttributeName-Value",
								mapsFromColumnName: "EXAMPLE-mapsFromColumnName-Value",

								}
								],

						}
						],
				referenceTypes: ["EXAMPLE--Value"						],
				idcsDeprecatedSinceVersion: 877,
				idcsAddedSinceVersion: 435,
				idcsDeprecatedSinceReleaseNumber: "EXAMPLE-idcsDeprecatedSinceReleaseNumber-Value",
				idcsAddedSinceReleaseNumber: "EXAMPLE-idcsAddedSinceReleaseNumber-Value",
				idcsMinLength: 57,
				idcsMaxLength: 398,
				idcsMinValue: 597,
				idcsMaxValue: 685,
				idcsMultiLanguage: true,
				idcsRefResourceAttributes: ["EXAMPLE--Value"						],
				idcsIndirectRefResourceAttributes: ["EXAMPLE--Value"						],
				idcsAutoIncrementSeqName: "EXAMPLE-idcsAutoIncrementSeqName-Value",
				idcsValuePersisted: true,
				idcsSensitive: identitydomains.models.SchemaAttributes.IdcsSensitive.HashSc,
				idcsInternal: false,
				idcsTrimStringValue: false,
				idcsSearchable: true,
				idcsGenerated: false,
				idcsAuditable: true,
				idcsTargetAttributeName: "EXAMPLE-idcsTargetAttributeName-Value",
				idcsMapsToSameTargetAttributeNameAs: "EXAMPLE-idcsMapsToSameTargetAttributeNameAs-Value",
				idcsTargetNormAttributeName: "EXAMPLE-idcsTargetNormAttributeName-Value",
				idcsTargetAttributeNameToMigrateFrom: "EXAMPLE-idcsTargetAttributeNameToMigrateFrom-Value",
				idcsTargetUniqueConstraintName: "EXAMPLE-idcsTargetUniqueConstraintName-Value",
				idcsToTargetMapper: "EXAMPLE-idcsToTargetMapper-Value",
				idcsFromTargetMapper: "EXAMPLE-idcsFromTargetMapper-Value",
				idcsDisplayName: "EXAMPLE-idcsDisplayName-Value",
				idcsCanonicalValueSourceResourceType: "EXAMPLE-idcsCanonicalValueSourceResourceType-Value",
				idcsCanonicalValueSourceFilter: "EXAMPLE-idcsCanonicalValueSourceFilter-Value",
				idcsCanonicalValueSourceResourceTypeID: "EXAMPLE-idcsCanonicalValueSourceResourceTypeID-Value",
				idcsCanonicalValueSourceDisplayAttrName: "EXAMPLE-idcsCanonicalValueSourceDisplayAttrName-Value",
				idcsCanonicalValueSourceKeyAttrName: "EXAMPLE-idcsCanonicalValueSourceKeyAttrName-Value",
				idcsCanonicalValueType: identitydomains.models.SchemaAttributes.IdcsCanonicalValueType.Dynamic,
				idcsValidateReference: true,
				idcsCompositeKey: ["EXAMPLE--Value"						],
				idcsFetchComplexAttributeValues: false,
				idcsScimCompliant: false,
				idcsAttributeMappable: true,
				idcsValuePersistedInOtherAttribute: false,
				idcsPii: false,
				idcsExcludeFromUpgradePatch: false,
				subAttributes: [{
						name: "EXAMPLE-name-Value",
						idcsRequiresImmediateReadAfterWriteForAccessFlows: true,
						idcsRequiresWriteForAccessFlows: true,
						idcsDisplayNameMessageId: "ocid1.test.oc1..<unique_ID>EXAMPLE-idcsDisplayNameMessageId-Value",
						idcsRtsaHideAttribute: true,
						idcsInternal: true,
						type: identitydomains.models.SchemaSubAttributes.Type.Boolean,
						multiValued: false,
						description: "EXAMPLE-description-Value",
						required: false,
						idcsReturnEmptyWhenNull: true,
						canonicalValues: ["EXAMPLE--Value"								],
						idcsDefaultValue: "EXAMPLE-idcsDefaultValue-Value",
						caseExact: true,
						mutability: identitydomains.models.SchemaSubAttributes.Mutability.WriteOnly,
						returned: identitydomains.models.SchemaSubAttributes.Returned.Always,
						idcsCsvAttributeName: "EXAMPLE-idcsCsvAttributeName-Value",
						uniqueness: identitydomains.models.SchemaSubAttributes.Uniqueness.Server,
						referenceTypes: ["EXAMPLE--Value"								],
						idcsDeprecatedSinceVersion: 437,
						idcsAddedSinceVersion: 319,
						idcsDeprecatedSinceReleaseNumber: "EXAMPLE-idcsDeprecatedSinceReleaseNumber-Value",
						idcsAddedSinceReleaseNumber: "EXAMPLE-idcsAddedSinceReleaseNumber-Value",
						idcsMinLength: 935,
						idcsMaxLength: 222,
						idcsMinValue: 859,
						idcsMaxValue: 697,
						idcsOnlyOneValueCanBeTrue: true,
						idcsMaxValuesReturned: 624,
						idcsOneValueMustBeTrue: false,
						idcsRefResourceAttributes: ["EXAMPLE--Value"								],
						idcsIndirectRefResourceAttributes: ["EXAMPLE--Value"								],
						idcsValuePersisted: false,
						idcsSensitive: identitydomains.models.SchemaSubAttributes.IdcsSensitive.Checksum,
						idcsTrimStringValue: false,
						idcsSearchable: false,
						idcsGenerated: false,
						idcsAuditable: true,
						idcsTargetAttributeName: "EXAMPLE-idcsTargetAttributeName-Value",
						idcsTargetNormAttributeName: "EXAMPLE-idcsTargetNormAttributeName-Value",
						idcsTargetAttributeNameToMigrateFrom: "EXAMPLE-idcsTargetAttributeNameToMigrateFrom-Value",
						idcsTargetUniqueConstraintName: "EXAMPLE-idcsTargetUniqueConstraintName-Value",
						idcsToTargetMapper: "EXAMPLE-idcsToTargetMapper-Value",
						idcsFromTargetMapper: "EXAMPLE-idcsFromTargetMapper-Value",
						idcsDisplayName: "EXAMPLE-idcsDisplayName-Value",
						idcsCanonicalValueSourceResourceType: "EXAMPLE-idcsCanonicalValueSourceResourceType-Value",
						idcsCanonicalValueSourceFilter: "EXAMPLE-idcsCanonicalValueSourceFilter-Value",
						idcsCanonicalValueSourceResourceTypeID: "EXAMPLE-idcsCanonicalValueSourceResourceTypeID-Value",
						idcsCanonicalValueSourceDisplayAttrName: "EXAMPLE-idcsCanonicalValueSourceDisplayAttrName-Value",
						idcsCanonicalValueSourceKeyAttrName: "EXAMPLE-idcsCanonicalValueSourceKeyAttrName-Value",
						idcsValidateReference: true,
						idcsScimCompliant: true,
						idcsAttributeMappable: false,
						idcsAttributeCacheable: true,
						idcsuiOrder: 783,
						idcsuiRegexp: "EXAMPLE-idcsuiRegexp-Value",
						idcsuiVisible: true,
						idcsuiWidget: identitydomains.models.SchemaSubAttributes.IdcsuiWidget.Checkbox,
						idcsValuePersistedInOtherAttribute: true,
						idcsPii: true,
						idcsSanitize: true,
						idcsExcludeFromUpgradePatch: false,

						}
						],
				idcsRefResourceAttribute: "EXAMPLE-idcsRefResourceAttribute-Value",
				idcsAttributeCacheable: false,
				idcsuiOrder: 19,
				idcsuiRegexp: "EXAMPLE-idcsuiRegexp-Value",
				idcsuiVisible: true,
				idcsuiWidget: identitydomains.models.SchemaAttributes.IdcsuiWidget.Textarea,
				idcsFeatures: [identitydomains.models.SchemaAttributes.IdcsFeatures.SchemaCustomization						],
				idcsOptionalPiiCanonicalValues: ["EXAMPLE--Value"						],
				idcsSanitize: false,
				idcsOverrideCommonAttribute: false,
				idcsIgnoreReadOnlyAndImmutableRefAttrsDuringForceDelete: false,
				idcsAllowUpdatesInReadOnlyMode: false,
				idcsPaginateResponse: true,
				idcsRequiresWriteForAccessFlows: false,
				idcsRequiresImmediateReadAfterWriteForAccessFlows: true,

				}
				],

		}

	const putSchemaRequest: identitydomains.requests.PutSchemaRequest = { 
	schemaId: "ocid1.test.oc1..<unique_ID>EXAMPLE-schemaId-Value",
	authorization: "EXAMPLE-authorization-Value",
	resourceTypeSchemaVersion: "EXAMPLE-resourceTypeSchemaVersion-Value",
	schema: schema,
	ifMatch: "EXAMPLE-ifMatch-Value",
	opcRetryToken: "EXAMPLE-opcRetryToken-Value",

		}; 


     // Send request to the Client.
     const putSchemaResponse = await client.putSchema(putSchemaRequest);
     }
     catch (error) {
         console.log("putSchema Failed with error  " + error);
     }
})();