# Initialization

Here is how to initialize the Wepin Widget JavaScript SDK.

First, create a <mark style="color:blue;">`Wepin`</mark> instance and initialize the instance using the App ID and App Key assigned after app registration.

## `init`

Initialize the <mark style="color:blue;">`Wepin`</mark> object through the <mark style="color:blue;">`init`</mark> method. Assign the App ID and App SDK Key allocated during the app registration process at initialization. Additionally, define the properties of the widget that are needed.

```javascript
const testAppId = 'app_id_eg12sf3491azgs520' // Test App ID
const testAppKey = 'ak_test_ghq1D5s1sfG234sbnhdsw24mnovk313' // Test App Key 
const attributes = {
  type: 'hide',
  defaultLanguage: 'ko',
  defaultCurrency : 'KRW',
  loginProviders: ['google', 'apple'],
}

const wepin = await Wepin.init( 
  testAppId,
  testAppKey,
  attributes
)
```

The parameters for <mark style="color:blue;">`init`</mark> are as follows.&#x20;

* **`appId`**: *String*\
  App ID assigned during registration
* **`appKey`**: *String*\
  App Key assigned during registration
* **`attributes`**: *Object (optional)*\
  Properties of the Wepin Widget
  * **`type`**: *String*\
    The type of display of widget as <mark style="color:blue;">`Wepin`</mark> is initiated. The default value is <mark style="color:blue;">`hide`</mark>. \
    `show`: Show the widget window immediately after loading for the first time.\
    `hide`: Hide the widget window initially when loading and show it later using <mark style="color:blue;">`openWindow()`</mark>.
  * **`defaultLanguage`**: *String*\
    The language to be displayed on the widget. The default value is <mark style="color:blue;">`ko`</mark>. The currently supported languages are <mark style="color:blue;">`en`</mark> and <mark style="color:blue;">`ko`</mark>.
  * **`defaultCurrency`:** *String*\
    The currency to be displayed on the widget. The default value is <mark style="color:blue;">`KRW`</mark>. The currently supported currencies are <mark style="color:blue;">`USD`</mark> and <mark style="color:blue;">`KRW`</mark>.
  * **`loginProviders`**: *\[String]*\
    Here is the list of login providers: <mark style="color:blue;">`google`</mark>, <mark style="color:blue;">`apple`</mark>, <mark style="color:blue;">`naver`</mark>, and <mark style="color:blue;">`discord`</mark>. Define and use only the necessary login providers. If you do not specify this value, all the four providers can be used by default.
    * The `loginProviders` parameter is supported from `@wepin/types` version <mark style="color:blue;">`v0.0.11`</mark> or higher.

## `isInitialized`

You can use <mark style="color:blue;">`isInitialized`</mark> to check if the Wepin object has been successfully initialized.

The returned value is as follows.

* *boolean*\
  init result; <mark style="color:orange;">`true`</mark> if Wepin SDK is already initialized, otherwise <mark style="color:orange;">`false`</mark>.

## Example

```javascript
const testAppId = 'app_id_eg12sf3491azgs520' // Test App ID
const testAppKey = 'ak_test_ghq1D5s1sfG234sbnhdsw24mnovk313' // Test App Key 
const attributes = {
  type: 'hide',
  defaultLanguage: 'ko',
  defaultCurrency : 'KRW',
}

const wepin = await Wepin.init( 
  testAppId,
  testAppKey,
  attributes
)
if(wepin.isInitialized()) {
  console.log('wepin is initialized!')
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.wepin.io/en/deprecated/web-javascript-sdk/sdk/initialization.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
