# @ohos.telephony.esim (eSIM Management) (System API) The **esim** module provides APIs for eSIM management and eSIM services. > **NOTE** > > The initial APIs of this module are supported since API version 18. Newly added APIs will be marked with a superscript to indicate their earliest API version. > This topic describes only system APIs provided by the module. For details about its public APIs, see [@ohos.telephony.esim (eSIM Management)](js-apis-esim.md). ## Modules to Import ```ts import { eSIM } from '@kit.TelephonyKit'; ``` ## eSIM.getEid18+ getEid\(slotId: number\): Promise\ Obtains the EID of the embedded universal integrated circuit card (eUICC) in the specified slot. **System API**: This is a system API. **Required permission**: ohos.permission.GET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | | slotId | number | Yes | Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2 | **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\ | EID of the eUICC in the specified slot.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { eSIM } from '@kit.TelephonyKit'; let eid: string = eSIM.getEid(0); console.log(`the EID is:` + eid); ``` ## eSIM.getOsuStatus18+ getOsuStatus\(slotId: number\): Promise\ Obtains the OS upgrade status for the eSIM in the specified slot. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.GET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | | slotId | number | Yes | Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[OsuStatus](#osustatus18)\> | Promise used to return the OS upgrade status.
1. Updating.
2. Update failed.
3. Update succeeded.
4. Already the latest version.
5. Update service unavailable.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.getOsuStatus(0).then(() => { console.log(`getOsuStatus invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`getOsuStatus, promise: err->${JSON.stringify(err)}`); }); ``` ## eSIM.startOsu18+ startOsu\(slotId: number\): Promise\ Upgrades the OS if the OS version of the eSIM in the specified slot is not the latest. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | | slotId | number | Yes | Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[OsuStatus](#osustatus18)\> | Promise used to return the OS upgrade status.
1. Updating.
2. Update failed.
3. Update succeeded.
4. Already the latest version.
5. Update service unavailable.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.startOsu(0).then(() => { console.log(`startOsu invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`startOsu, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.getDownloadableProfileMetadata18+ getDownloadableProfileMetadata\(slotId: number, portIndex: number, profile: DownloadableProfile, forceDisableProfile: boolean\): Promise\ Obtains the metadata of the downloadable profile. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description | | ------ | ------ | ----- |------------------------------------------------------------------------------------------------------| | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2 | | portIndex | number | Yes| Port index of the slot. | | profile | [DownloadableProfile](./js-apis-esim.md#downloadableprofile18) | Yes| Downloadable profile. | | forceDisableProfile | boolean | Yes| Whether to forcibly deactivate the current profile during profile switching.
**true**: The current profile is forcibly deactivated, and profile switching can be directly performed.
**false**: An error is returned, and profile switching can be performed only after the user authorization is obtained.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[GetDownloadableProfileMetadataResult](#getdownloadableprofilemetadataresult18)\> | Promise used to return the metadata of the downloadable profile.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; let profile: eSIM.DownloadableProfile = { activationCode:'1', confirmationCode:'1', carrierName:'test', accessRules:[{ certificateHashHexStr:'test', packageName:'com.example.testcoreservice', accessType:0 }] }; eSIM.getDownloadableProfileMetadata(0, 0, profile, true).then((data: eSIM.GetDownloadableProfileMetadataResult) => { console.log(`getDownloadableProfileMetadata, GetDownloadableProfileMetadataResult: data->${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getDownloadableProfileMetadata, GetDownloadableProfileMetadataResult: err->${JSON.stringify(err)}`); }); ``` ## eSIM.getDownloadableProfiles18+ getDownloadableProfiles\(slotId: number, portIndex: number, forceDisableProfile: boolean\): Promise\ Obtains the list of downloadable profiles. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.GET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | portIndex | number | Yes| Port index of the slot.| | forceDisableProfile | boolean | Yes| Whether to forcibly deactivate the current profile during profile switching.
**true**: The current profile is forcibly deactivated, and profile switching can be directly performed.
**false**: An error is returned, and profile switching can be performed only after the user authorization is obtained.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[GetDownloadableProfilesResult](#getdownloadableprofilesresult18)\> | Promise used to return the list of downloadable profiles.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.getDownloadableProfiles(0, 0, true).then((data: eSIM.GetDownloadableProfilesResult) => { console.log(`getDownloadableProfiles, GetDownloadableProfilesResult: data->${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getDownloadableProfiles, GetDownloadableProfilesResult: err->${JSON.stringify(err)}`); }); ``` ## eSIM.downloadProfile18+ downloadProfile\(slotId: number, portIndex: number, profile: DownloadableProfile, configuration: DownloadConfiguration\): Promise\ Downloads a profile. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | portIndex | number | Yes| Port index of the slot.| | profile | [DownloadableProfile](./js-apis-esim.md#downloadableprofile18) | Yes| Downloadable profile.| | configuration | [DownloadConfiguration](#downloadconfiguration18) | Yes| Download configuration.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[DownloadProfileResult](#downloadprofileresult18)\> | Promise used to return the profile download result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; let profile: eSIM.DownloadableProfile = { activationCode:'1', confirmationCode:'1', carrierName:'test', accessRules:[{ certificateHashHexStr:'test', packageName:'com.example.testcoreservice', accessType:0 }] }; let configuration: eSIM.DownloadConfiguration = { switchAfterDownload: true, forceDisableProfile: true, isPprAllowed: true, }; eSIM.downloadProfile(0, 0, profile, configuration).then((data: eSIM.DownloadProfileResult) => { console.log(`downloadProfile, DownloadProfileResult: data->${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`downloadProfile, DownloadProfileResult: err->${JSON.stringify(err)}`); }); ``` ## eSIM.getEuiccProfileInfoList18+ getEuiccProfileInfoList\(slotId: number\): Promise\ Obtains the profile information list. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.GET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[GetEuiccProfileInfoListResult](#geteuiccprofileinfolistresult18)\> | Promise used to return the profile information list.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.getEuiccProfileInfoList(0).then((data: eSIM.GetEuiccProfileInfoListResult) => { console.log(`getEuiccProfileInfoList, GetEuiccProfileInfoListResult: data->${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getEuiccProfileInfoList, GetEuiccProfileInfoListResult: err->${JSON.stringify(err)}`); }); ``` ## eSIM.getEuiccInfo18+ getEuiccInfo\(slotId: number\): Promise\ Obtains eUICC information. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.GET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[EuiccInfo](#euiccinfo18)\> | Promise used to return the eUICC information.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.getEuiccInfo(0).then((data: eSIM.EuiccInfo) => { console.log(`getEuiccInfo, EuiccInfo: data->${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getEuiccInfo, EuiccInfo: err->${JSON.stringify(err)}`); }); ``` ## eSIM.deleteProfile18+ deleteProfile\(slotId: number, iccid: string\): Promise\ Deletes a profile. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | iccid | string | Yes| Profile ID.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[ResultCode](#resultcode18)\> | Promise used to return the operation result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.deleteProfile(0, testId).then(() => { console.log(`deleteProfile invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`deleteProfile, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.switchToProfile18+ switchToProfile\(slotId: number, portIndex: number, iccid: string, forceDisableProfile: boolean\): Promise\ Switches to the specified profile. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | portIndex | number | Yes| Port index of the slot.| | iccid | string | Yes| Profile ID. | | forceDisableProfile | boolean | Yes| Whether to forcibly deactivate the current profile during profile switching.
**true**: The current profile is forcibly deactivated, and profile switching can be directly performed.
**false**: An error is returned, and profile switching can be performed only after the user authorization is obtained.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[ResultCode](#resultcode18)\> | Promise used to return the operation result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.switchToProfile(0, 0, testId, true).then(() => { console.log(`switchToProfile invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`switchToProfile, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.setProfileNickname18+ setProfileNickname\(slotId: number, iccid: string, nickname: string\): Promise\ Sets a nickname for the specified profile. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | iccid | string | Yes| Profile ID.| | nickname | string | Yes| Profile nickname.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[ResultCode](#resultcode18)\> | Promise used to return the operation result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.setProfileNickname(0, testId, testName).then(() => { console.log(`setProfileNickname invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`setProfileNickname, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.resetMemory18+ resetMemory\(slotId: number, options?: ResetOption\): Promise\ Clears all specific profiles and resets the eUICC. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | options | [ResetOption](#resetoption18) | No| Reset options.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[ResultCode](#resultcode18)\> | Promise used to return the operation result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.resetMemory(0).then(() => { console.log(`resetMemory invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`resetMemory, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.reserveProfilesForFactoryRestore18+ reserveProfilesForFactoryRestore\(slotId: number\): Promise\ Restores factory settings and retains profiles. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[ResultCode](#resultcode18)\> | Promise used to return the operation result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.reserveProfilesForFactoryRestore(0).then(() => { console.log(`reserveProfilesForFactoryRestore invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`reserveProfilesForFactoryRestore, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.setDefaultSmdpAddress18+ setDefaultSmdpAddress\(slotId: number, address: string\): Promise\ Sets or updates the default SM-DP+ address stored in the eUICC. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | address | string | Yes| Default SM-DP+ address.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[ResultCode](#resultcode18)\> | Promise used to return the operation result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.setDefaultSmdpAddress(0, testAddress).then(() => { console.log(`setDefaultSmdpAddress invoking succeeded.`); }).catch((err: BusinessError) => { console.error(`setDefaultSmdpAddress, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.getDefaultSmdpAddress18+ getDefaultSmdpAddress\(slotId: number\): Promise\ Obtains the default SM-DP+ address stored in the eUICC. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.GET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\ | Promise used to return the SM-DP+ address.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.getDefaultSmdpAddress(0).then((data: string) => { console.log(`getDefaultSmdpAddress, result: data->${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getDefaultSmdpAddress, ErrorState: err->${JSON.stringify(err)}`); }); ``` ## eSIM.cancelSession18+ cancelSession\(slotId: number, transactionId: string, cancelReason: CancelReason\): Promise\ Cancels a session. This API uses a promise to return the result. **System API**: This is a system API. **Required permission**: ohos.permission.SET_TELEPHONY_ESIM_STATE **System capability**: SystemCapability.Telephony.CoreService.Esim **Parameters** | Name| Type| Mandatory| Description| | ------ | ------ | ----- | ----- | | slotId | number | Yes| Card slot ID.
- **0**: card slot 1.
- **1**: card slot 2| | transactionId | string | Yes| Service ID.| | cancelReason | [CancelReason](#cancelreason18) | Yes| Reason for canceling the session.| **Returns** | Type | Description | | --------------------- | ---------------------------------- | | Promise\<[ResultCode](#resultcode18)\> | Promise used to return the operation result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | --------------------- | ---------------------------------- | | 201 | Permission denied. | | 202 | Non-system applications use system APIs. | | 401 | Invalid parameter value.| | 801 | Capability not supported. | |3120001| Service connection failed. | |3120002| System internal error. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { eSIM } from '@kit.TelephonyKit'; eSIM.cancelSession(0, testId, CancelReason::CANCEL_REASON_END_USER_REJECTION).then((data: string) => { console.log(`cancelSession, result: data->${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`cancelSession execution failed: err->${JSON.stringify(err)}`); }); ``` ## AccessRule18+ Defines access rules. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | certificateHashHexStr | string | Yes | Hex string of the certificate hash.| | packageName | string | Yes | Package name.| | accessType | number | Yes | Rule type.| ## GetDownloadableProfileMetadataResult18+ Obtains the metadata of the downloadable profile. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | downloadableProfile | DownloadableProfile | Yes | Downloadable profile. | | pprType | number | Yes | Profile policy rule type.| | pprFlag | boolean | Yes | Whether the profile has a policy rule. The value **true** indicates that the the profile has a policy rule, and the value **false** indicates the opposite.| | iccid | string | Yes | Profile ICCID. | | serviceProviderName | string | Yes | Service provider name.| | profileName | string | Yes | Profile name.| | profileClass | ProfileClass | Yes | Profile class. | | solvableErrors | SolvableErrors | Yes | Solvable errors.| | responseResult | ResultCode | Yes | Operation result code. | ## GetDownloadableProfilesResult18+ Obtains the list of default downloadable profiles. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | responseResult | ResultCode | Yes | Promise used to return the operation result. | | downloadableProfiles | Array\ | Yes | Downloadable file array.| ## DownloadProfileResult18+ Defines the profile download result. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | responseResult | ResultCode | Yes | Operation result code.| | solvableErrors | SolvableErrors | Yes | Solvable errors.| | cardId | number | Yes | Card ID. | ## GetEuiccProfileInfoListResult18+ Obtains the profile information list. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | responseResult |ResultCode | Yes | Promise used to return the operation result. | | profiles | Array\ | Yes | Profile array. | | isRemovable | boolean | Yes | Whether the eUICC is removable. The value **true** indicates that the eUICC is removable, and the value **false** indicates the opposite.| ## OperatorId18+ Obtains information about the eUICC chip or device. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | mcc | string | Yes | Mobile country code (MCC).| | mnc | string | Yes | Network code. | | gid1 | string | Yes | Group ID level 1. | | gid2 | string | Yes | Group ID level 2. | ## EuiccProfile18+ Profile information. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | iccid | string | Yes | Profile ICCID.| | nickName | string | Yes | Profile nickname.| | serviceProviderName | string | Yes | Service provider name.| | profileName | string | Yes | Profile name. | | state | ProfileState | Yes | Profile status.| | profileClass | ProfileClass | Yes | Profile class. | | operatorId | OperatorId | Yes | Operation ID of the profile.| | policyRules | PolicyRules | Yes | Profile policy rules. | | accessRules | Array\ | Yes | Profile access rules. | ## EuiccInfo18+ Defines the eUICC information. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| | osVersion | string | Yes | OS version.| ## ResetOption18+ Defines the reset options. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | |DELETE_OPERATIONAL_PROFILES | 1 | Deletion of all operational profiles.| |DELETE_FIELD_LOADED_TEST_PROFILES | 1 << 1 | Deletion of the downloaded test profiles.| |RESET_DEFAULT_SMDP_ADDRESS | 1 << 2 | Resetting of the default SM-DP+ address.| ## OsuStatus18+ Defines the OS upgrade status. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | |EUICC_UPGRADE_IN_PROGRESS | 1 | Upgrading.| |EUICC_UPGRADE_FAILED | 2 | Upgrade failed.| |EUICC_UPGRADE_SUCCESSFUL | 3 | Update succeeded.| |EUICC_UPGRADE_ALREADY_LATEST | 4 | Already the latest version.| |EUICC_UPGRADE_SERVICE_UNAVAILABLE | 5 | Update service unavailable.| ## ResultCode18+ Enumerates the result codes. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | | RESULT_SOLVABLE_ERRORS | -2 | Solving of the solvable errors required. | | RESULT_MUST_DISABLE_PROFILE | -1 | Disabling of the active profile required.| | RESULT_OK | 0 | Operation success.| | RESULT_GET_EID_FAILED | 201 | Failed to obtain the EID.| | RESULT_ACTIVATION_CODE_CHANGED | 203 | Activation code changed upon user confirmation. | | RESULT_ACTIVATION_CODE_INVALID | 204 | Invalid activation code. | | RESULT_SMDP_ADDRESS_INVALID | 205 | Invalid SM-DP+ server address.| | RESULT_EUICC_INFO_INVALID | 206 | Invalid eUICC information. | | RESULT_TLS_HANDSHAKE_FAILED | 207 | TLS handshake failed. | | RESULT_CERTIFICATE_IO_ERROR | 208 | Certificate network connection error. | | RESULT_CERTIFICATE_RESPONSE_TIMEOUT | 209 | Invalid certificate address or response timeout.| | RESULT_AUTHENTICATION_FAILED | 210 | Authentication failed. | | RESULT_RESPONSE_HTTP_FAILED | 211 | HTTP response failed.| | RESULT_CONFIRMATION_CODE_INCORRECT | 212 | Incorrect confirmation code.| | RESULT_EXCEEDED_CONFIRMATION_CODE_TRY_LIMIT | 213 | Maximum confirmation code retries reached. | | RESULT_NO_PROFILE_ON_SERVER | 214 | No downloadable profile available on the server.| | RESULT_TRANSACTION_ID_INVALID | 215 | Invalid transaction ID. | | RESULT_SERVER_ADDRESS_INVALID | 216 | Invalid server address.| | RESULT_GET_BOUND_PROFILE_PACKAGE_FAILED | 217 | Failed to obtain the BPP. | | RESULT_USER_CANCEL_DOWNLOAD | 218 | Download cancelled by the user. | | RESULT_SERVER_UNAVAILABLE | 220 | Carrier server unavailable.| | RESULT_PROFILE_NON_DELETE | 223 | File deletion not allowed by the PPR rule. | | RESULT_SMDP_ADDRESS_INCORRECT | 226 | Incorrect SMDP server address. | | RESULT_ANALYZE_AUTHENTICATION_SERVER_RESPONSE_FAILED | 228 | Failed to parse the server authentication response.| | RESULT_ANALYZE_AUTHENTICATION_CLIENT_RESPONSE_FAILED | 229 | Failed to parse the client authentication response.| | RESULT_ANALYZE_AUTHENTICATION_CLIENT_MATCHING_ID_REFUSED | 231 | Failed to parse the client authentication response because the matching ID was rejected.| | RESULT_PROFILE_TYPE_ERROR_AUTHENTICATION_STOPPED | 233 | Authentication stopped due to incorrect profile type. | | RESULT_CARRIER_SERVER_REFUSED_ERRORS | 249 | Rejection cause code of the carrier server, which is 3.8.| | RESULT_CERTIFICATE_INVALID | 251 | Invalid certificate.| | RESULT_OUT_OF_MEMORY | 263 | Failed to install the profile due to insufficient memory.| | RESULT_PPR_FORBIDDEN | 268 | Operation not allowed by the PPR rule.| | RESULT_NOTHING_TO_DELETE | 270 | No configuration file for deletion.| | RESULT_PPR_NOT_MATCH | 276 | PPR rule mismatch. | | RESULT_CAT_BUSY | 283 | Session in progress. | | RESULT_PROFILE_EID_INVALID | 284 | eSIM profile in use or invalid.| | RESULT_DOWNLOAD_TIMEOUT | 287 | Download timeout. | | RESULT_SGP_22_OTHER | 400 | Other errors defined in SGP.22. | ## CancelReason18+ Reason for canceling the session. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | |CANCEL_REASON_END_USER_REJECTION | 0 | The user has rejected the download. | |CANCEL_REASON_POSTPONED | 1 | The download has been delayed. You can restart it later.| |CANCEL_REASON_TIMEOUT | 2 | The download has timed out. You can restart it later.| |CANCEL_REASON_PPR_NOT_ALLOWED | 3 | The installation cannot be performed because the authorization table or other installed profile on the eUICC does not allow its policy rules.| ## ProfileState18+ Enumerates the profile states. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | |PROFILE_STATE_UNSPECIFIED | -1 | Profile status unspecified.| |PROFILE_STATE_DISABLED | 0 | Profile disabled. | |PROFILE_STATE_ENABLED | 1 | Profile enabled.| ## ProfileClass18+ Enumerates the profile classes. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | |PROFILE_CLASS_UNSPECIFIED | -1 | Profile class unspecified. | |PROFILE_CLASS_TEST | 0 | Test profile. | |PROFILE_CLASS_PROVISIONING | 1 | Profile preloaded to the eUICC. | |PROFILE_CLASS_OPERATIONAL | 2 | Profile that can be preloaded or downloaded.| ## PolicyRules18+ Enumerates the profile policy rules. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | |POLICY_RULE_DISABLE_NOT_ALLOWED | 1 | A profile cannot be disabled after being enabled.| |POLICY_RULE_DELETE_NOT_ALLOWED | 1 << 1 | The profile cannot be deleted. | |POLICY_RULE_DISABLE_AND_DELETE | 1 << 2 | A profile must be deleted immediately after being enabled. | ## SolvableErrors18+ Enumerates the solvable errors. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Value| Description| | ----- | ----- | ----- | |SOLVABLE_ERROR_NEED_CONFIRMATION_CODE | 1 << 0 | The user needs to enter the confirmation code during the download. | |SOLVABLE_ERROR_NEED_POLICY_RULE | 1 << 1 | The download process requires user consent to allow the profile policy rules.| ## DownloadConfiguration18+ Defines the download configuration. **System API**: This is a system API. **System capability**: SystemCapability.Telephony.CoreService.Esim | Name| Type| Mandatory| Description| | ----- | ----- | ----- | -----| |switchAfterDownload | boolean | Yes| Whether to enable the profile after successful download. The value **true** means to enable the default profile, and the value **false** means the opposite.| |forceDisableProfile | boolean | Yes| Whether to forcibly deactivate the current profile during profile switching.
**true**: The current profile is forcibly deactivated, and profile switching can be directly performed.
**false**: An error is returned, and profile switching can be performed only after the user authorization is obtained.| |isPprAllowed | boolean | Yes| Whether user authorization is obtained to implement the profile policy rule. The value **true** indicates that user authorization is obtained, and the value **false** indicates the opposite.|