// 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 database from "oci-database";
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 database.DatabaseClient({ authenticationDetailsProvider: provider });

    // Create a request and dependent object(s).
    const updateAutonomousDatabaseDetails = {
      backupRetentionPeriodInDays: 1143,
      computeModel: database.models.UpdateAutonomousDatabaseDetails.ComputeModel.Ocpu,
      inMemoryPercentage: 759,
      localAdgAutoFailoverMaxDataLossLimit: 1182,
      cpuCoreCount: 80,
      longTermBackupSchedule: {
        repeatCadence: database.models.LongTermBackUpScheduleDetails.RepeatCadence.Yearly,
        timeOfBackup: new Date("Thu Dec 29 12:30:13 UTC 2039"),
        retentionPeriodInDays: 1126,
        isDisabled: false
      },
      isDevTier: true,
      computeCount: 637.1687,
      ocpuCount: 503.59488,
      dataStorageSizeInTBs: 143,
      dataStorageSizeInGBs: 21562,
      displayName: "EXAMPLE-displayName-Value",
      isFreeTier: false,
      adminPassword: "EXAMPLE-adminPassword-Value",
      dbName: "EXAMPLE-dbName-Value",
      freeformTags: {
        EXAMPLE_KEY_lIvtI: "EXAMPLE_VALUE_Vmmlc7aeJq1jbjPhw7Lt"
      },
      definedTags: {
        EXAMPLE_KEY_AcGZW: {
          EXAMPLE_KEY_5N1lU: "EXAMPLE--Value"
        }
      },
      dbWorkload: database.models.UpdateAutonomousDatabaseDetails.DbWorkload.Dw,
      licenseModel: database.models.UpdateAutonomousDatabaseDetails.LicenseModel.LicenseIncluded,
      isAccessControlEnabled: false,
      whitelistedIps: ["EXAMPLE--Value"],
      arePrimaryWhitelistedIpsUsed: false,
      standbyWhitelistedIps: ["EXAMPLE--Value"],
      isAutoScalingEnabled: false,
      isRefreshableClone: true,
      refreshableMode: database.models.UpdateAutonomousDatabaseDetails.RefreshableMode.Manual,
      isLocalDataGuardEnabled: true,
      isDataGuardEnabled: false,
      peerDbId: "ocid1.test.oc1..<unique_ID>EXAMPLE-peerDbId-Value",
      dbVersion: "EXAMPLE-dbVersion-Value",
      openMode: database.models.UpdateAutonomousDatabaseDetails.OpenMode.ReadOnly,
      permissionLevel: database.models.UpdateAutonomousDatabaseDetails.PermissionLevel.Restricted,
      subnetId: "ocid1.test.oc1..<unique_ID>EXAMPLE-subnetId-Value",
      privateEndpointLabel: "EXAMPLE-privateEndpointLabel-Value",
      privateEndpointIp: "EXAMPLE-privateEndpointIp-Value",
      nsgIds: ["EXAMPLE--Value"],
      autoRefreshFrequencyInSeconds: 464906,
      autoRefreshPointLagInSeconds: 38598,
      timeOfAutoRefreshStart: new Date("Sun Oct 07 15:36:49 UTC 2040"),
      customerContacts: [
        {
          email: "EXAMPLE-email-Value"
        }
      ],
      isMtlsConnectionRequired: true,
      resourcePoolLeaderId: "ocid1.test.oc1..<unique_ID>EXAMPLE-resourcePoolLeaderId-Value",
      resourcePoolSummary: {
        poolSize: 622,
        isDisabled: false
      },
      scheduledOperations: [
        {
          dayOfWeek: {
            name: database.models.DayOfWeek.Name.Sunday
          },
          scheduledStartTime: "EXAMPLE-scheduledStartTime-Value",
          scheduledStopTime: "EXAMPLE-scheduledStopTime-Value"
        }
      ],
      isAutoScalingForStorageEnabled: false,
      databaseEdition: database.models.AutonomousDatabaseSummary.DatabaseEdition.StandardEdition,
      dbToolsDetails: [
        {
          name: database.models.DatabaseTool.Name.Ords,
          isEnabled: true,
          computeCount: 194.76901,
          maxIdleTimeInMinutes: 129
        }
      ],
      secretId: "ocid1.test.oc1..<unique_ID>EXAMPLE-secretId-Value",
      secretVersionNumber: 59
    };

    const updateAutonomousDatabaseRequest: database.requests.UpdateAutonomousDatabaseRequest = {
      autonomousDatabaseId: "ocid1.test.oc1..<unique_ID>EXAMPLE-autonomousDatabaseId-Value",
      updateAutonomousDatabaseDetails: updateAutonomousDatabaseDetails,
      ifMatch: "EXAMPLE-ifMatch-Value",
      opcRequestId: "PSQJK0HT1FHZDBEKTYJE<unique_ID>"
    };

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