// 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: false,
      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.Complex,
          multiValued: true,
          description: "EXAMPLE-description-Value",
          required: true,
          idcsReturnEmptyWhenNull: true,
          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.Immutable,
          returned: identitydomains.models.SchemaAttributes.Returned.Always,
          uniqueness: identitydomains.models.SchemaAttributes.Uniqueness.Server,
          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.Integer,
          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: 265,
          idcsAddedSinceVersion: 674,
          idcsDeprecatedSinceReleaseNumber: "EXAMPLE-idcsDeprecatedSinceReleaseNumber-Value",
          idcsAddedSinceReleaseNumber: "EXAMPLE-idcsAddedSinceReleaseNumber-Value",
          idcsMinLength: 985,
          idcsMaxLength: 863,
          idcsMinValue: 164,
          idcsMaxValue: 824,
          idcsMultiLanguage: true,
          idcsRefResourceAttributes: ["EXAMPLE--Value"],
          idcsIndirectRefResourceAttributes: ["EXAMPLE--Value"],
          idcsAutoIncrementSeqName: "EXAMPLE-idcsAutoIncrementSeqName-Value",
          idcsValuePersisted: false,
          idcsSensitive: identitydomains.models.SchemaAttributes.IdcsSensitive.None,
          idcsInternal: false,
          idcsTrimStringValue: true,
          idcsSearchable: true,
          idcsGenerated: true,
          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.Static,
          idcsValidateReference: true,
          idcsCompositeKey: ["EXAMPLE--Value"],
          idcsFetchComplexAttributeValues: false,
          idcsScimCompliant: true,
          idcsAttributeMappable: true,
          idcsValuePersistedInOtherAttribute: true,
          idcsPii: false,
          idcsExcludeFromUpgradePatch: false,
          subAttributes: [
            {
              name: "EXAMPLE-name-Value",
              idcsRequiresImmediateReadAfterWriteForAccessFlows: true,
              idcsRequiresWriteForAccessFlows: true,
              idcsDisplayNameMessageId:
                "ocid1.test.oc1..<unique_ID>EXAMPLE-idcsDisplayNameMessageId-Value",
              idcsRtsaHideAttribute: false,
              idcsInternal: false,
              type: identitydomains.models.SchemaSubAttributes.Type.Integer,
              multiValued: false,
              description: "EXAMPLE-description-Value",
              required: true,
              idcsReturnEmptyWhenNull: false,
              canonicalValues: ["EXAMPLE--Value"],
              idcsDefaultValue: "EXAMPLE-idcsDefaultValue-Value",
              caseExact: false,
              mutability: identitydomains.models.SchemaSubAttributes.Mutability.ReadWrite,
              returned: identitydomains.models.SchemaSubAttributes.Returned.Default,
              idcsCsvAttributeName: "EXAMPLE-idcsCsvAttributeName-Value",
              uniqueness: identitydomains.models.SchemaSubAttributes.Uniqueness.Global,
              referenceTypes: ["EXAMPLE--Value"],
              idcsDeprecatedSinceVersion: 724,
              idcsAddedSinceVersion: 471,
              idcsDeprecatedSinceReleaseNumber: "EXAMPLE-idcsDeprecatedSinceReleaseNumber-Value",
              idcsAddedSinceReleaseNumber: "EXAMPLE-idcsAddedSinceReleaseNumber-Value",
              idcsMinLength: 648,
              idcsMaxLength: 993,
              idcsMinValue: 185,
              idcsMaxValue: 191,
              idcsOnlyOneValueCanBeTrue: false,
              idcsMaxValuesReturned: 430,
              idcsOneValueMustBeTrue: false,
              idcsRefResourceAttributes: ["EXAMPLE--Value"],
              idcsIndirectRefResourceAttributes: ["EXAMPLE--Value"],
              idcsValuePersisted: false,
              idcsSensitive: identitydomains.models.SchemaSubAttributes.IdcsSensitive.Checksum,
              idcsTrimStringValue: true,
              idcsSearchable: false,
              idcsGenerated: true,
              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: false,
              idcsScimCompliant: true,
              idcsAttributeMappable: true,
              idcsAttributeCacheable: true,
              idcsuiOrder: 771,
              idcsuiRegexp: "EXAMPLE-idcsuiRegexp-Value",
              idcsuiVisible: true,
              idcsuiWidget: identitydomains.models.SchemaSubAttributes.IdcsuiWidget.Combobox,
              idcsValuePersistedInOtherAttribute: false,
              idcsPii: false,
              idcsSanitize: false,
              idcsExcludeFromUpgradePatch: false
            }
          ],
          idcsRefResourceAttribute: "EXAMPLE-idcsRefResourceAttribute-Value",
          idcsAttributeCacheable: false,
          idcsuiOrder: 676,
          idcsuiRegexp: "EXAMPLE-idcsuiRegexp-Value",
          idcsuiVisible: false,
          idcsuiWidget: identitydomains.models.SchemaAttributes.IdcsuiWidget.Inputtext,
          idcsFeatures: [identitydomains.models.SchemaAttributes.IdcsFeatures.Social],
          idcsOptionalPiiCanonicalValues: ["EXAMPLE--Value"],
          idcsSanitize: true,
          idcsOverrideCommonAttribute: false,
          idcsIgnoreReadOnlyAndImmutableRefAttrsDuringForceDelete: true,
          idcsAllowUpdatesInReadOnlyMode: true,
          idcsPaginateResponse: false,
          idcsRequiresWriteForAccessFlows: true,
          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);
  }
})();