Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
μ΄ νμ΄μ§λ Klipκ³Ό Klip κ°λ°μ κ°μ΄λλ₯Ό μκ°ν©λλ€.
Klipμ μ¬μ©μμ λμ§νΈ μμ°μ μ½κ³ νΈλ¦¬νκ² κ΄λ¦¬ν΄ μ£Όλ κ°μΈ λμ§νΈ μ§κ° μλΉμ€μ λλ€. μ§κΈκΉμ§ λ€μν λΈλ‘μ²΄μΈ μ§κ°μ΄ μμμ§λ§, μ΄λ €μ΄ μ¬μ©μ κ²½νμΌλ‘ μΈν΄ μ νμ μΌλ‘ νμ©λμμ΅λλ€. Klipμ μΉ΄μΉ΄μ€ κ³μ κ³Ό μ°λλμ΄ λ©μ μ λ§νΌ μ¬μ΄ μ¬μ©μ κ²½νμ μ 곡ν©λλ€. λν, Kaia κΈ°λ°μ λ€μν λΈλ‘μ²΄μΈ μλΉμ€λ€μ μκ°νλ 창ꡬ κΈ°λ₯μ νλ©° λΈλ‘μ²΄μΈ μλΉμ€ νμ°μ κΈ°μ¬ν©λλ€.
BApp(Blockchain Application)μ DApp(Decentralized Application)κ³Ό μ μ¬νμ§λ§, DAppκ³Ό λ¬λ¦¬ νμ€μνλ₯Ό λμ΄ λΈλ‘체μΈμ λ€λ₯Έ λ§μ μ₯μ κΉμ§ ν‘μν λ ν¬κ΄μ μΈ κ°λ μΌλ‘ μ¬μ©λ μ©μ΄μ λλ€. DApp κ°λ°μ κ΄ν μμΈν λ΄μ©μ λ₯Ό νμΈνμκΈ° λ°λλλ€.
μΉ΄λλ Klipμμ μ¬μ©λλ λμ§νΈ μμ°μΌλ‘, μΌλ°μ μΌλ‘ NFTλ₯Ό κ°λ¦¬ν΅λλ€. Klip ννΈλμ¬λ μμ°(κ²μ μμ΄ν , ν μΈ μΏ ν° λ±)μ μΉ΄λ ννλ‘ λ°ννκ³ Klip μ¬μ©μ λλ BApp μ¬μ©μμκ² λ³΄λΌ μ μμ΅λλ€. μ¬μ©μλ μΉ΄λλ₯Ό λ°κ³ Klip μ§κ°μμ μνλ μΉ΄λλ₯Ό μ¬μ©νκ±°λ λ λ€λ₯Έ μ¬λμκ² λ³΄λΌ μ μμ΅λλ€. μ΄ κ³Όμ μμ Klip ννΈλμ¬λ μμ μ BAppμ μ μ¬ κ³ κ°μκ² μλ¦¬κ³ μ΄λ€μ ꡬ맀 κ³ κ°μΌλ‘ μ νν μ μμ΅λλ€.
λͺ¨λ μΉ΄λλ κΈ°λ³Έμ μΌλ‘ (Non-Fungible Token)μ λλ€. λ체 λΆκ°λ₯ν ν ν°μ κ°λ¨νκ² λ§νλ©΄ "νν"(λΉνΈμ½μΈ, μ΄λ리μ λ±)κ° μλ "κ³ μ ν μμ°"μ λλ€. 5λ§μκΆ μ§ν 1μ₯μ λ€λ₯Έ 5λ§μκΆ μ§ν 1μ₯μΌλ‘ μλ²½ν λ체 κ°λ₯ν©λλ€. νμ§λ§, λ΄ μμ μνμ λ€λ₯Έ μ΄μ μμ μνμΌλ‘ λ체 λΆκ°λ₯ν©λλ€. λ€λ₯Έ μ΄μ λͺ μμ΄ μ£Όλ κ°μΉμ λ΄ λͺ μμ΄ μ£Όλ κ°μΉκ° μλ‘ κ°μ§ μκ³ λΉκ΅νκΈ°λ μ΄λ ΅κΈ° λλ¬Έμ λλ€. μ΄λ κ² μμ§ν, μμ μν, κ°μΈμ© λ¬Όν λ± κ³ μ ν μμ°μ λμ§νΈννμ¬ λΈλ‘체μΈμμ ν ν° ννλ‘ ννν κ²μ΄ λ°λ‘ λ체 λΆκ° ν ν°μ λλ€. μΉ΄λλ BAppμμ μ¬μ©νλ λ체 λΆκ° ν ν°μ΄λ©° Klip μ¬μ©μλ Klipμμ μΉ΄λλ₯Ό μ°κ³ κ΅νν©λλ€.
Klip APIλ μΈλΆ μλΉμ€μμ APIλ₯Ό ν΅ν΄ Klipμ μλ μ½μΈ λ° λ체 κ°λ₯ν ν ν°(FT)μ μ μ‘νκ±°λ Klipμμ μΉ΄λ(NFT)λ₯Ό λ°ν, μ‘°ν, μ μ‘ λλ μμ νλ κΈ°λ₯μ μ 곡ν©λλ€. Klip APIλ Klip Partners APIμ App2App APIλ‘ κ΅¬μ±λ©λλ€. Klipμ Kaia μΈμ Ethereum, Polygon μμ°μ λν΄μλ λμΌν κΈ°λ₯μ μ 곡ν©λλ€.
Klip Partners APIλ μλΉμ€μ κ°μ ν ννΈλμ¬μμ μ§μ μΉ΄λλ₯Ό λ°ν, μ‘°ν, μ μ‘, μμ νκΈ° μν APIμ λλ€. 볡μ‘ν μ€λ§νΈ 컨νΈλνΈ λ°°ν¬λ κ΄λ¦¬ λ° μ΄μμμ΄ κ°λ¨ν APIλ₯Ό μ¬μ©νμ¬ μΉ΄λλ₯Ό νμ©νλ BAppμ κ°λ°ν μ μμ΅λλ€. Klip Partners APIλ₯Ό μ¬μ©νκΈ° μν μ μ°¨λ μλμ κ°μ΅λλ€.
Klip Partnersμ κ°μ μ μ²μ ν©λλ€.
Klip μ΄μμ§κ³Ό λ³λ νμλ₯Ό κ±°μ³ κ°μ μΉμΈμ μ»μ ν μΌλ‘ μ¬μ΄νΈμ λ‘κ·ΈμΈν©λλ€.
λ‘κ·ΈμΈ ν, λ‘ μΉ΄λ μ΄λ―Έμ§λ‘ μΈ μ΄λ―Έμ§ νμΌμ μ λ‘λν©λλ€.
λλ λ‘ μ λ‘λν μ΄λ―Έμ§λ₯Ό μ¬μ©ν΄ μΉ΄λλ₯Ό μ§μ λ°νν©λλ€.
λν APIλ₯Ό ν΅ν΄μ κ³μ λ° μΉ΄λλ₯Ό μ½κ² κ΄λ¦¬ν μ μμ΅λλ€.
μΌλ‘ λ‘κ·ΈμΈν ν
λ‘ κ³μ λΉλ°λ²νΈλ₯Ό λ³κ²½ν©λλ€.
μΌλ‘ ν λ²νΈλ₯Ό λ³κ²½ν©λλ€.
λ‘ μΉ΄λ μ 보λ₯Ό μ‘°ννκ³ μΉ΄λλ₯Ό μμ ν©λλ€.
App2App APIλ BApp κ°λ°μκ° λ³λ κ°μ μ μ°¨μμ΄ Klip μ¬μ©μλ₯Ό μΈμ¦νκ³ ν΄λΉ μ¬μ©μμ ν ν° λ° μΉ΄λλ₯Ό μ μ‘νκΈ° μν APIμ λλ€. λν μ§μ κ°λ°ν μ€λ§νΈ 컨νΈλνΈ μ€νμ Klip μ¬μ©μμκ² μμ²ν μ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ Klip μ±μ΄ μ€μΉλ λͺ¨λ°μΌ νκ²½μμ BAppμ΄ Deep Linkλ₯Ό ν΅ν΄ Klipμ μλͺ μ μμ²νλ λ°©μμΌλ‘ λμν©λλ€.
App2App APIλ μλμ κ°μ μν©μμ νμ©ν μ μμ΅λλ€.
BApp μ¬μ©μμ Klip μ§κ° μ£Όμ μΈμ¦
Klipμ ν΅ν KAIA, ν ν° μ μ‘
Klipμ ν΅ν μΉ΄λ μ‘°ν λ° μ μ‘
Klipμ ν΅ν Smart Contract μ€ν
App2App APIλ₯Ό μ¬μ©νκΈ° μν μ μ°¨λ μλμ κ°μ΅λλ€.
νμμ BApp κ°λ°νκ²½μ λ§λ SDKλ₯Ό λ€μ΄λ‘λ λ°μ μ€μΉν©λλ€. λλ REST APIλ₯Ό μ΄μ©ν μλ μμ΅λλ€.
Prepare, Request λ° Result APIλ₯Ό μ΄μ©νμ¬ Klip μ¬μ©μ μΈμ¦ λλ μλͺ κΈ°λ₯μ BAppμ ꡬνν©λλ€. Prepare μ€ν μμ App2App API μμ²μ μν keyλ₯Ό λ°κΈλ°κ³ , Request μ€ν μμ Klipμ μ€νν©λλ€. λ§μ§λ§ Result μ€ν μμ μμ²μ λν κ²°κ³Όλ₯Ό νμΈν μ μμ΅λλ€.
μ°Έκ³ λ‘ PC λλ 물리μ μΌλ‘ λ¨μ΄μ§ λͺ¨λ°μΌ νκ²½μμλ QR codeλ₯Ό μ΄μ©νμ¬ Request μ€ν μ μ²λ¦¬ν μ μμ΅λλ€. μμΈν λ΄μ©μ νμ μ°Έμ‘°νμμμ€.
Klip κ°λ°μ κ°μ΄λλ BApp κ°λ°μ λλ ννΈλμ¬κ° Klipμμ μ 곡νλ λ€μν APIλ₯Ό νμ©νμ¬ ν ν°(FT)μ μ‘°ννκ³ μ μ‘νκ±°λ μΉ΄λ(NFT)λ₯Ό λ°ν, μ‘°ν, μ μ‘ λλ μμ νλλ‘ μλ΄νλ λ¬Έμμ λλ€.
μ΄ λ¬Έμλ API λλ κ°λ°μ κ΄ν κΈ°λ³Έμ μΈ μ 보λ₯Ό ν¬ν¨νκ³ μμ΅λλ€. μ΄ μ 보λ λ³κ²½λ μ μμΌλ©° μ΄ λ¬Έμλ₯Ό λ°λΌ ꡬνν μννΈμ¨μ΄λ λ°λμ μ΅μ’ μ μΌλ‘ μ΄μ 체μ μννΈμ¨μ΄μ ν¨κ» ν μ€νΈλμ΄μΌ ν©λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
μ΄ νμ΄μ§λ Klip REST APIλ₯Ό μκ°ν©λλ€.
Klip REST APIλ Klip Partners APIμ App2App APIλ‘ κ΅¬μ±λ©λλ€.
Klip Partners APIλ μΉ΄λ(NFT)λ₯Ό λ°ν, μ μ‘, μμ , κ΄λ¦¬νλ κΈ°λ₯ ꡬνμ μν REST APIμ λλ€. Klip Partners APIλ μΉ΄λ λ°νμ μν Klip Partners κ³μ λ‘κ·ΈμΈ, κ³μ κ΄λ¦¬ κΈ°λ₯λΆν° μΉ΄λλ₯Ό λ°ν, μ μ‘, κ΄λ¦¬νκΈ° μν APIλ₯Ό μ 곡ν©λλ€.
Get Card Information By BApp, Get Card InformationμΌλ‘ λ°νν μΉ΄λ μ 보λ₯Ό μ‘°νν©λλ€.
Send Card To User λλ Send Card To Klip Memberλ‘ λ°νν μΉ΄λλ₯Ό λ€λ₯Έ μ¬λμκ² μ μ‘ν©λλ€.
Klipκ³Ό Klip APIλ₯Ό μκ°ν©λλ€.
μΈμ¦, νμ΄μ§λ€μ΄μ , μλ¬μ½λ, μ©μ΄λ₯Ό μκ°ν©λλ€.
Klip Partners APIμ App2App APIλ₯Ό μκ°ν©λλ€.
App2App APIλ₯Ό Javascript, Android, iOS νκ²½μμ μ 곡νλ SDKλ₯Ό μκ°ν©λλ€.
Klip Partners APIμ App2App API νν 리μΌμ μκ°ν©λλ€.
API λ³κ²½ μ΄λ ₯μ μκ°ν©λλ€.


App2App APIλ μ¬λ¬λΆμ BAppμ Klipκ³Ό μ°λνλ κΈ°λ₯ ꡬνμ μν APIμ λλ€. App2App APIλ BAppμμ Klip μ¬μ©μ κ³μ μ μ κ·Όνμ¬ KAIA, μΉ΄λ, ν ν°μ μ μ‘νκ±°λ μ€λ§νΈ 컨νΈλνΈλ₯Ό μ€ννλ μμ²μ μννλ REST APIλ₯Ό μ 곡ν©λλ€. App2App APIλ SDK(iOS, Android, JavaScript)λ‘λ μ 곡λ©λλ€.
μΉ΄λλ₯Ό λ°ν, μ μ‘, κ΄λ¦¬νλ κΈ°λ₯ μ 곡
BAppκ³Ό Klipμ μ°λν΄ μΉ΄λ, ν ν°, KAIA μ μ‘ λ° μ»¨νΈλνΈ μ€ν μμ² κΈ°λ₯ μ 곡
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ κ°λ°μ ν¬λΌμ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
μ΄ νμ΄μ§λ Klipμ SDKλ₯Ό μκ°ν©λλ€.
App2App SDKλ μ¬λ¬λΆμ΄ κ°λ°νλ μ ν리μΌμ΄μ μμ Klipμ λ μ½κ² νμ©ν μ μλλ‘ λμμ£Όλ SDKμ λλ€.
νμ¬ Klipμ Kaia μΈμλ λ€μν μ²΄μΈ κΈ°λ° μμ°μ 보κ΄/μ μ‘ κΈ°λ₯μ μ 곡νκ³ μμΌλ, λ³Έ λ¬Έμλ₯Ό ν΅ν΄ μ 곡λλ SDKλ Kaia κΈ°λ°μ μμ°λ§ μ‘°ν/μ μ‘μ΄ κ°λ₯ν μ μ°Έκ³ λΆνλ립λλ€. Kaia μΈμ λ€λ₯Έ 체μΈμ μ§μνλ κΈ°λ₯μ μΆν μ 곡λ μμ μ λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
Web νκ²½μμ μ¬μ©κ°λ₯ν APIλ₯Ό μκ°
Javascript
Android νκ²½μμ μ¬μ©κ°λ₯ν APIλ₯Ό μκ°
Java
iOS νκ²½μμ μ¬μ©κ°λ₯ν APIλ₯Ό μκ°
Swift
νλ«νΌλ³ SDK λ€μ΄λ‘λ
Sample & SDK
μ΄ νμ΄μ§μμλ Klip Partners APIμ App2App APIμ μ¬μ©μ μΈμ¦, νμ΄μ§λ€μ΄μ , λ¦¬ν΄ μ½λ, μ½μ΄ λ±μ μ€λͺ ν©λλ€.
Klip Partners APIλ₯Ό μ¬μ©νκΈ° μν΄μλ JWT κΈ°λ° μ‘μΈμ€ ν ν° λ°κΈμ΄ νμν©λλ€. Klip Partners νμ κ°μ μ λ±λ‘ν λ‘κ·ΈμΈ IDμ λΉλ°λ²νΈλ₯Ό ν΅ν΄μ ν ν°μ λ°κΈ λ°μ μ μμ΅λλ€. λ°κΈλ ν ν°μ 24μκ° λμ μ ν¨νλ©° λ³΄ν΅ λ§λ£ μ μ μ¬λ°κΈμ΄ νμν©λλ€. λ°κΈλ ν ν°μ API μμ² ν€λμ Authorization νλμ ν ν°μ ν¬ν¨νλ λ°©μμΌλ‘ μ¬μ©ν©λλ€.
보μ μΉ΄λ λ΄μμ μ‘°νν λ μΉ΄λμ μμ λ§μ κ²½μ° ν λ²μ λ°μΌλ©΄ μμ΄ λ§κΈ° λλ¬Έμ μ¬λ¬λ² μμ²ν΄μΌν μ μμ΅λλ€. μ΄λ₯Ό μν΄μ μ‘°ν APIμμλ κ²°κ³Όκ°μ next_cursorλ₯Ό ν¨κ» μ 곡ν©λλ€. μΌλ°μ μΌλ‘ μΉ΄λ κ°μκ° 100κ°λ₯Ό μ΄κ³Όνλ€λ©΄ 1λ² νΈμΆ μ 100κ°μ κ²°κ³Όμ next_cursor κ°μ λ°μ΅λλ€. λλ¨Έμ§ μΉ΄λλ₯Ό μ‘°ννλ €λ©΄ next_cursor κ°μ query νλΌλ―Έν° cursorμ μ λ¬νμ¬ APIλ₯Ό λ€μ νΈμΆν΄μΌν©λλ€.
μλ€ λ€μ΄ 보μ νκ³ μλ μΉ΄λλ₯Ό μ‘°ννλ©΄,
μλμ κ°μ ννμ μλ΅μ λ°μ΅λλ€.
λ¨μ μΉ΄λ λͺ©λ‘μ μ‘°ννλ €λ©΄ next_cursorμ μ΄μ©νμ¬ μλμ κ°μ΄ λ€μ νΈμΆν©λλ€. next_cursorκ° λΉμ΄μμ λκΉμ§ κ³μ νΈμΆνμ¬ λ³΄μ ν μ 체 μΉ΄λ λͺ©λ‘μ μ»μ μ μμ΅λλ€.
μμ²μ΄ μ±κ³΅νλ©΄ HTTP code 200μ λ°μ΅λλ€. λ§μ½ μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ 400, 401, 500μ HTTP codeκ° μ λ¬λ©λλ€. 400μ μμ²μ΄ μλͺ»λ κ²½μ°, 401μ μ ν¨νμ§ μμ μ‘μΈμ€ ν ν°μ μ¬μ©νμ λ 리ν΄λ©λλ€. 500μ μλ²μ μ μ μλ μ₯μ κ° λ°μνμ λ 리ν΄λ©λλ€. 400 λλ 401 μλ¬λ ꡬ체μ μΈ μλ¬ μ½λμ λ©μμ§κ° ν¨κ» μ λ¬λ©λλ€.
μλ¬ λ©μμ§λ JSON ν¬λ§·μΌλ‘ μ λ¬λλ©° νλλ μλμ κ°μ΅λλ€.
μλ¬ λ©μμ§ μ’ λ₯λ μλμ κ°μ΅λλ€.
App2App APIλ κΈ°λ³Έμ μΌλ‘ μΈμ¦μ νμλ‘ νμ§ μμ΅λλ€. νμ§λ§ BApp λ³λ‘ μμ²μ ꡬλΆνκΈ° μν΄μ request keyλ₯Ό λ°κΈνμ¬ API μμ² μ μ¬μ©ν©λλ€. ν΄λΉ keyλ₯Ό ν΅ν΄μ Klip μλ²μμ μμ² λ΄μ©μ ꡬλΆνμ¬ μ»¨ν μ€νΈλ₯Ό μ μ§νμ¬ μ²λ¦¬ν©λλ€. μΌλ°μ μΌλ‘ request keyλ₯Ό λ°κΈλ°κ³ μ¬μ©νλ μ μ°¨λ μλμ κ°μ΅λλ€.
prepare APIλ₯Ό ν΅ν΄ μΈμ¦ λλ μλͺ ν λ΄μ©μ μ λ¬νκ³ μλ΅μΌλ‘ request keyλ₯Ό μ λ¬ λ°μ΅λλ€.
μ λ¬λ°μ request keyλ₯Ό μ΄μ©νμ¬ Deep Link(μ§μ λ μ±μ μλμΌλ‘ μ€ννκ³ ννμ΄μ§κ° μλ νΉμ νμ΄μ§λ‘ κ°κΈ° μν URI)λ₯Ό νΈμΆν©λλ€. Klip μ±μ΄ μ€μΉλ κ²½μ°μλ Klipμ΄ μ€νλκ³ , μ€μΉ λμ§ μμ κ²½μ°μλ μ¬μ©μκ° μ±μ λ€μ΄λ‘λλ°μ μ μμ΅λλ€.
μ²λ¦¬ κ²°κ³Όλ result APIλ₯Ό ν΅ν΄μ pollingνκ³ μ΄ λ Query νλΌλ―Έν° request_keyμ μ΄λ€ μμ²μ λν μ²λ¦¬ κ²°κ³Όλ₯Ό μ»κ³ μ νλμ§λ₯Ό μ λ¬ν©λλ€.
보μ μΉ΄λ λ΄μμ μ‘°νν λ μΉ΄λμ μμ λ§μ κ²½μ° ν λ²μ λ°μΌλ©΄ μμ΄ λ§κΈ° λλ¬Έμ μ¬λ¬λ² μμ²ν΄μΌν μ μμ΅λλ€. μ΄λ₯Ό μν΄μ μ‘°ν APIμμλ κ²°κ³Όκ°μ next_cursorλ₯Ό ν¨κ» μ 곡ν©λλ€. μΌλ°μ μΌλ‘ μΉ΄λ κ°μκ° 100κ°λ₯Ό μ΄κ³Όνλ€λ©΄ 1λ² νΈμΆ μ 100κ°μ κ²°κ³Όμ next_cursor κ°μ λ°μ΅λλ€. λλ¨Έμ§ μΉ΄λλ₯Ό μ‘°ννλ €λ©΄ next_cursor κ°μ query νλΌλ―Έν° cursorμ μ λ¬νμ¬ APIλ₯Ό λ€μ νΈμΆν΄μΌν©λλ€.
μλ€ λ€μ΄ 보μ νκ³ μλ μΉ΄λλ₯Ό μ‘°ννλ©΄,
μλμ κ°μ ννμ μλ΅μ λ°μ΅λλ€.
λ¨μ μΉ΄λ λͺ©λ‘μ μ‘°ννλ €λ©΄ next_cursorμ μ΄μ©νμ¬ μλμ κ°μ΄ λ€μ νΈμΆν©λλ€. next_cursorκ° λΉμ΄μμ λκΉμ§ κ³μ νΈμΆνμ¬ λ³΄μ ν μ 체 μΉ΄λ λͺ©λ‘μ μ»μ μ μμ΅λλ€.
App2App API κΈ°λ³Έμ μΌλ‘ REST APIλ₯Ό μ 곡νμ§λ§, κ° BApp κ°λ°νκ²½μ λ§κ² μ¬μ©ν μ μλ SDKλ₯Ό μ 곡ν©λλ€. νμ¬ μ§μνλ SDK μ’ λ₯λ Android, iOS, λͺ¨λ°μΌ μΉμ© JavaScriptμ λλ€. ꡬ체μ μΈ λ΄μ©μ λ₯Ό μ°Έμ‘°νμμμ€.
μμ²μ΄ μ±κ³΅νλ©΄ HTTP code 200μ λ°μ΅λλ€. λ§μ½ μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ 400, 500μ HTTP codeκ° μ λ¬λ©λλ€. 400μ μμ² λ°μ΄ν°κ° μλͺ»λκ±°λ μ ν¨νμ§ μμ request_keyλ₯Ό μ¬μ©νμ λ 리ν΄λ©λλ€. 500μ μλ²μ μ μ μλ μ₯μ κ° λ°μνμ λ 리ν΄λ©λλ€. 400 μλ¬λ ꡬ체μ μΈ μλ¬ μ½λμ λ©μμ§κ° ν¨κ» μ λ¬λ©λλ€. μμΈν λ΄μ©μ κ° APIλ₯Ό μ°Έμ‘°νμμμ€.
μλ¬ λ©μμ§λ JSON ν¬λ§·μΌλ‘ μ λ¬λλ©° νλλ μλμ κ°μ΅λλ€.
μ΄μ λ³κ°λ‘ μΉ΄λ μ‘°ν API (/v2/a2a/cards)λ request keyμ κ΄λ ¨μ΄ μκΈ° λλ¬Έμ μλμ κ°μ ννλ‘ μλ¬κ° μ λ¬λ©λλ€.
μλ¬ λ©μμ§ μ’ λ₯λ μλμ κ°μ΅λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
μ΄ νμ΄μ§λ Klipμ κ°μ’ κ°μ΄λλ₯Ό μκ°ν©λλ€.
λ³Έ λ¬Έμλ Klipμ νμ©ν¨μ μμ΄ μ°Έκ³ ν μ μλ κ°μ’ λμμΈ/κ°λ° κ°μ΄λλ₯Ό μλ΄νκ³ μμ΅λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
μ΄ νμ΄μ§μμλ WalletConnectλ₯Ό μ΄μ©ν΄ ν΄λ¦½μ μ°λνλ λ°©λ²μ λν΄ μ€λͺ ν©λλ€.
μλ 컀λ₯νΈ(WalletConnect)λ μ§κ°κ³Ό DApp(νμ€μν λΈλ‘μ²΄μΈ μ ν리μΌμ΄μ )μ μ°λνκΈ° μν νλ‘ν μ½μ λλ€. μλ 컀λ₯νΈλ₯Ό μ΄μ©νλ©΄ κ°λ³μ μΌλ‘ μ§κ°κ³Ό DAppμ μ°λμ κ°λ°ν νμ μμ΄, νλμ νλ‘ν μ½λ‘ μ§κ°μ μ°κ²°κ³Ό μλͺ μ΄ κ°λ₯ν΄μ§λλ€.
ν΄λ¦½ μμ νμ¬ μλ 컀λ₯νΈ v1 λ° v2λ₯Ό ν΅ν λμ± μ°λμ μ§μνκ³ μμ΅λλ€. λ€λ§ μλ 컀λ₯νΈλ₯Ό ν΅ν μ§κ° μ°λμ μΉ΄μΉ΄μ€ν‘ λ΄ ν΄λ¦½μ΄ μλ λ§ μ§μνλ μ μ°Έκ³ λΆνλ립λλ€.
μλ 컀λ₯νΈμ λν λ³΄λ€ μμΈν μκ°μ κ°λ° λ¬Έμλ μλλ₯Ό μ°Έκ³ νμκΈ° λ°λλλ€.
μλ 컀λ₯νΈ ννμ΄μ§:
μλ 컀λ₯νΈ κ°λ°λ¬Έμ:
ν΄λ¦½ λ° ν΄λ¦½ λλ‘μ€μ κ²μλ₯Ό μν κ°μ’ λμμΈ κ°μ΄λ
λμμΈ κ°μ΄λ
Klipμμ μ¬μ©νλ NFT λ©νλ°μ΄ν° μμ± νμ€
κ°λ° κ°μ΄λ
νμ¬ ν΄λ¦½μ μλΌλ λ° νΈλ‘ λ€νΈμν¬μ λν μλ 컀λ₯νΈ μ°λμ μ§μνμ§ μκ³ μμΌλ©°, μΆν μ§μν μμ μ λλ€.
400
413
already existing email
400
414
already existing account without wallet
400
4111
receiver is already an user of klip
400
4112
sender daily limit exceeded
400
4113
sender already sent invite message to receiver
400
4114
receiver daily limit exceeded
400
4115
receiver monthly limit exceeded
400
4070
send token count daily limit exceeded
400
4071
send token amount onetime limit exceeded
400
4072
send token amount decimal places exceeded
400
4080
mint count monthly limit exceeded
401
420
inactive accounts require new pin code settings
401
421
banned accounts cannot login
401
422
suspended accounts cannot login
401
423
the account has been unsubscribed
401
424
undefined status
401
425
not yet approved
401
440
content is not active
401
402
invalid session
400
403
exceed pin code error count
404
404
not Found
401
405
attempted access from non-kakako app
401
406
not found user info in db
401
4001
invalid access token
401
4002
the expired token
401
4003
fail to get authorization in header
401
4004
invalid password
401
4005
account does not have a contract address
401
4006
invalid pin code
400
4007
not allow the same code as before
400
430
duplicated ci for account creation
400
431
inconsistency with previous ci
400
432
fail to check Kakao ci
400
433
fail to check Kakao legal name
400
434
fail to check Kakao phone number
400
435
kakao ci is empty
500
500
internal server error
500
501
fail to send kakao message
500
5002
fail to call kakao unlink
401
4044
access token does not exist
500
5003
kakao server error
λΈλ‘체μΈμμ κ°μ μμ°μ 보μ νλ μ£Όμ²΄μΈ λμμ λ€μν μ’ λ₯μ νΈλμμ μ λΈλ‘μ²΄μΈ λ€νΈμν¬μ μ μ‘νλ 주체 (Account)
νΈλμμ μ μ‘
λΈλ‘체μΈμ μνλ₯Ό "λ³ν"μν€λ νμμ΄λ©° μ£Όλ‘ λΈλ‘체μΈμ λ°μ΄ν°λ₯Ό μ λ‘λ, μμ , μμ νκ±°λ λΈλ‘체μΈμ μ€λ§νΈ 컨νΈλνΈλ₯Ό λ°°ν¬, μ€ννλ νμλ₯Ό μλ―Έ
EOA
μΈλΆ μμ κ³μ (Externally Owned Account)μ μλ―Έλ‘, Kaia μμμ KAIA, NFT, FTλ₯Ό μμ νκ³ νΈλμμ μ μ μ‘νλ 주체. Kaiaμ μ°Έμ‘°
μλͺ
Kaiaμμ μ€νλλ νΈλμμ μ΄ μ μ‘μ λ³ΈμΈμ μν΄ μμ±λμλ€λ κ²μ μ¦λͺ νκΈ° μν μ 보λ₯Ό μμ±νλ νμ
κ³μ ν€
μλͺ μ μ¬μ©νλ κ³μ μ ν€(AccountKey). κ³μ ν€λ‘ νΈλμμ μ μλͺ ν΄μΌ μλͺ μ΄ μ μμ μΌλ‘ μλ£λ¨.
400
6011
invalid request status
400
6200
execute contract count daily limit exceeded
400
6401
bapp name is required
400
6402
invalid transaction
400
6403
invalid to address
400
6404
invalid amount
400
6405
invalid contract
400
6406
invalid card id
400
6407
invalid abi
400
6408
invalid params or { ivalid params detail info }
400
6409
invalid value
400
6410
unknown request type
400
6411
invalid from address
400
6412
insufficient funds
400
6414
{ tx revert reason }
400
6416
kas_authorization_key cannot be used with this request
400
6417
the request is not supported with this chain
400
6418
invalid kas_authorization_key
400
6500
address is on the blacklist
400
6501
invalid user status
500
500
internal server error
400
400
bad request
400
410
invalid birth for account creation
400
411
teenagers under the age of 19 are not allowed to sign up
400
412
Kaia
Kaia λΈλ‘μ²΄μΈ νλ«νΌ - κΈ°μ‘΄μλ Klaytn λͺ μΉμΌλ‘ μ΄μλ¨
μ€λ§νΈ 컨νΈλνΈ
λΈλ‘체μΈμ νΉμ μ£Όμ(Contract Address)μ μλ μ½λ(functions)μ λ°μ΄ν°(state)μ λͺ¨μ
KAIA
Kaia λ΄λΆμμ ν΅μ©λλ κΈ°λ³Έ κ°μ μμ°μΌλ‘ Kaiaμ νΈλμμ μ μ μ‘ν λ νμν νΈλμμ μμλ£λ₯Ό μ§λΆνλλ° μ¬μ©. κΈ°μ‘΄μλ KLAY λͺ μΉμΌλ‘ μ¬μ©λ¨
FT
λ체 κ°λ₯ νμ€ ν ν°(Fungible Token) λλ ν ν°, KIP-7 μ°Έμ‘°
NFT
λ체 λΆκ° νμ€ ν ν°(Non-fungible Token) λλ μΉ΄λ, KIP-17 μ°Έμ‘°
μΉ΄λ
Klipμμ μ¬μ©λλ λμ§νΈ μμ°μΌλ‘ NFTλ₯Ό μλ―Έ
400
400
bad request
400
6000
request key does not exist
400
6001
request key is expired
400
6010
Deep link
μΉμ΄λ μ±μμ ννμ΄μ§κ° μλ νΉμ νμ΄μ§λ‘ κ°κΈ°μν URI (Query νλΌλ―Έν°λ₯Ό ν΅ν΄ μμ²ν μμ μ ꡬλΆνκΈ° μν μ©λλ‘ μ¬μ©)
Request key
App2App API μμ²μ ꡬλΆνκΈ° μν λλ€νκ² μμ±λ a0fee72d-3b1b-43a3-ae0d-e277a1001bef ννμ λ¬Έμμ΄
already existing account (wallet)
κ³μ
invalid request type
μ΄ νμ΄μ§λ Klip API νν 리μΌμ μκ°ν©λλ€.
Klip API νν 리μΌμ Klip Partners REST API νν 리μΌκ³Ό App2App REST API νν 리μΌλ‘ ꡬμ±λ©λλ€.
Klip Partners APIλ μΉ΄λ(NFT)λ₯Ό λ°ν, μ μ‘, μμ , κ΄λ¦¬νλ κΈ°λ₯ ꡬνμ μν REST APIμ λλ€. Klip Partners API νν 리μΌμ Klip Partners κ°μ κ³Ό λ‘κ·ΈμΈ, μΉ΄λ λ°ν, μΉ΄λ μ 보 μ‘°ν, μΉ΄λ μ μ‘, μΉ΄λμ κ³μ μ 보λ₯Ό κ΄λ¦¬νλ λ°©λ²μ μμΈνκ² μλ΄ν©λλ€.
App2App APIλ μ¬λ¬λΆμ "BApp"μ "Klip"κ³Ό μ°λνλ κΈ°λ₯ ꡬνμ μν APIμ
λλ€. App2App API νν 리μΌμ BAppμ΄ Klipμ μ κ·ΌνκΈ° μν νκ²½ μ€μ λΆν° BAppμμ Klipμ μμ²μ 보λμΌλ‘μ¨ μ¬μ©μ μΈμ¦(auth), KAIA(=KLAY) μ μ‘(send_klay), ν ν° μ μ‘(send_token), μΉ΄λ μ μ‘(send_card), 컨νΈλνΈ μ€ν(execute_contract) μμ
μ μννλ κ³Όμ μ μμΈνκ² μλ΄ν©λλ€. App2App API νν 리μΌμ REST APIλ₯Ό κΈ°μ€μΌλ‘ μλ΄ν©λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
//Get Card Information By BApp
curl "https://api.klipwallet.com/v2/wallet/bapp" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"bapps": [...],
"next_cursor": "N2r8KY...XOadEG"
}//Get Card Information By BApp
curl "https://api.klipwallet.com/v2/wallet/bapp?cursor=N2r8KY...XOadEG" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"code": number,
"err": string
}//Get card list
curl "https://api.klipwallet.com/v2/a2a/cards?chain=klaytn&sca=SCA&eoa=EOA" \
-H "Content-Type: application/json"{
"name": "KLIP",
"symbol_img": "image url",
"cards": [...],
"next_cursor": "N2r8KY...XOadEG"
}//Get card list
curl "https://api.klipwallet.com/v2/a2a/cards?chain=klaytn&sca=SCA&eoa=EOA&cursor=N2r8KY...XOadEG" \
-H "Content-Type: application/json"{
"request_key": "random key",
"expiration_time": unix timestamp,
"status": "error",
"error": {
"code": int,
"err": "error message"
}
}{
"code": number,
"err": string
}μΉ΄λλ₯Ό λ°ν, μ μ‘, κ΄λ¦¬νλ λ°©λ²
BAppκ³Ό Klipμ μ°λν΄ μΉ΄λ, ν ν°, KAIA(=KLAY) μ μ‘ λ° μ»¨νΈλνΈ μ€νμ μμ²νλ λ°©λ²
v2.3.3
2025.02.11
v2.3.3
2025.02.11
v2.3.0
2024.11.18
v2.3.0
2024.11.18
Klip SDKλ₯Ό μ¬μ©ν¨μ μμ΄ μ¬μ©μλ (μ£Ό)κ·ΈλΌμ΄λμμ€λ₯Ό μ¬μΉν΄μλ μλ©λλ€.
Klip SDK μ¬μ©μ λ°λΌ λ°μνλ λͺ¨λ μ± μμ μ μ μΌλ‘ μ¬μ©μμκ² μμΌλ©°, (μ£Ό)κ·ΈλΌμ΄λμμ€λ μ¬μ©μ λλ μ 3μμ λν΄ μ΄λ ν μ± μλ μ§μ§ μμ΅λλ€.
μ¬μ©μλ Klip SDKλ₯Ό μμ μ μ©λλ‘ νλ§€ν μ μμ΅λλ€.
Klip SDK μ¬μ©μκ° κ³Όλν λ€νΈμν¬ νΈλν½μ λ°μμν€λ μλνλ λ± λΆλ² νΉμ λΉμ μμ μΈ λ°©μμΌλ‘ SDKλ₯Ό μ¬μ©νλ €κ³ μλνλ κ²½μ°, μ¬μ κ³ μ§μμ΄ Klip SDK λ° Klip API μ¬μ©μ΄ μ°¨λ¨λ μ μμ΅λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ κ°λ°μ ν¬λΌμ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
v2.3.3
2025.02.11
μ΄ νμ΄μ§μμλ ν΄λ¦½κ³Ό ν΄λ¦½ λλ‘μ€ λμμΈ μμ μ μ μ νμν λμμΈ κ°μ΄λ λ¬Έμ λ° ν νλ¦Ώμ λ€μ΄λ‘λ λ§ν¬λ₯Ό μ 곡ν©λλ€.
κ·ΈλΌμ΄λμμ€ μ νμ λΈλλ μ 체μ±μ μ μ§νκΈ° μν μ¬μ© κ°μ΄λμ λλ€.
ν΄λ¦½μ νμλλ λ°°λ μ μ κ°μ΄λμ λλ€.
1-1. (μΉ΄μΉ΄μ€ν‘ λ΄ ν΄λ¦½) ν νλ¨ λ¦¬μ€νΈν λ°°λ κ°μ΄λ
μΉ΄μΉ΄μ€ν‘ λ΄ ν΄λ¦½ ν νλ©΄ νλ¨μ λ ΈμΆλλ λ°°λ μ μ κ°μ΄λμ λλ€.
1-2. ν νλ¨ λλ€ν λ°°λ κ°μ΄λ
ν΄λ¦½ ν νλ©΄ μ΅νλ¨μ λ ΈμΆλλ λ°°λ μ μ κ°μ΄λμ λλ€.
1-3. ν νλ‘λͺ¨μ νμ λ°°λ κ°μ΄λ
ν΄λ¦½ ν νλ©΄ μ κ·Ό μ νμ ννλ‘ λ ΈμΆλλ λ°°λ μ μ κ°μ΄λμ λλ€.
1-4. ν μλ¨ ν΄λ¦½ λλ‘μ€ μν λ°°λ κ°μ΄λ
ν΄λ¦½ ν νλ©΄μ λ ΈμΆλλ ν΄λ¦½ λλ‘μ€ λ°°λ μ μ κ°μ΄λμ λλ€.
ν΄λ¦½μ μλΉμ€, ν ν°, NFT λ±λ‘ μ νμν μ΄λ―Έμ§ μ μ κ°μ΄λμ λλ€.
2-1. μλΉμ€ μ 보 & μ΄λ―Έμ§ μμ κ°μ΄λ
ν΄λ¦½ μλΉμ€ λ±λ‘ μ νμν μ± μμ΄μ½ λ° μ€ν¬λ¦°μ· κ°μ΄λμ λλ€.
2-2. ν ν° & NFT κ°μ΄λ
app2appμ ν΅ν΄ ν΄λ¦½μ μ°λνλ κ²½μ° μ°Έκ³ ν μ μλ λμμΈ κ°μ΄λμ λλ€.
ν΄λ¦½ λ‘κ·ΈμΈ λ²νΌ κ°μ΄λ
ν΄λ¦½ λ‘κ·ΈμΈ κΈ°λ₯μ ꡬνν λ νμν λ²νΌ κ°μ΄λμ λλ€.
ν΄λ¦½ λλ‘μ€ μν λ° ν¬λ¦¬μμ΄ν° μ΄λ―Έμ§μ κΈ°μ μ¬μκ³Ό μν μ 보λ₯Ό μ°Έκ³ ν μ μλ κ°μ΄λμ λλ€.
ν΄λ¦½ λλ‘μ€ λ΄ ν보λ₯Ό μν λ°°λ λ° μ½ν μΈ μ μ κ°μ΄λμ λλ€.
2-1. ν΅ν© ν λ°°λ κ°μ΄λ
Klip Drops ννμ΄μ§ μλ¨μ λ ΈμΆλλ λ°°λ μ μ ν νλ¦Ώ νμΌμ λλ€.
2-2. μκ° μκ° μ½ν μΈ κ°μ΄λ
Klip Drops ννμ΄μ§ μλ¨ λ°°λ ν΄λ¦ μ μ νμΌλ‘ λ ΈμΆλλ μκ° μκ° μ½ν μΈ μ μ κ°μ΄λμ λλ€.
λλ‘μ€ ννΈλμ€ ν΄ (DPT) μ΄μ© λ°©λ²κ³Ό μ κ· ννΈλμ νμ μ€μ μ μν κ°μ΄λμ λλ€.
μ΄ λ¬Έμ νΉμ ν΄λ¦½μ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
ν΄λ¦½μ λ ΈμΆλλ ν ν° λ° NFT λ±λ‘ μ νμν μ 보λ₯Ό μ°Έκ³ ν μ μλ κ°μ΄λμ λλ€.
2-3. NFT αα ₯α―α α ¦α¨αα §α« αα ³αΌα α ©α¨ αα ‘αα ΅αα ³
ν΄λ¦½μ λ ΈμΆλλ NFT 컬λ μ λ±λ‘ μ νμν μ 보λ₯Ό μ°Έκ³ ν μ μλ κ°μ΄λμ λλ€.





μ΄ νμ΄μ§λ Klip Docs μ λ°μ΄νΈ κΈ°λ‘μ μ 곡ν©λλ€.
ν΄λ¦½μ XRPL (리ν) λ€νΈμν¬ μ§μμ λ°λΌ μ§κ° μ°λμ μ£Όμ μλ΅κ°μ XRPL μ£Όμ ν¬ν¨
ν΄λ¦½ μ§μ λ€νΈμν¬ νμ₯μ λ°λ₯Έ μ§κ° μ°λμ μ£Όμ μλ΅κ° λ³κ²½
μλͺ μμ²μ eth_signTypedData_v4 μ§μ
iOS SPMμ μ¬μ©νμ¬ SDKλ₯Ό μ μ©νλ λ°©λ² μΆκ°
OSλ³ request ν¨μ νΈμΆ μ΄μ μμ μ μν JavaScript SDK 2.3.3 λ°°ν¬
ν΄λ¦½ νΈμΆ λ°©μ λ³κ²½μ λ°λ₯Έ App2App REST API Request λ΄μ© μμ
ν΄λ¦½ νΈμΆ λ°©μ λ³κ²½μ λ°λ₯Έ JavaScript/Android/iOS SDK μ λ²μ λ°°ν¬ λ° λ΄μ© μμ
Klaytn -> Kaia λ³κ²½μ λ°λ₯Έ λ΄μ© μμ (λ¬Έμλ§ λ³κ²½λ κ²μΌλ‘, κΈ°λ₯ μ€νμ νΈνμ±μ΄ 보μ₯λ¨)
Kaiaμ μλ‘μ΄ μλͺ
νμ€μ λ°λΌ, App2App μμ² νμ
μ sign_message_eip191 μΆκ°
Klip Partners μλΉμ€ μ’ λ£μ λ°λ₯Έ λ΄μ© μμ
μ max_valueλ₯Ό μ¬μ©νλ attributesμ λν μ€λͺ λ° μμ μΆκ°
λ₯Ό νμΈνκ³ λ€μ΄λ‘λν μ μλ νμ΄μ§ μΆκ°
κΈ°μ‘΄μ λ¬Έμ μμΉλ₯Ό Tutorialμμ λ°μΌλ‘ μ΄λ
μλ 컀λ₯νΈ (WalletConnect) μ§μ
Klip λ‘κ·ΈμΈ λ²νΌ κ°μ΄λμ Klip 2.0 λ‘κ³ λ°μ
App2App Polygon μ²΄μΈ μ§μ
Card Minting API μΉμ μ΄λ¦μ μ’ λ μ§κ΄μ μ΄κ² Klip Partners APIλ‘ λ³κ²½
App2App JavaScript SDK 2.2.1 λ°°ν¬
App2App Deeplink μμ² schemeμ μΈν‘ν΄λ¦½ μ°μ νΈμΆνλλ‘ λ³κ²½
App2App Prepare μμ² μ κ°μ€μΆμ λμ κ³μ°ν μ μλ κ²½μ° ν¨κ» λ°ν
App2App Ethereum μ²΄μΈ μ§μ
App2App νΈλμμ μμλ£ λλ© κ°μ΄λ μΆκ°
Contract execute μ λ°μ΄νΈ
param type μ€λ₯μ λν μμΈ μ 보 λ°ν
Klip μμ° μ§μ μ μ± λ³κ²½κ³Ό κ΄λ ¨λ μ£Όμ μ¬ν / μλ΄ μΆκ°
Klipμμ μ§μνλ λ©νλ°μ΄ν° μμ± νμ€ μλ΄ νμ΄μ§ μΆκ°
Contract execute μ λ°μ΄νΈ
tuple μ§μ
encoded_function_call μ§μ
Sign message μ λ°μ΄νΈ
Klip μ± μ§μμ μν SDK μ λ°μ΄νΈ (v2.2.0)
App2App sign message μμ μ½λ μΆκ°
Klip μ± μ§μμ μν SDK μ λ°μ΄νΈ (v2.1.0)
App2App sign message κΈ°λ₯ μ€λͺ
μΆκ°
κ°λ°μ ν¬λΌ URL λ³κ²½
App2App APIμ Response statusμ canceled μΆκ°
animation_url νλ μ μ½ μ¬ν μ λ°μ΄νΈ
App2App μΈμ¦ API μ¬μ© μ μ£Όμμ¬ν 문ꡬ μΆκ°
App2App SDK μ€νμμ€ κ³ μ§λ¬Έμμ μ¬λͺ λ³κ²½
App2App μΈμ¦ μμ² λ²νΌ 문ꡬ κ΄λ ¨ κ°μ΄λ μΆκ°
μ κ· API μΆκ°
μμμ NFT resource νμΌμ μ λ‘λν μ μλ APIλ₯Ό μΆκ°νμ΅λλ€.
Card Minting API Requestμ νλ μΆκ°
animation_url
μ¬λͺ λ³κ²½ λ° μ΄λ©μΌ μ£Όμ μ λ°μ΄νΈ
νΉμ Klip νμμκ² λ°ν λ° μ μ‘νκΈ° API μλ΅ νλμ νΈλμμ ν΄μκ° μΆκ°λμ΅λλ€.
Card Minting APIμ Requestμ νλ μΆκ°
secure νλμ μΉ΄λ μμ μλ§ λ³Ό μ μλ μμ±μ μ€μ ν μ μμ΅λλ€.
status_url
μ κ· API μΆκ°
νΈλμμ ν΄μλ‘ μ²λ¦¬ κ²°κ³Όλ₯Ό νμΈν μ μλ APIκ° μΆκ°λμ΅λλ€.
μ΄λ² λ¬ νμ¬κΉμ§ λ°νν μΉ΄λ κ°μλ₯Ό μ‘°νν μ μλ APIκ° μΆκ°λμ΅λλ€.
Introduction λ΄ λ§ν¬ μ€λ₯ μμ
QR Code κΈ°λ° App2App μ²λ¦¬ κΈ°λ₯ μ κ· μΆκ°
PC λλ 물리μ μΌλ‘ λ¨μ΄μ§ νκ²½μμ App2App κΈ°λ₯μ μ€νν μ μμ΅λλ€.
λͺ¨λ°μΌ μΉ΄λ©λΌ μ± λλ Klipμμ QR Codeλ₯Ό μΈμνλ©΄ App2App μμ²μ μ²λ¦¬νλ λ°©μμΌλ‘ λμν©λλ€.
μμ€ν¬λ‘ μΉ΄λ μ μ‘ API μ κ· μΆκ°
App2App API μΆκ°
μΈλΆ μλΉμ€μμ Klip μ¬μ©μ μ£Όμλ₯Ό κ°μ Έμ€λ κΈ°λ₯μ μ 곡ν©λλ€.
μΈλΆ μλΉμ€μμ Klipμ μ΄μ©ν΄ KLAY λ° λ체 κ°λ₯ν ν ν°(FT), μΉ΄λ(NFT)λ₯Ό μ μ‘νκ±°λ μ€λ§νΈ 컨νΈλνΈλ₯Ό μ€ννλ κΈ°λ₯μ μ 곡ν©λλ€.
Mint Card To User, Mint Card To Klip Member APIλ‘ μΉ΄λ λ°ν μ μΉ΄λ λ©νλ°μ΄ν°μ μ λ ₯νλ Optional νλ μΆκ°
group_name
group_icon
Mint Card APIλ₯Ό Mint Card To User APIλ‘ μ΄λ¦ λ³κ²½
EOAλ₯Ό κ°μ§ μ¬μ©μ(Klip νμ λλ λΉνμ)μκ² μΉ΄λλ₯Ό λ°νν©λλ€.
λ°ν μ μ¬μ©μ EOAλ₯Ό μ¬μ©ν©λλ€.
Mint Card To Klip Member API μ κ· μΆκ°
Get Card Information By BApp API Responseμμ order_no λ³μλͺ
μ nft_order_noλ‘ λ³κ²½
Send Card APIμ Request Body Parameterμμ to_klip_id μ¬μ© μ€μ§
κ° Klipμ λ‘κ·ΈμΈνκ³ μΉ΄λ(NFT)λ₯Ό λ°ν/μ μ‘/μ‘°νν μ μλλ‘ Klip API κ°λ°
μ΄ νμ΄μ§μμλ Klipμμ μ¬μ©νλ NFT λ©νλ°μ΄ν° μμ±μ νμ€μ μ€λͺ ν©λλ€. μ΄ νμ€μ μ μλμ§ μμ μμ±κ³Ό νμμ κ²½μ° Klip λ΄μμ μ μμ μΌλ‘ λ ΈμΆλμ§ μμ μ μμΌλ μ°Έκ³ λ°λλλ€.
Klipμμ μ§μνλ μμ±κ°μ μ΄λ¦κ³Ό μ€λͺ μ λ€μκ³Ό κ°μ΅λλ€. OpenSeaμμ μ¬μ©νλ μμ±κ°κ³Ό μΌλΆ λͺ μΉ μ°¨μ΄κ° μμΌλ μ μ λ°λλλ€.
name*
token uriμ data:application/json μΌλ‘ μμνλ data uriλ₯Ό μ§μ νλ κ²½μ°, μΌλΆ νλ©΄μμ μ μμ μΌλ‘ μ²λ¦¬λμ§ μμ κ°λ₯μ±μ΄ μκ³ 1024μ μ΄μμ μ§μλμ§ μμ΅λλ€. κ°λ₯νλ©΄ http λλ https URLμ μ¬μ©νλ κ²μ κΆν΄λ립λλ€.
Klipμ λ ΈμΆλλ NFT μ΄λ―Έμ§μ μμμ κ°κ° κΆμ₯ κ·κ²©κ³Ό νμΌ νμμ΄ μ‘΄μ¬ν©λλ€. μλ κΈ°μ€μ λ°λ₯΄μ§ μλ κ²½μ° NFT μ΄λ―Έμ§ λλ μμμ΄ μ μμ μΌλ‘ νμ/μ¬μλμ§ μμ μ μμ΅λλ€.
μ΄λ―Έμ§ κ·κ²©
μ΅μ ν¬κΈ°: 1024px x 1024px μ΄μ
μ΅λ ν¬κΈ°: 23170px x 23170px μ΄ν
μ©λ: 5MB μ΄ν
Klipμμ μ§μνλ μμ±μ λ§μΆ° μμ±λ λ©νλ°μ΄ν°μ μμλ μλμ κ°μ΅λλ€.
μ¬κΈ°μμ status_urlμ μ§μ λ URL μ£Όμλ₯Ό ν΅ν μλ΅κ° μμλ μλμ κ°μ΅λλ€.
μμ μμ λ©νλ°μ΄ν°λ‘ λ°νν NFTκ° Klipμμ μ΄λ»κ² 보μ΄λμ§ μ΄ν΄λ³΄κ² μ΅λλ€.
λ¨Όμ λ©νλ°μ΄ν°μ ν¬ν¨λ image νμΌμ΄ NFT λν μ΄λ―Έμ§λ‘ λνλκ³ , κ·Έ μλλ‘ nameκ³Ό descriptionμ΄ νμλ©λλ€. animation_urlμ μΆκ°νμ¬ λμμμ΄ μλ κ²½μ°μλ imageλ νμ κ°μΌλ‘, μ¬κΈ°μ μ§μ λ μ΄λ―Έμ§κ° λν μ΄λ―Έμ§λ‘ νμλκ³ λμμμ λν μ΄λ―Έμ§λ₯Ό ν΄λ¦ν΄ νμΈν μ μμ΅λλ€. name μλμ group_iconκ³Ό group_name μ λ³΄κ° νμλ©λλ€. κ·Έλ£Ήμ΄ μ§μ λλ©΄ μ½λ μ
λ΄μ NFT λͺ©λ‘μμ μλ¨μ νν° λ©λ΄κ° νμλμ΄ λΉ λ₯Έ λΆλ₯ λ° κ²μμ΄ κ°λ₯ν©λλ€. description μλμ hashtagsλ₯Ό ν΅ν΄ μ§μ ν ν΄μνκ·Έ κ°λ€μ΄ #κ° μλμΌλ‘ λΆμ΄ νμλ©λλ€.
status_urlλ‘ λμ μ λ³΄κ° μ§μ λ κ²½μ°, κ·Έ νλ¨μ μνκ°κ³Ό μμ±μ μ€μκ°μΌλ‘ κ°μ Έμ NFT μ 보μ 보μ¬μ€λλ€.
κ·Έ νλ¨μΌλ‘ attributesλ₯Ό ν΅ν΄ μ§μ ν μΈλΆ μμ±κ°μ΄ trait_type - value μμΌλ‘(max_valueκ° ν¨κ» μ§μ λ κ²½μ° μ΅λκ°μ΄ ν¨κ» νμ), external_linkλ₯Ό ν΅ν΄ μ§μ ν URLμ΄ ν΄λ¦ κ°λ₯ν κ΄λ ¨ λ§ν¬λ‘, custom_linksλ₯Ό ν΅ν΄ μ§μ ν λ μ΄λΈλͺ
(display_name)κ³Ό URL(value)κ°μ΄ κ°κ° λ²νΌ λ§ν¬λ‘ νμλ©λλ€. μΈλΆ λ§ν¬λ ν΄λ¦ μ, μΈλΆ λΈλΌμ°μ λ₯Ό ν΅ν΄ μ± μ νλμ΄ μ΄λ¦¬κ² λ©λλ€. μμΈλ¬ λ³Έ NFTλ sendableμ΄ trueλ‘ μ§μ λμ΄μκΈ° λλ¬Έμ "보λ΄κΈ°" λ²νΌμ΄ νλ©΄ μ€λ₯Έμͺ½ μλ¨μ λ©λ΄ μμ΄μ½ λ²νΌμ ν΅ν΄ μ 곡λ©λλ€. κ·Έ μ΄νλ‘ νμλλ λ΄μ©λ€μ NFTμ μμ λ΄μκ³Ό μ½λ μ
μ λν μ 보λ€λ‘, λ©νλ°μ΄ν°μ μ§μ μ μΌλ‘ κ΄λ ¨ μλ λ΄μ©μ μλλλ€.
μ΄λ κ² μΈλΆμμ Klipμ νμ€μ λ§μΆ° ꡬμ±λ λ©νλ°μ΄ν°κ° Klip UI μ μ΄λ»κ² νμλλμ§ μμ보μμ΅λλ€. λ³Έ μ€ν¬λ¦°μ·μ νκ²½μ λ°λΌ, λλ μΆν Klip UI κ°μ /λ³κ²½μ λ°λΌ λ€μ μ°¨μ΄κ° λ°μν μ μμ΅λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
Metadata νμ€ κ°μ
νλλͺ μ μ μν μ μλ μΈλΆ λ§ν¬ μ 곡 (custom_links)
μΈλΆ λ§ν¬ νμ€ μΆκ° μ 곡 (external_url)
vκ°μ chain id μ κ±°
is_hex_encoded μΆκ°
external_link νλμ Klip μΈλΆλ‘ μ°κ²°λλ URLμ μ€μ ν μ μμ΅λλ€.
νν λ¦¬μΌ μ€ν μμ
Klip ννΈλμ€ κ³μ μ 보μ μ€μΈ μΉ΄λλ₯Ό μμ€ν¬λ‘ μ μ‘νλ©΄ μΉ΄λ μ§κΈ λ§ν¬κ° μμ±λ©λλ€.
μμ±λ λ§ν¬λ₯Ό ν΄λ¦νλ©΄ μΉ΄λλ₯Ό μ§κΈλ°μ μ μμ΅λλ€.
hashtagslayout
qr_code
bar_code
Get Card Information By BApp APIμ Get Card Information APIμ Response κ° λ³κ²½
bapps[i].cards.cards[i]
bapps[i].cards[i]
bapps[i].cards.next_cursor
bapps[i].cards_next_cursor
Get Card Information APIμ Response κ° λ³κ²½
cards.cards[i]
cards[i]
cards.next_cursor
next_cursor
Get Card Information APIμ Request Parameterμ Query Parameter isAll μΆκ°
Klip νμμκ² μΉ΄λλ₯Ό λ°νν©λλ€.
λ°ν μ Klip νμμ μ€λͺ κ³Ό μ νλ²νΈλ₯Ό μ¬μ©ν©λλ€.
Send Card APIλ₯Ό Send Card To User APIλ‘ μ΄λ¦ λ³κ²½
EOAλ₯Ό κ°μ§ μ¬μ©μ(Klip νμ λλ λΉνμ)μκ² μΉ΄λλ₯Ό μ μ‘ν©λλ€.
μ μ‘ μ μ¬μ©μ EOAλ₯Ό μ¬μ©ν©λλ€.
Send Card To Klip Member API μ κ· μΆκ°
Klip νμμκ² μΉ΄λλ₯Ό μ μ‘ν©λλ€.
μ μ‘ μ Klip νμμ μ€λͺ κ³Ό μ νλ²νΈλ₯Ό μ¬μ©ν©λλ€.
Send Card To User, Send Card To Klip Member APIμ Responseμμ failCount λ³μλͺ
μ fail_countλ‘ λ³κ²½
Ground1
GroundX
Ground X
GroundX
(μ£Ό)κ·ΈλΌμ΄λμ
(μ£Ό)κ·ΈλΌμ΄λμμ€
νμ₯μ: JPG, JPEG, GIF, PNG λ± μ΄λ―Έμ§ νμΌ νμ₯μ (λμμ νμ λ―Έμ§μ)
ν΄μλ: 72dpi μ΄μ
μμ κ·κ²©
μ΅λ ν¬κΈ°: κ°λ‘ 3840px, μΈλ‘ 2160px μ΄ν
μ©λ: 50MB μ΄ν
νμ₯μ: MP4
λμμ μ½λ±: H.264
μ€λμ€ μ½λ±: AAC
λ ν°λ°μ€λ μμμ ν¬ν¨νμ§ μλ κ²μ κΆμ₯
string
NFT μ΄λ¦μ λλ€.
description*
string
NFTμ κ΄ν μ€λͺ μ λλ€.
image*
string
NFTμ μ¬μ©ν μ΄λ―Έμ§ URL μ£Όμμ λλ€. μ΄λ―Έμ§ νμΌ νμμ΄ μλκ±°λ κ²½λ‘μ νμ₯μκ° ν¬ν¨λμ§ μλ κ²½μ° μ μμ μΌλ‘ νμλμ§ μμ μ μμ΅λλ€.
animation_url
string
NFTμ μ¬μ©ν λμμ URL μ£Όμμ λλ€. μ§μνλ νμΌ νμ₯μλ .mp4μ λλ€. H.264 μ½λ±μ΄ μλκ±°λ ν΄μλκ° 3840x2160μ λλ κ²½μ° μ¬μλμ§ μμ μ μμ΅λλ€.
background_color
string
NFT μ΄λ―Έμ§ λ°°κ²½μ μ¬μ©ν RGB μμ μ½λμ λλ€. # λ€μμ 16μ§μ 6μ리 λ¬Έμμ΄λ‘ νμν©λλ€.
sendable
boolean
TRUEμ΄λ©΄ ν΄λΉ NFTλ₯Ό Klipμμ λ€λ₯Έ μ¬λμκ² μ μ‘ν μ μμ΅λλ€. μ§μ λμ§ μμ κ²½μ° κΈ°λ³Έκ°μ TRUEμ λλ€.
group_name
string
NFTλ₯Ό κ·Έλ£Ήνν λ μ¬μ©νλ κ·Έλ£Ή μ΄λ¦μ λλ€.
group_icon
string
NFTλ₯Ό κ·Έλ£Ήνν λ κ·Έλ£Ή μμ΄μ½μΌλ‘ μ¬μ©ν μ΄λ―Έμ§ URL μ£Όμμ λλ€.
hashtags
array
ν΄μνκ·Έλ€μ΄ λ΄κΈ΄ string λ°°μ΄μ
λλ€. ν΄μνκ·Έλ₯Ό λ¬λ©΄ Klip λ΄μμ NFTλ₯Ό κ²μνλλ° νμ©λ©λλ€.
layout
string
NFT μ΄λ―Έμ§λ₯Ό 보μ¬μ£Όλ λ°©μμ
λλ€. μ μ¬κ°ν μ΄λ―Έμ§λ general, κ°λ‘κ° λ κΈ΄ μ΄λ―Έμ§λ horizontal, μΈλ‘κ° κΈ΄ μ΄λ―Έμ§λ verticalλ‘ μ€μ ν μ μμ΅λλ€. μ§μ λμ§ μμ κ²½μ° κΈ°λ³Έκ°μ generalμ
λλ€.
external_link
string
Klip μΈλΆλ‘ μ°κ²°λλ URL μ£Όμμ λλ€. μ§μ νλ©΄ NFT μμΈ νλ©΄μμ μΈλΆλ‘ μ°κ²°λλ λ§ν¬κ° μ 곡λ©λλ€. (μ΅λ κΈΈμ΄: 255)
external_url
string
Klip μΈλΆλ‘ μ°κ²°λλ URL μ£Όμμ λλ€. μ§μ νλ©΄ NFT μμΈ νλ©΄μμ μΈλΆλ‘ μ°κ²°λλ λ§ν¬κ° μ 곡λ©λλ€. (μ΅λ κΈΈμ΄: 255)
custom_links
array
Klip μΈλΆλ‘ μ°κ²°λλ URL μ£Όμλ€μ΄ λ΄κΈ΄ object λ°°μ΄ μ
λλ€. display_nameμ λ
ΈμΆν λ²νΌ λ μ΄λΈ, valueμ μ°κ²°ν URL μ£Όμλ₯Ό μμ μ΄λ€ μ§μ ν©λλ€. Klipμ NFT μμΈ νλ©΄μμ μΈλΆλ‘ μ°κ²°λλ λ§ν¬κ° λ²νΌ ννλ‘ μ 곡λ©λλ€. (λ°°μ΄μ μ΅λ ν¬κΈ°: 10κ°, κ° λ§ν¬μ μ΅λ κΈΈμ΄: 255)
qr_code
string
QR Codeκ° κ·Έλ €μ§ μ΄λ―Έμ§ URL μ£Όμμ λλ€. (μ΅λ κΈΈμ΄: 255)
bar_code
string
Bar Codeκ° κ·Έλ €μ§ μ΄λ―Έμ§ URL μ£Όμμ λλ€. (μ΅λ κΈΈμ΄: 255)
attributes
array
NFTμ μμ±κ°λ€μ΄ λ΄κΈ΄ object λ°°μ΄μ
λλ€. trait_typeμΌλ‘ λ
ΈμΆν μμ±λͺ
, valueλ‘ μμ±κ°μ μμ μ΄λ€ μ§μ ν©λλ€. λν μ΅μ
λλ‘ max_valueλ₯Ό ν¨κ» μ§μ νμ¬ μμ±κ°μ μ΅λκ°μ ννν μ μμ΅λλ€. μ΄ κ²½μ° valueμ κ°μ max_valueμ κ°μ μ΄κ³Όν΄μλ μ λ©λλ€.
status_url
string
NFTμ μν μ 보λ₯Ό λ΄κ³ μλ μΈλΆ URL μ£Όμμ
λλ€. ν΄λΉ URLμμλ JSON κ°μ λ°νν΄μΌνκ³ , νμμ μΌλ‘ bool typeμ valid νλμ μ νμ μΌλ‘ array typeμ attributes νλλ₯Ό μ€μ ν μ μμ΅λλ€.



{
"name": "Magic Sword",
"description": "You can summon a demonic sword with a magic attribute.",
"image": "https://media.klipwallet.com/card_asset/163632/c6525c6e-060c-426f-9275-0dabadb0ba97.png",
"background_color" : "#ffffff",
"sendable": true,
"group_name": "Weapon",
"group_icon": "https://media.klipwallet.com/temp_eventcard/bomb_klip.jpg",
"hashtags": ["Game","GroundX","Magic"],
"layout": "general",
"external_link": "https://gxmagicgame.com",
"custom_links": [
{
"display_name": "Klip Homepage",
"value": "https://klipwallet.com/"
},
{
"display_name": "GroundX Homepage",
"value": "https://www.groundx.xyz/"
}
],
"attributes" : [
{
"trait_type": "Sword",
"value" : "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5",
"max_value": "10"
},
{
"trait_type": "Magic Level",
"value": 2,
"max_value": 15
}
],
"status_url" : "https://fakeapi.gx.com/itemstatus?item_id=923874829"
}{
"valid": true,
"attributes": [
{
"trait_type": "VIP Membership",
"value": "Applicable"
},
{
"trait_type": "Expiration Date",
"value": "2023-12-31"
}
]
}μ΄ νμ΄μ§μμλ BAppμμ Klipμ νμ©νκΈ° μν App2App iOS SDKλ₯Ό μκ°ν©λλ€.
iOS 12.0 μ΄μ
Swift 5.0 μ΄μ
Xcode 13.4 μ΄μ
Klip iOS SDKλ λ³λμ κ°μ μ μ°¨κ° νμνμ§ μμ΅λλ€. HTTP ν΅μ μ΄ κ°λ₯ν μ΄λ νκ²½μμλ λμν©λλ€. λ€λ§, κΈ°λ³Έμ μΌλ‘ Klip μ±μ΄ μ€μΉλ νκ²½μμ νΈμΆν΄μΌ ν©λλ€. Klip μ±μ μ€ννμ¬ Klip μ¬μ©μμ μΉμΈμ λ°μμΌ νκΈ° λλ¬Έμ λλ€.
2.3.0 μ΄μ λ²μ λ§ μ¬μ© κ°λ₯ν©λλ€.
1. Klip SDK λ€μ΄λ‘λ
νμ΄μ§μμ Klip iOS SDKλ₯Ό λ€μ΄λ°μ΅λλ€.
2. Klip SDK Framework μΆκ°
Klip SDK Frameworkλ₯Ό Importνμ¬ κ°λ° νλ‘μ νΈμ μΆκ°
κ°λ° μ€μΈ νλ‘μ νΈλ₯Ό Xcodeλ‘ μ€ν
Xcode > κ°λ° νλ‘μ νΈμ TARGETS μ ν > General Tab > Framworks, Libraries, and Embedded Content Tab > μΌμͺ½ νλ¨μ + λ²νΌμ ν΄λ¦
Source Directoryμ λ€μ΄λ°μ Klip SDK νλ‘μ νΈμ sdk λλ ν 리λ₯Ό μ ν, ν΄λ¦ν ν Nextλ₯Ό ν΄λ¦
μΌμͺ½μ Project navigatorμ Frameworksμ ν΄λΉ SDKκ° Import λμλμ§ νμΈ ν build μν
Klip SDK μμ€κ° κ°λ° νλ‘μ νΈμ 볡μ¬λκ³ λΌμ΄λΈλ¬λ¦¬ μ½λλ₯Ό μ§μ μμ ν μ μμ΅λλ€.
iOS 9.0 μ΄μμμ iOS SDKλ‘ Klip λ± μ ν리μΌμ΄μ μ€ν κΈ°λ₯μ μ΄μ©νλ €λ©΄ Info.plist νμΌμ μ€μ μ μΆκ°νμ¬ μ»€μ€ν μ€ν΄ μ 보λ₯Ό λ±λ‘ν΄μΌ ν©λλ€.
[Info] > [Custom iOS Target Properties]μ Array νμ ν€(Key)μΈ LSApplicationQueriesSchemesλ₯Ό μΆκ°νκ³ , ν΄λΉ ν€μ 'Item'μΌλ‘ 컀μ€ν μ€ν΄μ μ¬μ©ν κ°μΈ 'klip'μ μΆκ°ν©λλ€.
App2App API μμ²μ ν¬κ² prepare, request, getResultμ μμλ‘ μ§νμ΄ λ©λλ€.
prepareλ μ΄λ ν μμ²μ ν μ§ μμ²μ μ μνλ λ¨κ³λ‘ μ΄ 5κ°μ§ μ’
λ₯μ μμ²μ΄ μ‘΄μ¬
requestλ ν¨μ νΈμΆμ ν΅ν΄ KlipμΌλ‘ νλ©΄μ΄ μ νλμ΄ μ€μ μλͺ
νλ‘μΈμ€λ₯Ό μ§ν
getResultλ ν¨μ νΈμΆμ ν΅ν΄ κ²°κ³Όκ°μ λ°κ³ νμΈ
μΆκ°μ μΌλ‘ getCardListλ BApp κ°λ°μ νΈμλ₯Ό μν΄ Klip μ¬μ©μμ NFT λͺ©λ‘μ λ°μμ¬ μ μλλ‘ μ 곡λλ ν¨μμ λλ€.
Klip SDKλ₯Ό μ¬μ©νκΈ° μν μΈμ€ν΄μ€λ₯Ό μμ±ν©λλ€.
Return Value
Example
KlipSDK.shared.prepare(request: KlipRequest, bappInfo: BAppInfo, completion: @escaping(KlipCallback<KlipTxResponse>) -> Void)
App2App API μμ² μ²λ¦¬λ₯Ό μ€λΉνκ³ request keyλ₯Ό λ°κΈν©λλ€.
Request κ°μ μ¬μ©ν κ°μ²΄
Klip μ°κ²° νμ
(=μΈμ¦)μ κ²½μ° AuthRequest
KAIA(=KLAY) μ μ‘ νμ
μ κ²½μ° KlayTxRequest
Token μ μ‘ νμ
μ κ²½μ° TokenTxRequest
Parameters
Klip μ¬μ©μμκ² λμ μμ²μ, requestμ bappInfoμ μ λ ₯λ μ λ³΄κ° μΆλ ₯λ©λλ€. μλ΅ κ²°κ³Όμ ν¬ν¨λ request keyλ μ¬μ©μμκ² νΈλμμ μ μμ²νκΈ° μν 컨ν μ€νΈ ν€μ μν μ μννλ©°, μ¬μ©μ λμ μμ² λ° κ²°κ³ΌνμΈ APIμ ν¨κ» μ¬μ© λ©λλ€.
Example 1. μ¬μ©μ μ 보 νλνκΈ°
Example 2. KAIA(=KLAY) μ μ‘νκΈ°
Example 3. Token μ μ‘νκΈ°
Example 4. Card μ μ‘νκΈ°
Example 5. Contract μ€ννκΈ°
Example 6. Sign Message μμ²νκΈ°
KlipSDK.shared.request(requestKey: String) -> Void
Deep Linkλ₯Ό μ΄μ©νμ¬ Klipμ μΈμ¦ λλ μλͺ
μ μμ²ν©λλ€. μ€ν μ€μΈ μ€λ§νΈν° κΈ°κΈ°μ Klip μ±μ΄ μ€μΉλμ§ μμκ±°λ μλ μ€νν μ μλ κ²½μ° 'Klip μκ° νμ΄μ§(https://klipwallet.com)' λ‘ μ΄λνμ¬ μ¬μ©μλ Klip μ±μ λ€μ΄λ‘λλ°μ μ μμ΅λλ€. requestKeyμλ prepare λ¨κ³μμ Klip μλ²λ‘λΆν° λ°μ μμ² λ²νΈλ₯Ό μ¬μ©ν©λλ€.
PC νκ²½μμ QR codeλ₯Ό μ΄μ©ν request μ€ν μ²λ¦¬λ νλͺ©μ μ°Έμ‘°νμμμ€.
Parameters
Example
KlipSDK.shared.getResult(requestKey: String, completion: @escaping(KlipCallback<KlipTxResponse>) -> Void)
App2App API μμ²μ λν κ²°κ³Όλ₯Ό νμΈν©λλ€. requestKeyμλ prepare λ° request λ¨κ³μμ μ¬μ©ν μμ² λ²νΈλ₯Ό μ¬μ©ν©λλ€.
Parameters
Example
KlipSDK.shared.getCardList(cardAddress: String, userAddress: String, cursor: String?, completion: @escaping(KlipCallback<CardListResponse>) -> Void)
μ¬μ©μμ λͺ¨λ μΉ΄λ μ€ νΉμ μΉ΄λμ λͺ©λ‘μ κ°μ Έμ΅λλ€.
Parameters
Example
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
CardTxRequestContract μ€ν νμ
μ κ²½μ° ContractTxRequest
Sign Message μμ² νμ
μ κ²½μ° SignMessageRequest - μ΄ κ²½μ° Klaytn νμ€μ λ°λΌ "\x19Klaytn Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ¬ μλͺ
ν©λλ€.
Klip
Klip μΈμ€ν΄μ€
request
KlipRequest
μμ² νμ μ λ°λ₯Έ μμ²μ 보
bappInfo
BAppInfo
μμ² μ± μ 보
callback
KlipCallback<KlipTxResponse>
μμ² μλ΅ κ²°κ³Όλ₯Ό λ°μ μ½λ°±ν¨μμ
λλ€. μ²λ¦¬κ° μλ£λλ©΄, μλ£κ²°κ³ΌμΈ KlipTxResponseλ₯Ό μ μ‘λ°κ³ , μ²λ¦¬κ° μ€ν¨λλ©΄, μ€ν¨κ²°κ³ΌμΈKlipErrorResponseλ₯Ό μ μ‘λ°μ΅λλ€.
requestKey
String
μμ² λ²νΈ
requestKey
String
μμ² λ²νΈ
callback
KlipCallback<KlipTxResponse>
μμ² μλ΅ κ²°κ³Όλ₯Ό λ°μ μ½λ°±ν¨μμ
λλ€. μ²λ¦¬κ° μλ£λλ©΄, μλ£κ²°κ³ΌμΈ KlipTxResponseλ₯Ό μ μ‘λ°κ³ , μ²λ¦¬κ° μ€ν¨λλ©΄, μ€ν¨κ²°κ³ΌμΈKlipErrorResponseλ₯Ό μ μ‘λ°μ΅λλ€.
cardAddress
String
μ‘°νν μΉ΄λ μ£Όμ
userAddress
String
μ‘°νν μ¬μ©μ μ£Όμ
cursor
String
(optional) μ‘°νν 컀μκ°μ λλ€. λ§μ½, μ‘°νν μΉ΄λμ 보μ λͺ©λ‘μ΄ 100κ° μ΄μμ΄λ©΄, λ€μ 100κ° μ 보λ₯Ό λ°μ μ μμ΅λλ€.
callback
KlipCallback<CardListResponse>
μμ² μλ΅ κ²°κ³Όλ₯Ό λ°μ μ½λ°±ν¨μμ
λλ€. μ²λ¦¬κ° μλ£λλ©΄, μΉ΄λλͺ©λ‘μΈ CardListResponseλ₯Ό μ μ‘λ°κ³ , μ²λ¦¬κ° μ€ν¨λλ©΄, μ€ν¨ κ²°κ³ΌμΈKlipErrorResponseλ₯Ό μ μ‘λ°μ΅λλ€.
-
-
Klip REST API μλ¬μ½λμ λμΌ
500
10
Klip SDKμμ μλ¬ λ°μ (ex, Http μ°κ²° μ€ν¨)
500
21
Klip SDKμμ μλ¬ λ°μ (Klip REST API λ―Έμ§μ μλ¬μ½λ)
500
22
Klip SDKμμ μλ¬ λ°μ (Klip Protocol μλ¬)
https://github.com/ground-x/klip-a2a-ios-sdk.git <key>LSApplicationQueriesSchemes</key>
<array>
<string>klip</string>
</array>import KlipLibimport KlipSDKlet klip = KlipSDK.shared// μ¬μ©μ μ 보 νλ μμ²λ¬Έ
let req: AuthRequest = AuthRequest();
// BApp μ 보
let bappInfo: BAppInfo = BAppInfo(name : "BApp Name");
// μλ΅ κ²°κ³Ό Callback
KlipSDK.shared.prepare(request: req, bappInfo: bappInfo) { result in
switch result {
case .success(let response):
case .failure(let error):
}
}// KAIA μ μ‘ νΈλμμ
μμ²λ¬Έ
let req: KlayTxRequest = KlayTxRequest(to: "0x..receiver address..", amount: "10")
KlipSDK.shared.prepare(request: req, bappInfo: bappInfo) { result in
switch result {
case .success(let response):
case .failure(let error):
}
}// Token μ μ‘ νΈλμμ
μμ²λ¬Έ
let req: TokenTxRequest = TokenTxRequest(to: "0x..receiver address..", amount: "10", contract: "0x..token contract address..")
KlipSDK.shared.prepare(request: req, bappInfo: bappInfo) { result in
switch result {
case .success(let response):
case .failure(let error):
}
}// Card μ μ‘ νΈλμμ
μμ²λ¬Έ
let req: CardTxRequest = CardTxRequest(to: "0x..receiver address..", contract: "0x..card contract address..", cardId: "9")
KlipSDK.shared.prepare(request: req, bappInfo: bappInfo) { result in
switch result {
case .success(let response):
case .failure(let error):
}
}// Contract μ€ν νΈλμμ
μμ²λ¬Έ
let req: ContractTxRequest = ContractTxRequest(to: "0x..contract address..", value: "10", abi: "{...}", params: "[{...}]")
KlipSDK.shared.prepare(request: req, bappInfo: bappInfo) { result in
switch result {
case .success(let response):
case .failure(let error):
}
}// Sign Message μμ²λ¬Έ
let req = SignMessageRequest(value: "message", from: "0x..contract address..")
KlipSDK.shared.prepare(request: req, bappInfo: bappInfo) { result in
switch result {
case .success(let response):
case .failure(let error):
}
}KlipSDK.shared.request(requestKey: "request key...")KlipSDK.shared.getResult(requestKey: "request key...") { result in
switch result {
case .success(let response):
case .failure(let error):
}
}KlipSDK.shared.getCardList(cardAddress: "0x..card address..", userAddress: "0x..user address..", cursor: nil) { result in
switch result {
case .success(let response):
case .failure(let error):
}
}App2App APIλ λ³λμ κ°μ μ μ°¨κ° νμμκ³ κΈ°λ³Έμ μΌλ‘ HTTP ν΅μ μ΄ κ°λ₯ν μ΄λ νκ²½μμλ λμ κ°λ₯ν©λλ€. λ€λ§, ν΄λ¦½ μ±μ μ€ννμ¬ μ¬μ©μμ μΉμΈμ λ°μμΌνκΈ° λλ¬Έμ κΈ°λ³Έμ μΌλ‘ ν΄λ¦½ μ±μ΄ μ€μΉλ νκ²½μμ νΈμΆ ν΄μΌν©λλ€.
μλ μμ λ REST APIλ curl λͺ
λ Ήμ μννκ³ , Deep Linkλ κ° λͺ¨λ°μΌ νκ²½μ SDKμμ μ 곡νλ APIλ₯Ό νΈμΆνκ±°λ, λͺ¨λ°μΌμΉ νκ²½μ κ²½μ° Web2App λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©νμ¬ μνν μ μμ΅λλ€. Web2App λΌμ΄λΈλ¬λ¦¬λ μλ GitHub μ μ₯μλ₯Ό ν΅ν΄μ μ»μ μ μμ΅λλ€. μμΈν μ¬μ© λ°©λ²μ ν΄λΉ μ¬μ΄νΈλ₯Ό μ°Έμ‘°νμμμ€.
App2App μ²λ¦¬ μ κ°μ λ¨Όμ μνν΄μΌν Prepare κ³Όμ μ Klipμμ μ²λ¦¬ν μμ² λ°μ΄ν°λ₯Ό μ λ¬νκ³ Request Keyλ₯Ό λ°κΈλ°λ κ³Όμ μ λλ€. Reqeust Keyλ Deep Link νΈμΆ λ° κ²°κ³Ό νμΈ κ³Όμ μμ νμν©λλ€.
μμ²μ μ’
λ₯λ authμ transactionμ΄ μμΌλ©°, transactionμ λ€μ μ½μΈ/ν ν° μ μ‘ νΈλμμ
, μΉ΄λ μ μ‘ νΈλμμ
, κ·Έλ¦¬κ³ μ»¨νΈλνΈ μ€ν νΈλμμ
μΌλ‘ λλ©λλ€. νμμ λ°λΌμ μ μ ν νλλ₯Ό μλμ κ°μ΄ μ€μ νμ¬ APIλ₯Ό νΈμΆν©λλ€.
νΈλμμ μμλ£λ₯Ό BAppμμ λμ μ§λΆνκ³ μ ν κ²½μ° μμλ£ λλ© κ°λ₯ν KAS (Klaytn API Service) μλΉμ€λ₯Ό ꡬλ νμ¬μΌ νλ©°, μμ² λ°μ΄ν°μ BApp νλ λ΄λΆμ μΈμ¦ μ 보λ₯Ό ν¨κ» μ λ¬ν΄μΌ ν©λλ€.
KAS λλ© μλΉμ€ ꡬλ λ° authorization key λ°κΈ λ°©λ²μ λ¬Έμλ₯Ό μ°Έκ³ νμκΈ° λ°λΌλ©°, λ¬Έμμ¬νμ KAS ν¬νμΌν°λ₯Ό μ΄μ©νμ¬ μ£ΌμκΈ° λ°λλλ€.
Auth μμ²μ Klip μ¬μ©μμ EOAλ₯Ό μ»μΌν λ μ¬μ©ν©λλ€. μμ² μμ λ μλμ κ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
callback κ°μ²΄μ success νλμλ Request μ²λ¦¬ μ±κ³΅ μ λ€μ BAppμΌλ‘ λλμμ¬ Deep Linkλ₯Ό μ€μ ν©λλ€. failμ κ²½μ°λ μ²λ¦¬μ μ€ν¨νμ λ λλμμ¬ Deep Linkλ₯Ό μ€μ ν©λλ€. μλ₯Ό λ€λ©΄, μ¬μ©μκ° μΉμΈνμΌλ μ΄λ―Έ μλ£λ κ²½μ°, λ§λ£λ request keyλ₯Ό μ¬μ©ν κ²½μ°, μκ³ λΆμ‘± λ±μ ν΄λΉν©λλ€. Android νλ«νΌμ κ²½μ°, Intent Scheme νμ(intent://...)μ Deep Linkλ‘ μμ±μ΄ νμν©λλ€.
BAppμμ Deep Linkλ₯Ό μ§μνμ§ μλ κ²½μ° μΈν νμ§ μμλ λ©λλ€. μ΄λλ Klipμμ BAppμΌλ‘ λ€μ λͺ μμ μΌλ‘ λλμκ°μΌ μ²λ¦¬κ° μλ£λ¨μ μλ΄ν©λλ€.
Send Token μμ²μ Klip μ¬μ©μμ ν ν°μ μ§μ λ μ£Όμλ‘ λ³΄λΌ λ μ¬μ©ν©λλ€. μμ² μμ λ μλμ κ°μ΅λλ€.
transaction κ°μ²΄μ contract νλμλ ν ν°μ 컨νΈλνΈ μ£Όμ(SCA)λ₯Ό μ€μ ν΄μΌ ν©λλ€(λ€μ΄ν°λΈ μ½μΈμ κ²½μ° 0x0000000000000000000000000000000000000000 μ
λ ₯). amount νλμλ λ³΄λΌ ν ν°μ μμ μ€μ ν©λλ€. μμμ 6μ리κΉμ§λ§ μ§μν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ Auth μμ² μμμ λμΌν ννμ κ°μ λ°μ΅λλ€.
Send Card μμ²μ Klip μ¬μ©μμ μΉ΄λλ₯Ό μ§μ λ μ£Όμλ‘ λ³΄λΌ λ μ¬μ©ν©λλ€. μμ² μμ λ μλμ κ°μ΅λλ€.
transaction κ°μ²΄μ contract νλμλ Klipμμ μ 곡νλ μΉ΄λμ 컨νΈλνΈ μ£Όμ(SCA)λ₯Ό μ€μ ν΄μΌ ν©λλ€. card_id νλμλ λ³΄λΌ ν ν°μ κ³ μ λ²νΈλ₯Ό μ€μ ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ Auth μμ² μμμ λμΌν ννμ κ°μ λ°μ΅λλ€.
Execute Contract μμ²μ Klip μ¬μ©μμ μλͺ μΌλ‘ μ€λ§νΈ 컨νΈλνΈ ν¨μλ₯Ό μνν λ μ¬μ©ν©λλ€. μμ² μμ λ μλμ κ°μ΅λλ€.
tuple νμ μ κ²½μ°λ λ€μμ μμ μ²λΌ μ¬μ©ν©λλ€.
{% hint style="info" %} Klaytn 체μΈμ νμ¬ Kaia 체μΈμΌλ‘ μ΄μλκ³ μμ§λ§ νμ νΈνμ±μ μν΄ kaia λμ μ klaytn μ΄λ¦μ μ¬μ©ν©λλ€. {% endhint %}
`
transactionκ°μ²΄μtoνλμλ μ€νν 컨νΈλνΈμ μ£Όμ(SCA)λ₯Ό μ€μ ν©λλ€.valueνλμλ μ μ‘ν KAIA(KLAY)λ₯Ό kei(peb) λ¨μλ‘ μ€μ ν©λλ€. payable ν¨μμΈ κ²½μ°μλ§ μ€μ ν μ μμ΅λλ€.abiμλ μ€νν ν¨μμ ABIλ₯Ό μ
λ ₯ν©λλ€. paramsμλ ν΄λΉ ν¨μλ₯Ό μ€νν μΈμλ₯Ό λ°°μ΄ ννμ λ¬Έμμ΄μ μ€μ ν©λλ€. abiλ°params` νλλ String νμ
μμ μ μνμ¬ μ μ‘ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ Auth μμ² μμμ λμΌν ννμ κ°μ λ°μ΅λλ€.
Sign Message μμ²μ Klip μ¬μ©μμ κ³μ μΌλ‘ λ©μμ§λ₯Ό μλͺ ν λ μ¬μ©ν©λλ€. μμ² μμ λ μλμ κ°μ΅λλ€.
μλ¬Έμ΄ hex encoding λ λ°μ΄ν°λ₯Ό μ¬μ©ν κ²½μ° λ€μμ²λΌ μ¬μ© ν μ μμ΅λλ€.
message μ€λΈμ νΈμ value νλμ μλͺ
ν μλ¬Έμ ν¬ν¨ν©λλ€. from νλλ μλͺ
νλ κ³μ μ£Όμμ
λλ€. μ ν νλͺ©μ΄λΌ μλ΅ν μ μμΌλ, λ§μ½ μ
λ ₯νλ€λ©΄ ν΄λΉ κ°μΌλ‘ μλͺ
κ³μ μ μ£Όμκ° μ¬λ°λ₯Έμ§ κ²μ¦ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ Auth μμ² μμμ λμΌν ννμ κ°μ λ°μ΅λλ€.
μλ¬Έμ μμ€ν€μ½λ μ΄μΈμ λ¬Έμκ° ν¬ν¨λ κ²½μ°μλ, caver-jsμ caver.utils.hashMessage λ©μλλ₯Ό ν΅ν΄μ ν΄μ±ν κ²°κ³Όλ¬Όμ Klipμμ μλ΅ν signature κ°μΌλ‘ recoverνλ©΄ κ²°κ³Όκ° μ€μ μλͺ ν κ³μ κ³Ό λ€λ₯Έ μ£Όμλ‘ μλ΅λ μ μλ λΆλΆ μ°Έκ³ νμκΈ° λ°λλλ€.
μλ¬Έμ΄ β0xβλ‘ μμ ν κ²½μ° caver-jsμ caver.utils.hashMessage λ©μλλ₯Ό ν΅ν΄μ ν΄μ±ν κ²°κ³Όλ¬Όμ μλμΌλ‘ hex encoding λ λ°μ΄ν°λ‘ νλ¨νμ¬ μμ±ν©λλ€. λμΌ λ°μ΄ν°μ λν΄ Klipμμ βis_hex_encoded": true μ¬μ©νμ¬ signature λ₯Ό λ§λ€μ§ μμΌλ©΄ recover ν κ²°κ³Όκ° μ€μ μλͺ ν κ³μ κ³Ό λ€λ₯Έ μ£Όμλ‘ μλ΅λ μ μλ λΆλΆ μ°Έκ³ νμκΈ° λ°λλλ€.
Requestλ BAppμμ ν΄λ¦½ μ±μ App2App μ²λ¦¬λ₯Ό μμ²νκΈ° μν Deep Linkλ₯Ό μ€ννλ κ³Όμ μ λλ€. Deep Linkλ₯Ό ν΅ν΄ ν΄λ¦½ μ±μ΄ μ€νλ κ²½μ°, μ¬μ©μμκ² νμΈ μ°½μ΄ λ¨κ²λ©λλ€. μΈμ¦μ κ²½μ°λ BAppμ EOAλ₯Ό μ 곡μ λμλ₯Ό ꡬνλ μ°½μ΄ λ¨κ²λλ©°, νΈλμμ μ²λ¦¬μ κ²½μ° μμ²ν νΈλμμ λ°μ΄ν°λ₯Ό νλ©΄μ 보μ¬μ£Όκ³ , pin code μ λ ₯λ°μμ μ€μ νΈλμμ μ μ²λ¦¬νκ²λ©λλ€.
λ§μ½ Prepare κ³Όμ μμ callback Deep Linkλ₯Ό μ€μ ν κ²½μ°, BAppμΌλ‘ μλμΌλ‘ λμ΄κ°λλ€. μ€μ νκΈ° μμ κ²½μ° μ¬μ©μμκ² BAppμΌλ‘ λλμκ°κΈ° μν μλ΄ λ©μμ§λ₯Ό μ 곡ν©λλ€.
Klipμμ μ 곡νλ URLμ μλμ κ°μ΅λλ€. 곡ν΅μ μΌλ‘ request_keyλ₯Ό 쿼리 μ€νΈλ§μΌλ‘ λ°μ΅λλ€. Prepare κ³Όμ μμ μ»μ κ°μ μ€μ ν©λλ€.
App2App API μμ²μ μ΅μ’
μνλ μλμ κ°μ΄ Result APIλ₯Ό pollingνμ¬ μ»μ μ μμ΅λλ€. Prepare κ³Όμ μμ μ»μ request_keyκ°μ 쿼리 μ€νΈλ§μΌλ‘ μ€μ ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μμ² typeλ³λ‘ μλ κ°μ λ°μ΅λλ€.
result κ°μ²΄μ signature νλλ‘ λΆν° μλ¬Έμ λν μλͺ
κ°μ λ°μ μ μμ΅λλ€. recoverλ caver.utils.recover λ©μλ λλ μλ μμ μ½λλ₯Ό ν΅ν΄μ μνν μ μμ΅λλ€.
μλ¬Έμ μμ€ν€μ½λ μ΄μΈμ λ¬Έμκ° ν¬ν¨λ κ²½μ°μλ, caver-jsμ caver.utils.hashMessage λ©μλλ₯Ό ν΅ν΄μ ν΄μ±ν κ²°κ³Όλ¬Όμ Klipμμ μλ΅ν signature κ°μΌλ‘ recoverνλ©΄ κ²°κ³Όκ° μ€μ μλͺ ν κ³μ κ³Ό λ€λ₯Έ μ£Όμλ‘ μλ΅λ μ μλ λΆλΆ μ°Έκ³ νμκΈ° λ°λλλ€.
μλ¬Έμ΄ β0xβλ‘ μμ ν κ²½μ° caver-jsμ caver.utils.hashMessage λ©μλλ₯Ό ν΅ν΄μ ν΄μ±ν κ²°κ³Όλ¬Όμ μλμΌλ‘ hex encoding λ λ°μ΄ν°λ‘ νλ¨νμ¬ μμ±ν©λλ€. λμΌ λ°μ΄ν°μ λν΄ Klipμμβis_hex_encoded": true μ¬μ©νμ¬ signature λ₯Ό λ§λ€μ§ μμΌλ©΄ recover ν κ²°κ³Όκ° μ€μ μλͺ ν κ³μ κ³Ό λ€λ₯Έ μ£Όμλ‘ μλ΅λ μ μλ λΆλΆ μ°Έκ³ νμκΈ° λ°λλλ€.
Authκ° μλ λ€λ₯Έ μμ² νμ
μΌ κ²½μ° result κ°μ²΄κ° μΆκ°λ‘ λμ΄μ΅λλ€. result κ°μ²΄μ tx_hash νλλ₯Ό 볡μ¬ν΄ kaiaScan, Etherscan, Polygon λ±μμ μ¬μ©νλ©΄ νΈλμμ
μ μ²λ¦¬ μνμ κ΄ν μμΈν μ 보λ₯Ό νμΈν μ μμ΅λλ€. result κ°μ²΄μ status νλλ pending μνμ κ²½μ°, μ¬μ©μκ° Klipμμ νμΈνμλ§, 체μΈμμ μμ§ νΈλμμ
μ μ²λ¦¬νλ μ€μμ μλ―Έν©λλ€. μΌλ°μ μΌλ‘ λͺ μ΄ νμ λ€μ νμΈνλ©΄ μμ²μ νμΈν μ μμ΅λλ€. successλ μμ²μ΄ μ±κ³΅μ μΌλ‘ μ²λ¦¬λ λ, failμ μμ² μ²λ¦¬μ μ€ν¨ν λμ μνμ
λλ€.
μΌλ°μ μΌλ‘ BAppμμ μΉ΄λλ₯Ό μ μ‘νκΈ° μν΄μλ μ¬μ©μκ° λ³΄μ νκ³ μλ μΉ΄λ λͺ©λ‘μ μ‘°ννμ¬ κ³ μ λ²νΈλ₯Ό μ»μ΄μΌνλ κ²½μ°κ° λ§μ΅λλ€. Auth κ³Όμ μ ν΅ν΄μ μ»μ EOAμ μ‘°ννλ €λ 컨νΈλνΈμ μ£Όμλ₯Ό μΈμλ‘ μΌμμ ν΄λΉ EOAκ° μ»¨νΈλνΈμ μμ νκ³ μλ μΉ΄λ λͺ©λ‘μ μ‘°νν μ μμ΅λλ€.
μμ² μμ λ μλμ κ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λ μ λ³΄κ° μ μ μ‘°νλμλ€λ©΄ κ³μ μ΄ μ΄ BAppμμ μμ ν μΉ΄λ λͺ©λ‘κ³Ό μ 보λ₯Ό λ°μ΅λλ€.
cardsμμ cardλ μ΄ BAppμμ μ°μ΄λ μΉ΄λμ
λλ€. BAppμλ μΉ΄λ 1μ’
λ₯κ° λ€μ΄μμ΅λλ€.
Query νλΌλ―Έν°λ‘ cursor λλ isAll λ μ€ νλλ§ μ¬μ©ν΄μΌ ν©λλ€(isAllμ΄ falseμ΄λ©΄ cursorλ₯Ό μ¬μ©ν μ μμ΅λλ€).
cursorλ₯Ό μ¬μ©νλ©΄ Paginationμ μ¬μ©ν©λλ€.
1ν μμ²μ μ΅λ μΉ΄λ 100κ°μ μ 보λ₯Ό λ°μ΅λλ€.
μ 보λ₯Ό λΆλ¬μΈ μΉ΄λκ° 100κ°λ₯Ό μ΄κ³Ό μ λ€μ μΉ΄λ μ 보λ₯Ό λΆλ¬μ¬ μ μλ 컀μκ°μΈ next_cursorλ‘ λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό λ°μ΅λλ€.
λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό λ°μΌλ €λ©΄ cursorμ μ΄μ νΈμΆμμ λ°μ next_cursorλ₯Ό λ£κ³ APIλ₯Ό λ€μ νΈμΆν©λλ€.
μ μμμμ cards.next_cursorκ°μ΄ μ‘΄μ¬νλ―λ‘ μ΄ κ³μ μ conan μΉ΄λλ₯Ό 100κ° μ΄μ κ°μ§κ³ μμ΅λλ€.
ν λ²μ μ‘°νν μΉ΄λ κ°μκ° 100κ°λ₯Ό μ΄κ³Όνλ€λ©΄ 1ν νΈμΆ μ μΉ΄λ 100κ° μ λ³΄λ§ λ°κ³ cards.next_cursorκ°μ λ°μ΅λλ€.
λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό μ‘°ννλ €λ©΄ cards.next_cursorκ°μ Query νλΌλ―Έν° cursorμ μ λ¬νκ³ APIλ₯Ό λ€μ νΈμΆν΄μΌ ν©λλ€.
μλ₯Ό λ€μ΄, μ 보λ₯Ό λΆλ¬μ¬ μΉ΄λ κ°μκ° 150κ°λΌλ©΄, λ¨Όμ APIλ₯Ό νΈμΆνμ¬ μΉ΄λ 100κ°μ μ 보μ cards.next_cursorκ°μ λ°μ΅λλ€.
κ·Έλ¦¬κ³ λμΌν APIλ₯Ό λ€μ νΈμΆν λ cards.next_cursorκ°μ Query νλΌλ―Έν° cursorλ‘ μ¬μ©νλ©΄ λλ¨Έμ§ 50κ°μ μ 보λ₯Ό λ°μ΅λλ€.
μμ²μ΄ μ μμ μΌλ‘ μ²λ¦¬λμ§ μμ κ²½μ° HTTP 400 λλ 500μ΄ λ¦¬ν΄λλ©° μμΈν λ΄μ©μ Basicsλ₯Ό μ°Έμ‘°νμμμ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ κ°λ°μ ν¬λΌμ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
{"bapp": {"name" : "My BApp", "kas_authorization_key": "Basic abcdefghijklmnopqrstuvwxyz0123456789="}}curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \
-d '{"bapp": { "name" : "My BApp" }, "callback": { "success": "mybapp:\/\/klipwallet\/success", "fail": "mybapp:\/\/klipwallet\/fail" }, "type": "auth" }' \
-H "Content-Type: application/json"{
"request_key": "0b0ee0ad-62b3-4146-980b-531b3201265d", // random string
"status": "prepared", // μ μμ μΌλ‘ μ²λ¦¬λ κ²½μ°. λ§μ½ λ¬Έμ κ° μλ€λ©΄ "error" μνκ° λμ΄μ΄.
"expiration_time": 1600011054, //unix timestamp
"estimated_gas": 210000 // νΈλμμ
μ λ°μμν€λ μμ²μ΄λ©΄μ from κ°μ΄ μ‘΄μ¬ν κ²½μ° μ€μ νΈλμμ
μμ±μ μ¬μ©λ gasLimit κ°μ λ°ν. μ΄μΈμ κ²½μ° μλ΅.
}curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \
-d '{"bapp": { "name" : "My BApp" }, "chain": "klaytn", "type": "send_token", "transaction": { "contract": "0xdc8c8d2CD5829dE8e8a31Fc595D69c4B403e9dD8", "from": "0xcD1722f2947Def4CF144679da39c4C32bDc35681", "to": "0x85c17299e9462e035c149847776e4edb7f4b2aa9", "amount": "100" } }' \
-H "Content-Type: application/json"curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \
-d '{"bapp": { "name" : "My BApp" }, "type": "send_card", "transaction": { "contract": "0xB21F0285d27beb2373ECB5c17E119ccEAd7Ee10A", "from": "0xcD1722f2947Def4CF144679da39c4C32bDc35681", "to": "0x85c17299e9462e035c149847776e4edb7f4b2aa9", "card_id": "1234" } }' \
-H "Content-Type: application/json"curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \
-d '{"bapp": { "name" : "My BApp" }, "chain": "klaytn", "type": "execute_contract", "transaction": { "to": "0xd4fFbe967c31C29199478Be2b5A53dC69eF9B825", "value": "0", "abi": "{ \"constant\": false, \"inputs\": [ { \"name\": \"a\", \"type\": \"string\" } ], \"name\": \"testString\", \"outputs\": [], \"payable\": false, \"stateMutability\": \"nonpayable\", \"type\": \"function\" }", "params": "[\"test_string\"]" } }' \
-H "Content-Type: application/json"curl -X POST 'https://a2a-api.klipwallet.com/v2/a2a/prepare' \
-d '{
"bapp": {
"name": "name",
"callback": {}
},
"chain": "klaytn",
"type": "execute_contract",
"transaction": {
"to": "0xF857Dcd31A2a69764bfEbb30dc51EA24519b8aEc",
"value": "0",
"abi": "{\"inputs\": [{\"components\": [{\"internalType\": \"string\",\"name\": \"text\",\"type\": \"string\"},{\"internalType\": \"bool\",\"name\": \"completed\",\"type\": \"bool\"}],\"internalType\": \"struct Test.Todo\",\"name\": \"a\",\"type\": \"tuple\"}],\"name\": \"testStruct\",\"outputs\": [],\"stateMutability\": \"nonpayable\",\"type\": \"function\"}",
"params": "[[\"2001\",false]]"
}
}' \
-H 'Content-Type: application/json' curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \
-d '{"bapp": { "name" : "My BApp" }, "chain": "klaytn", "type": "sign_message", "message": { "value": "original message", "from": "0x220AD25E31BBF7c19D95Be0e47d4cdc0Ad8f8FEa" } }' \
-H "Content-Type: application/json"curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \
-d '{"bapp": { "name" : "My BApp" }, "chain": "klaytn", "type": "sign_message", "message": { "is_hex_encoded": true, "value": "0x1290fe99a322", "from": "0x220AD25E31BBF7c19D95Be0e47d4cdc0Ad8f8FEa" } }' \
-H "Content-Type: application/json"https://klipwallet.com?target=/a2a?request_key=0b0ee0ad-62b3-4146-980b-531b3201265dcurl -X GET "https://a2a-api.klipwallet.com/v2/a2a/result?request_key=0b0ee0ad-62b3-4146-980b-531b3201265d" \
-H "Content-Type: application/json"{
"request_key": "0b0ee0ad-62b3-4146-980b-531b3201265d",
"expiration_time": 1752488581,
"status": "completed",
"result": {
"klaytn_address": "0x7529d7814a19d9a9F9d8405D4eF9BDA56B02f457", //νΈνμ±μ μν΄ νλλͺ
μ klaytn μ μ§
"evm_address": "0x7529d7814a19d9a9F9d8405D4eF9BDA56B02f457",
"bitcoin_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
"solana_address": "M1TRvDk3XZMnafQZhcD2NrBkAcXbDRjmyJDxb5YJUcF",
"tron_address": "TPF9k4bHPSpZinYMuWcGCeMuCLtAH8Ku43",
"xrpl_address": "rmBdbQFdwTHAC1a98X6SA5BaXzfUcPwe7"
}
}{
"request_key": "0b0ee0ad-62b3-4146-980b-531b3201265d",
"expiration_time": 1600011054,
"status": "completed",
"result": {
"signature": "0x1dc98165c3fc523bcdbdf18eadba12b004cd30b232e5e65fdd6424412cbf0dab2d131dda838cd249a7d00414ae53abe5ba6fa7bf8446f28c328bc60443c1545d07f5",
"hash": "0x0b9ac081057767a46500710d1007d4f0de7f23b109b50ffdc60d03b175a9eb6f"
}
}const Bytes = require('eth-lib/lib/Bytes');
const elliptic = require("elliptic");
const secp256k1 = new elliptic.ec("secp256k1");
const { keccak256, keccak256s } = require("eth-lib/lib/hash");
const utils = require("caver-js/packages/caver-utils");
function recover(message) {
const hex = message.signature
const hash = message.message
const vals = [Bytes.slice(64, Bytes.length(hex), hex), Bytes.slice(0, 32, hex), Bytes.slice(32, 64, hex)];
const vrs = { v: Bytes.toNumber(vals[0]), r: vals[1].slice(2), s: vals[2].slice(2) };
const ecPublicKey = secp256k1.recoverPubKey(new Buffer(hash.slice(2), "hex"), vrs, vrs.v < 2 ? vrs.v : 1 - vrs.v % 2); // because odd vals mean v=0... sadly that means v=0 means v=1... I hate that
const publicKey = "0x" + ecPublicKey.encode("hex", false).slice(2);
const publicHash = keccak256(publicKey);
const recoveredAddress = "0x" + publicHash.slice(-40);
if (recoveredAddress.toLowerCase() === message.address.toLowerCase()) {
console.log("ok", recoveredAddress, message.address)
return true
} else {
console.log("not match", recoveredAddress, message.address)
}
return false
}
const EthereumPrefix = "Ethereum Signed Message"
const PolygonPrefix = "Ethereum Signed Message"
const KlaytnPrefix = "Klaytn Signed Message"
function hashMessage(chainPrefix, data) {
const message = utils.isHexStrict(data) ? utils.hexToBytes(data) : data
const messageBuffer = Buffer.from(message)
const preamble = `\x19` + chainPrefix + `:\n${message.length}`
const preambleBuffer = Buffer.from(preamble)
const saltedMessage = Buffer.concat([preambleBuffer, messageBuffer])
return keccak256(saltedMessage)
}
const message = {
message: hashMessage(PolygonPrefix, 'original message'),
address: "0xa99694791182d3f6d0e0ccf5a2b0703845a50a50",
signature: "0x25b46420d40415d1a3cab6d1b2849e93e100fb310eebc9db8580a6eb465fc3535dd7f61c6a95efe281acfe0a9de6f089eec57ea78c578738e1dc16ded1c7999d1c"
}
recover(message){
"request_key": "0b0ee0ad-62b3-4146-980b-531b3201265d",
"expiration_time": 1600011054,
"status": "completed",
"result": {
"tx_hash": "0x82d018556e88b8f8f43dc2c725a683afc204bfd3c17230c41252354980f77fb3",
"status": "success"
}
}curl -X GET "https://a2a-api.klipwallet.com/v2/a2a/cards?chain=klaytn&sca=0xB21F0285d27beb2373ECB5c17E119ccEAd7Ee10A&eoa=0x85c17299e9462e035c149847776e4edb7f4b2aa9&cursor=" -H "Content-Type: application/json"{
"name": "conan",
"symbol_img": "https://media.klipwallet.com/token_icon/klay_klip.svg",
"cards": [
{
"created_at": 1580176787,
"created_at_format": "format",
"updated_at": 1580176787,
"updated_at_format": "format",
"owner": "0x85c17299e9462e035c149847776e4edb7f4b2aa9",
"sender": "0x2412b300750f505fb2e68ddf0cd45e9d95f5378d",
"sender_kakao_id": "1234"
"card_id": 19,
"card_uri": "https://media.klipwallet.com/card-asset/1234/19.json",
"transaction_hash": "0x293a2e53ecf238109908e65a2b7ff4aad0919ce3ce54af08d6fc4323f28e935d"
},
],
"next_cursor": "mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL"
}API 16: Android 4.1(Jelly Bean) μ΄μ
Java 11 μ΄μ
Android Studio 3.0.0 μ΄μ
Android Permission : Internet Permission
Klip Android SDKλ λ³λμ κ°μ μ μ°¨κ° νμνμ§ μμ΅λλ€. HTTP ν΅μ μ΄ κ°λ₯ν μ΄λ νκ²½μμλ λμν©λλ€. λ€λ§, κΈ°λ³Έμ μΌλ‘ Klip μ±μ΄ μ€μΉλ νκ²½μμ νΈμΆν΄μΌ ν©λλ€. Klip μ±μ μ€ννμ¬ Klip μ¬μ©μμ μΉμΈμ λ°μμΌ νκΈ° λλ¬Έμ λλ€.
Klip Android SDK Sample μ±μ μ€ν κ°μ΄λλ νλ‘μ νΈμ ν¬ν¨λμ΄ μλ README.mdμ μκ°λμ΄ μμ΅λλ€.
λ€μ΄λ‘λ νμ΄μ§μμ Klip Android SDKλ₯Ό λ€μ΄λ°μ΅λλ€.
λ€μ΄λ°μ Klip SDK νλ‘μ νΈμ μμΉμμ Terminalμ μ€ν
./gradlew :sdk:build λͺ
λ Ήμ μ€ννμ¬ Klip SDK νλ‘μ νΈλ₯Ό λΉλ (λΉλκ° μλ£λλ©΄ <Klip SDK νλ‘μ νΈ>/sdk/build/outputs/aar/μμΉμ κ²°κ³Όλ¬ΌμΈ AAR νμΌμ΄ μμ±λ¨)
κ°λ° νλ‘μ νΈμ libs λλ ν 리λ₯Ό μμ±
λΉλλ AAR νμΌμ κ°λ° νλ‘μ νΈμ libs λλ ν λ¦¬λ‘ λ³΅μ¬
κ°λ° νλ‘μ νΈμ build.gradleμ λλ ν 리 μ°Έμ‘° λ° λνλμ μ€μ μ μΆκ°
κ°λ° μ€μΈ νλ‘μ νΈλ₯Ό Android Studioλ‘ μ€ν
Android Studio > File > New > Import Moduleμ ν΄λ¦
Source Directoryμ λ€μ΄λ°μ Klip SDK νλ‘μ νΈμ sdk λλ ν 리λ₯Ό μ ν, ν΄λ¦ν ν Nextλ₯Ό ν΄λ¦
Klip SDK νλ‘μ νΈμ gradle.properties λ΄μ©λ€μ κ°λ° νλ‘μ νΈλ‘ 볡μ¬
κ°λ° νλ‘μ νΈμ build.gradleμ λνλμ μ€μ μ μΆκ°
Klip SDK μμ€κ° κ°λ° νλ‘μ νΈμ 볡μ¬λκ³ λΌμ΄λΈλ¬λ¦¬ μ½λλ₯Ό μ§μ μμ ν μ μμ΅λλ€. λ§μ½, λ¨μΌ λ²μ μ λΌμ΄λΈλ¬λ¦¬ μ½λλ₯Ό μ μ§νλ €λ κ²½μ°μλ μ΄ λ°©λ²μ΄ μ μ νμ§ μμ μ μμ΅λλ€. μ΄ κ²½μ°, λ°©λ² 1μμ μλ΄ν λ΄μ©μ λ°λΌ μ»΄νμΌλ AAR νμΌμ μΆκ°ν©λλ€.
Klip SDKλ₯Ό ν΅ν΄ HTTP ν΅μ μ¬μ©μ νμ©νκΈ° μν΄, μ±μ μΈν°λ· μ¬μ© κΆνμ μ€μ ν΄μΌ ν©λλ€. AndroidManifest.xml νμΌμ λ€μκ³Ό κ°μ΄ android.permission.INTERNET κΆνμ μΆκ°ν©λλ€.
App2App SDK Android v2.0.1 μ΄ν λ²μ μ μ¬μ©νλ©΄μ Android 11μ νκ²ν
νλ μ±(API μμ€ 30)μ κ°λ°νλ κ²½μ° Klipκ³Ό μ°λμ μν΄ ν¨ν€μ§ 쿼리λ₯Ό μΆκ°ν΄ μνΈμμ©μ μ€μ ν΄μΌ ν©λλ€. AndroidManifest.xml νμΌμ λ€μκ³Ό κ°μ΄ queries μμλ₯Ό μΆκ°νμΈμ. (App2App SDK v2.1.0 μ΄μμ μ¬μ©νλ κ²½μ°λ μ€μ νμ§ μμλ λ©λλ€.)
μμΈν λ΄μ©μ Android 11μ ν¨ν€μ§ κ³΅κ° μνλ₯Ό μ°Έκ³ ν©λλ€.
App2App API μμ²μ ν¬κ² prepare, request, getResultμ μμλ‘ μ§νμ΄ λ©λλ€.
prepareλ μ΄λ ν μμ²μ ν μ§ μμ²μ μ μνλ λ¨κ³λ‘ μ΄ 5κ°μ§ μ’
λ₯μ μμ²μ΄ μ‘΄μ¬
requestλ ν¨μ νΈμΆμ ν΅ν΄ KlipμΌλ‘ νλ©΄μ΄ μ νλμ΄ μ€μ μλͺ
νλ‘μΈμ€λ₯Ό μ§ν
getResultλ ν¨μ νΈμΆμ ν΅ν΄ κ²°κ³Όκ°μ λ°κ³ νμΈ
μΆκ°μ μΌλ‘ getCardListλ BApp κ°λ°μ νΈμλ₯Ό μν΄ Klip μ¬μ©μμ NFT λͺ©λ‘μ λ°μμ¬ μ μλλ‘ μ 곡λλ ν¨μμ λλ€.
Klip SDKλ₯Ό μ¬μ©νκΈ° μν μΈμ€ν΄μ€λ₯Ό μμ±ν©λλ€.
Parameters
context
Context
μ ν리μΌμ΄μ 컨ν μ€νΈ
Return Value
Klip
Klip μΈμ€ν΄μ€
Example
App2App API μμ² μ²λ¦¬λ₯Ό μ€λΉνκ³ request keyλ₯Ό λ°κΈν©λλ€.
Request κ°μ μ¬μ©ν κ°μ²΄
Klip μ°κ²° νμ
(=μΈμ¦)μ κ²½μ° AuthRequest
KAIA(=KLAY) μ μ‘ νμ
μ κ²½μ° KlayTxRequest
Token μ μ‘ νμ
μ κ²½μ° TokenTxRequest
Card μ μ‘ νμ
μ κ²½μ° CardTxRequest
Contract μ€ν νμ
μ κ²½μ° ContractTxRequest
Sign Message μμ² νμ
μ κ²½μ° SignMessageRequest - μ΄ κ²½μ° Klaytn νμ€μ λ°λΌ "\x19Klaytn Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ¬ μλͺ
ν©λλ€.
Parameters
request
KlipRequest
μμ² νμ μ λ°λ₯Έ μμ²μ 보
bappInfo
BAppInfo
μμ² μ± μ 보
callback
KlipCallback<KlipResponse>
μμ² μλ΅ κ²°κ³Όλ₯Ό λ°μ μ½λ°±ν¨μμ
λλ€. μ²λ¦¬κ° μλ£λλ©΄, μλ£κ²°κ³ΌμΈ KlipResponseλ₯Ό μ μ‘λ°κ³ , μ²λ¦¬κ° μ€ν¨λλ©΄, μ€ν¨κ²°κ³ΌμΈKlipErrorResponseλ₯Ό μ μ‘λ°μ΅λλ€.
Throws
KlipRequestException
μμ² μμΈ (ex, νμ Parameter λ―Έμ λ ₯μ λ°μ)
Klip μ¬μ©μμκ² λμ μμ²μ, requestμ bappInfoμ μ λ ₯λ μ λ³΄κ° μΆλ ₯λ©λλ€. μλ΅ κ²°κ³Όμ ν¬ν¨λ request keyλ μ¬μ©μμκ² νΈλμμ μ μμ²νκΈ° μν 컨ν μ€νΈ ν€μ μν μ μννλ©°, μ¬μ©μ λμ μμ² λ° κ²°κ³ΌνμΈ APIμ ν¨κ» μ¬μ©λ©λλ€.
Example 1. μ¬μ©μ μ 보 νλνκΈ°
Example 2. KAIA(=KLAY) μ μ‘νκΈ°
Example 3. Token μ μ‘νκΈ°
Example 4. Card μ μ‘νκΈ°
Example 5. Contract μ€ννκΈ°
Example 6. Sign Message μ€ννκΈ°
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ κ°λ°μ ν¬λΌμ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
Deep Linkλ₯Ό μ΄μ©νμ¬ Klipμ μΈμ¦ λλ μλͺ μ μμ²ν©λλ€. μ€ν μ€μΈ μ€λ§νΈν° κΈ°κΈ°μ Klip μ±μ΄ μ€μΉλμ§ μμκ±°λ μλ μ€νν μ μλ κ²½μ° 'Klip μκ° νμ΄μ§(https://klipwallet.com)' λ‘ μ΄λνμ¬ μ¬μ©μλ Klip μ±μ λ€μ΄λ‘λλ°μ μ μμ΅λλ€. requestKeyμλ prepare λ¨κ³μμ Klip μλ²λ‘λΆν° λ°μ μμ² λ²νΈλ₯Ό μ¬μ©ν©λλ€.
PC νκ²½μμ QR codeλ₯Ό μ΄μ©ν request μ€ν μ²λ¦¬λ QR code μμ νλͺ©μ μ°Έμ‘°νμμμ€.
Parameters
requestKey
String
μμ² λ²νΈ
Throws
KlipRequestException
μμ² μμΈ (ex, νμ Parameter λ―Έμ λ ₯μ λ°μ)
Example
App2App API μμ²μ λν κ²°κ³Όλ₯Ό νμΈν©λλ€. requestKeyμλ prepare λ° request λ¨κ³μμ μ¬μ©ν μμ² λ²νΈλ₯Ό μ¬μ©ν©λλ€.
Parameters
requestKey
String
μμ² λ²νΈ
callback
KlipCallback<KlipResponse>
μμ² μλ΅ κ²°κ³Όλ₯Ό λ°μ μ½λ°±ν¨μμ
λλ€. μ²λ¦¬κ° μλ£λλ©΄, μλ£κ²°κ³ΌμΈ KlipResponseλ₯Ό μ μ‘λ°κ³ , μ²λ¦¬κ° μ€ν¨λλ©΄, μ€ν¨κ²°κ³ΌμΈKlipErrorResponseλ₯Ό μ μ‘λ°μ΅λλ€.
Throws
KlipRequestException
μμ² μμΈ (ex, νμ Parameter λ―Έμ λ ₯μ λ°μ)
Example
μ¬μ©μμ λͺ¨λ μΉ΄λ μ€ νΉμ μΉ΄λμ λͺ©λ‘μ κ°μ Έμ΅λλ€.
Parameters
cardAddress
String
μ‘°νν μΉ΄λ μ£Όμ
userAddress
String
μ‘°νν μ¬μ©μ μ£Όμ
cursor
String
(optional) μ‘°νν 컀μκ°μ λλ€. λ§μ½, μ‘°νν μΉ΄λμ 보μ λͺ©λ‘μ΄ 100κ° μ΄μμ΄λ©΄, λ€μ 100κ° μ 보λ₯Ό λ°μ μ μμ΅λλ€.
callback
KlipCallback<CardListResponse>
μμ² μλ΅ κ²°κ³Όλ₯Ό λ°μ μ½λ°±ν¨μμ
λλ€. μ²λ¦¬κ° μλ£λλ©΄, μΉ΄λλͺ©λ‘μΈ CardListResponseλ₯Ό μ μ‘λ°κ³ , μ²λ¦¬κ° μ€ν¨λλ©΄, μ€ν¨ κ²°κ³ΌμΈKlipErrorResponseλ₯Ό μ μ‘λ°μ΅λλ€.
Throws
KlipRequestException
μμ² μμΈ (ex, νμ Parameter λ―Έμ λ ₯μ λ°μ)
Example
μλ¬μ½λλ KlipCallbackμ μ€ν¨μ μλ΅κ²°κ³ΌμΈ KlipErrorResponseμ getErrorCode()ν¨μλ₯Ό ν΅ν΄ νμΈν μ μμ΅λλ€.
-
-
μ λμΌ
500
10
Klip SDKμμ μλ¬ λ°μ (ex, Http μ°κ²° μ€ν¨)
500
21
Klip SDKμμ μλ¬ λ°μ (Klip REST API λ―Έμ§μ μλ¬μ½λ)
500
22
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ κ°λ°μ ν¬λΌμ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
μ΄ νμ΄μ§μμλ BAppμμ Klipμ νμ©νκΈ° μν App2App JavaScript SDKλ₯Ό μ€λͺ ν©λλ€.
(npm μ΄μ©νμ¬ μ€μΉνλ κ²½μ°) node 10 μ΄μ κΆμ₯
Klip JavaScript SDKλ λ³λμ κ°μ μ μ°¨κ° νμνμ§ μμ΅λλ€. HTTP ν΅μ μ΄ κ°λ₯ν μ΄λ νκ²½μμλ λμν©λλ€. λ€λ§, κΈ°λ³Έμ μΌλ‘ Klip μ±μ΄ μ€μΉλ νκ²½μμ νΈμΆν΄μΌ ν©λλ€. Klip μ±μ μ€ννμ¬ Klip μ¬μ©μμ μΉμΈμ λ°μμΌ νκΈ° λλ¬Έμ λλ€.
npm install klip-sdk νΉμ yarn add klip-sdk 컀맨λλ₯Ό ν΅ν΄ μ€μΉ ν
λ€μκ³Ό κ°μ΄ ES module import λ°©μμΌλ‘ μ¬μ©ν©λλ€.
νμμ Klip JavaScript SDKλ₯Ό λ€μ΄λ°μ΅λλ€. λ€μ΄ λ°μ νμΌμ λ ν¬μ§ν 리μ μμΉμν¨ ν HTMLνμΌμ λ€μκ³Ό κ°μ΄ μ€νΈλ¦½νΈ νκ·Έλ₯Ό μ½μ ν©λλ€.
μ΄ν κΈλ‘λ² λ€μμ€νμ΄μ€μ μ μΈλ klipSDK λ³μλ₯Ό νμ©νμ¬ κ° λ©μλμ μ κ·Όν©λλ€.
App2App API μμ²μ ν¬κ² prepare, request, getResultμ μμλ‘ μ§νμ΄ λ©λλ€.
prepareλ μ΄λ ν μμ²μ ν μ§ μμ²μ μ μνλ λ¨κ³λ‘ μ΄ 5κ°μ§ μ’
λ₯μ μμ²μ΄ μ‘΄μ¬
requestλ ν¨μ νΈμΆμ ν΅ν΄ KlipμΌλ‘ νλ©΄μ΄ μ νλμ΄ μ€μ μλͺ
νλ‘μΈμ€λ₯Ό μ§ν
getResultλ ν¨μ νΈμΆμ ν΅ν΄ κ²°κ³Όκ°μ λ°κ³ νμΈ
μΆκ°μ μΌλ‘ getCardListλ BApp κ°λ°μ νΈμλ₯Ό μν΄ Klip μ¬μ©μμ NFT λͺ©λ‘μ λ°μμ¬ μ μλλ‘ μ 곡λλ ν¨μμ
λλ€.
App2App API μμ²μ μ€λΉνκ³ request keyλ₯Ό λ°μ΅λλ€.
μ¬μ© κ°λ₯ν μμ² μ ν
Klip μ°κ²° νμ
(=μΈμ¦)μ κ²½μ° auth
KAIA(=KLAY) μ μ‘ νμ
μ κ²½μ° sendKLAY
Token μ μ‘ νμ
μ κ²½μ° sendToken
μ¬μ©μμ μ 보λ₯Ό νλνλ μμ²μ λλ€.
Parameters
Example
μ¬μ©μμ KAIA(=KLAY)λ₯Ό νΉμ μ£Όμλ‘ μ μ‘νλ μμ²μ λλ€.
Parameters
Example
μ¬μ©μκ° λ³΄μ ν ν ν°μ νΉμ μ£Όμλ‘ μ μ‘νλ μμ²μ λλ€.
Parameters
Example
μ¬μ©μκ° λ³΄μ ν μΉ΄λ(NFT)λ₯Ό νΉμ μ£Όμλ‘ μ μ‘νλ μμ²μ λλ€.
Parameters
Example
μ¬μ©μκ° νΉμ 컨νΈλνΈμ ν¨μλ₯Ό μ€ννλλ‘ νλ μμ²μ λλ€.
Parameters
Example
μ¬μ©μκ° Klip κ³μ μΌλ‘ λ©μμ§λ₯Ό μλͺ
νλ μμ²μ
λλ€. κΈ°μ‘΄ Klaytn νμ€μ λ°λΌ "\x19Klaytn Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ¬ μλͺ
ν©λλ€.
Parameters
Example
Deep Linkλ₯Ό μ΄μ©νμ¬ Klipμ μΈμ¦ λλ μλͺ μ μμ²ν©λλ€. μ€ν μ€μΈ μ€λ§νΈν° κΈ°κΈ°μ Klip μ±μ΄ μ€μΉλμ§ μμκ±°λ μλ μ€νν μ μλ κ²½μ° 'Klip μκ° νμ΄μ§(https://klipwallet.com)' λ‘ μ΄λνμ¬ μ¬μ©μλ Klip μ±μ λ€μ΄λ‘λλ°μ μ μμ΅λλ€. requestKeyμλ prepare λ¨κ³μμ Klip μλ²λ‘λΆν° λ°μ μμ² λ²νΈλ₯Ό μ¬μ©ν©λλ€.
PC νκ²½μμ QR codeλ₯Ό μ΄μ©ν request μ€ν μ²λ¦¬λ νλͺ©μ μ°Έμ‘°νμμμ€.
Parameters
Example
App2App API μμ²μ λν κ²°κ³Όλ₯Ό νμΈν©λλ€. requestKeyμλ prepare λ° request λ¨κ³μμ μ¬μ©ν μμ² λ²νΈλ₯Ό μ¬μ©ν©λλ€.
Parameters
Example
μ¬μ©μμ μΉ΄λ (NFT) 보μ λͺ©λ‘μ κ°μ Έμ΅λλ€. μ‘°ννκ³ μ νλ NFT 컨νΈλνΈ μ£Όμλ₯Ό μκ³ μμ΄μΌ νλ©°, Klipμμ μ§μνλ 컨νΈλνΈλ§ κ°λ₯ν©λλ€.
Parameters
Example
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
// Klip SDK
implementation 'com.klipwallet.app2app:klip-a2a-sdk-android_release_v2.3.0:2.3.0@aar'
}dependencies {
// Klip SDK
implementation project(path: ':sdk')
}<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest> <manifest ...>
<queries>
<package android:name="com.klipwallet.app" />
</queries>
...
</manifest>public class SampleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Klip klip = Klip.getInstance(this);
}
}// μ¬μ©μ μ 보 νλ μμ²λ¬Έ
AuthRequest req = new AuthRequest();
// BApp μ 보
BAppInfo bappInfo = new BAppInfo("BApp Name");
// μλ΅ κ²°κ³Ό Callback
KlipCallback callback = new KlipCallback<KlipResponse>() {
@Override public void onSuccess(final KlipResponse res) {}
@Override public void onFail(final KlipErrorResponse res) {}
}
klip.prepare(req, bappInfo, callback);// KAIA μ μ‘ νΈλμμ
μμ²λ¬Έ
KlayTxRequest req = new KlayTxRequest.Builder()
.to("0x..receiver address..")
.amount("10")
.build();
klip.prepare(req, bappInfo, callback); // bappInfo, callback (example 1 μ°Έκ³ )// Token μ μ‘ νΈλμμ
μμ²λ¬Έ
TokenTxRequest req = new TokenTxRequest.Builder()
.contract("0x..token contract address..")
.to("0x..receiver address..")
.amount("10")
.build();
klip.prepare(req, bappInfo, callback); // bappInfo, callback (example 1 μ°Έκ³ )// Card μ μ‘ νΈλμμ
μμ²λ¬Έ
CardTxRequest req = new CardTxRequest.Builder()
.contract("0x..card contract address..")
.to("0x..receiver address..")
.cardId("9")
.build();
klip.prepare(req, bappInfo, callback); // bappInfo, callback (example 1 μ°Έκ³ )// Contract μ μ‘ νΈλμμ
μμ²λ¬Έ
ContractTxRequest req = new ContractTxRequest.Builder()
.to("0x..contract address..")
.value("10")
.abi("{..contract abi..}")
.params(new ArrayList<Object>(){
// contract parameters
})
.build();
klip.prepare(req, bappInfo, callback); // bappInfo, callback (example 1 μ°Έκ³ )// Sign Message μμ²λ¬Έ
SignMessageRequest req = new SignMessageRequest.Builder()
.from("0x..contract address..")
.value("message")
.build();
klip.prepare(req, bappInfo, callback); // bappInfo, callback (example 1 μ°Έκ³ )klip.request(requestKey); // Klip μ± νΈμΆKlipCallback callback = new KlipCallback<KlipResponse>() {
@Override public void onSuccess(final KlipResponse res) {}
@Override public void onFail(final KlipErrorResponse res) {}
}
Klip klip = Klip.getInstance();
klip.getResult(requestKey, callback)KlipCallback callback = new KlipCallback<KlipCardListResponse>() {
@Override public void onSuccess(final KlipCardListResponse res) {}
@Override public void onFail(final KlipErrorResponse res) {}
}
Klip klip = Klip.getInstance();
klip.getCardList("0x..card address..",
"0x..user address..",
null,
callback);Klip SDKμμ μλ¬ λ°μ (Klip Protocol μλ¬)
sendCardContract μ€ν νμ
μ κ²½μ° executeContract
Sign Message μμ² νμ
μ κ²½μ° signMessage - μ΄ κ²½μ° Klaytn νμ€μ λ°λΌ "\x19Klaytn Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ¬ μλͺ
ν©λλ€.
successLink
string
μ¬μ©μ λμκ³Όμ μλ£ ν λμμ¬ BAppμ λν Deep Link (optional)
failLink
string
μ¬μ©μ λμκ³Όμ μμ λ¬Έμ κ° λ°μν κ²½μ° λμμ¬ BAppμ λν Deep Link (optional)
from
string
μ¬μ©μμ Klip κ³μ μ£Όμκ° from μ£Όμμ μΌμΉνλ κ²½μ°λ§ μ§ν (optional)
successLink
string
μ¬μ©μ λμκ³Όμ μλ£ ν λμμ¬ BAppμ λν Deep Link (optional)
failLink
string
μ¬μ©μ λμκ³Όμ μμ λ¬Έμ κ° λ°μν κ²½μ° λμμ¬ BAppμ λν Deep Link (optional)
from
string
μ¬μ©μμ Klip κ³μ μ£Όμκ° from μ£Όμμ μΌμΉνλ κ²½μ°λ§ μ§ν (optional)
successLink
string
μ¬μ©μ λμκ³Όμ μλ£ ν λμμ¬ BAppμ λν Deep Link (optional)
failLink
string
μ¬μ©μ λμκ³Όμ μμ λ¬Έμ κ° λ°μν κ²½μ° λμμ¬ BAppμ λν Deep Link (optional)
params
string
μ€νν ν¨μμ μΈμ λͺ©λ‘
from
string
μ¬μ©μμ Klip κ³μ μ£Όμκ° from μ£Όμμ μΌμΉνλ κ²½μ°λ§ μ§ν (optional)
successLink
string
μ¬μ©μ λμκ³Όμ μλ£ ν λμμ¬ BAppμ λν Deep Link (optional)
failLink
string
μ¬μ©μ λμκ³Όμ μμ λ¬Έμ κ° λ°μν κ²½μ° λμμ¬ BAppμ λν Deep Link (optional)
failLink
string
μ¬μ©μ λμκ³Όμ μμ λ¬Έμ κ° λ°μν κ²½μ° λμμ¬ BAppμ λν Deep Link (optional)
bappName
string
μ¬μ©μμκ² νμλ BAppμ μ΄λ¦
successLink
string
μ¬μ©μ λμκ³Όμ μλ£ ν λμμ¬ BAppμ λν Deep Link (optional)
failLink
string
μ¬μ©μ λμκ³Όμ μμ λ¬Έμ κ° λ°μν κ²½μ° λμμ¬ BAppμ λν Deep Link (optional)
bappName
string
μ¬μ©μμκ² νμλ BAppμ μ΄λ¦
to
string
λ°λ μ¬λμ μ£Όμ
amount
string
λ³΄λΌ KAIA(=KLAY) μλ (λ¨μ: KAIA, μμμ μ΅λ 6μ리 νμ©)
from
string
μ¬μ©μμ Klip κ³μ μ£Όμκ° from μ£Όμμ μΌμΉνλ κ²½μ°λ§ μ§ν (optional)
bappName
string
μ¬μ©μμκ² νμλ BAppμ μ΄λ¦
to
string
λ°λ μ¬λμ μ£Όμ
amount
string
λ³΄λΌ ν ν° μλ (λ¨μ: ν ν°μ default λ¨μ, μμμ μ΅λ 6μ리 νμ©)
contract
string
ν ν° μ»¨νΈλνΈ μ£Όμ
bappName
string
μ¬μ©μμκ² νμλ BAppμ μ΄λ¦
to
string
λ°λ μ¬λμ μ£Όμ
id
string
NFT id
contract
string
NFT 컨νΈλνΈ μ£Όμ
bappName
string
μ¬μ©μμκ² νμλ BAppμ μ΄λ¦
to
string
컨νΈλνΈμ μ£Όμ
value
string
컨νΈλνΈ μ€ννλ©΄μ κ°μ΄ λ³΄λΌ KAIA(=KLAY) μλ (λ¨μ: kei(=peb))
abi
string
μ€νν ν¨μμ abi
bappName
string
μ¬μ©μμκ² νμλ BAppμ μ΄λ¦
value
string
μλͺ ν λ©μμ§ μλ¬Έ
from
string
μ¬μ©μμ Klip κ³μ μ£Όμκ° from μ£Όμμ μΌμΉνλ κ²½μ°λ§ μ§ν (optional)
successLink
string
μ¬μ©μ λμκ³Όμ μλ£ ν λμμ¬ BAppμ λν Deep Link (optional)
requestKey
String
μμ² λ²νΈ
onUnsupportedEnvironment
Function
λͺ¨λ°μΌ νκ²½μ΄ μλ κ²½μ° μ€ν ν μ½λ°± ν¨μ (optional)
requestKey
String
μμ² λ²νΈ
contract
String
μ‘°νν μΉ΄λμ 컨νΈλνΈ μ£Όμ
eoa
String
μ‘°νν μ¬μ©μ μ£Όμ
cursor
String
μ‘°νν 컀μκ°μ λλ€. λ§μ½, μ‘°νν μΉ΄λμ 보μ λͺ©λ‘μ΄ 100κ° μ΄μμ΄λ©΄, λ€μ 100κ° μ 보λ₯Ό λ°μ μ μμ΅λλ€.(optional)
-
-
Klip REST API μλ¬μ½λμ λμΌ
import { prepare, request, getResult, getCardList } from 'klip-sdk'<script src="./lib/klipSDK-2.3.2.min.js"></script>klipSDK.prepare(...)
klipSDK.request(...)
klipSDK.getResult(...)
klipSDK.getCardList(...)const bappName = 'my app'
const successLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const failLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const res = await prepare.auth({ bappName, successLink, failLink })
if (res.err) {
// μλ¬ μ²λ¦¬
} else if (res.request_key) {
// request_key 보κ΄
}const bappName = 'my app'
const from = '0xB21F0285d27beb2373EC...'
const to = '0xD8b1dC332...'
const amount = '13.2'
const successLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const failLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const res = await prepare.sendKLAY({ bappName, from, to, amount, successLink, failLink })
if (res.err) {
// μλ¬ μ²λ¦¬
} else if (res.request_key) {
// request_key 보κ΄
}const bappName = 'my app'
const from = '0xB21F0285d27beb2373EC...'
const to = '0xD8b1dC332...'
const amount = '10.123'
const contract = '0x813FB7677BbBAA...'
const successLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const failLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const res = await prepare.sendToken({ bappName, from, to, amount, contract, successLink, failLink })
if (res.err) {
// μλ¬ μ²λ¦¬
} else if (res.request_key) {
// request_key 보κ΄
}const res = await prepare.sendCard({ bappName, from, to, id, contract, successLink, failLink })
if (res.err) {
setErrorMsg(res.err)
} else {
setRequestKey(res.request_key)
}const bappName = 'my app'
const from = '0xB21F0285d27beb2373EC...'
const to = '0xD8b1dC332...'
const value = '800000000'
const abi = "{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"buyCard\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}"
const params = "[\"2829\"]"
const successLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const failLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const res = await prepare.executeContract({ bappName, from, to, value, abi, params, successLink, failLink })
if (res.err) {
// μλ¬ μ²λ¦¬
} else if (res.request_key) {
// request_key 보κ΄
}const bappName = 'my app'
const value = 'original message ...'
const from = '0xB21F0285d27beb2373EC...'
const successLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const failLink = 'myApp://...' // Android νλ«νΌμ κ²½μ°, 'intent://...' λ‘ μμ±
const res = await prepare.signMessage({ bappName, value, from, successLink, failLink })
if (res.err) {
// μλ¬ μ²λ¦¬
} else if (res.request_key) {
// request_key 보κ΄
}request(
'b37f873d-32ce-4d5d-b72e-08d528e7fb8e',
() => alert('λͺ¨λ°μΌ νκ²½μμ μ€νν΄μ£ΌμΈμ')
);getResult('b37f873d-32ce-4d5d-b72e-08d528e7fb8e')const contract = '0xB21F0285d27beb2373EC...'
const eoa = '0xD8b1dC332...'
const cursor = ''
getCardList({ contract, eoa, cursor })μ΄ νμ΄μ§μμλ BAppμμ Klipμ νμ©νκΈ° μν App2App REST APIλ₯Ό μ€λͺ ν©λλ€.
App2App APIλ₯Ό μ¬μ©νλ λ¨κ³λ Prepare, Request, Result 3λ¨κ³λ‘ ꡬλΆλ©λλ€.
Klip APIλ₯Ό μ¬μ©ν¨μ μμ΄ μ¬μ©μλ (μ£Ό)μλ©λΈλ‘체μΈμ»΄νΌλλ₯Ό μ¬μΉν΄μλ μλ©λλ€.
Klip API μ¬μ©μ λ°λΌ λ°μνλ λͺ¨λ μ± μμ μ μ μΌλ‘ μ¬μ©μμκ² μμΌλ©°, (μ£Ό)μλ©λΈλ‘체μΈμ»΄νΌλλ μ¬μ©μ λλ μ 3μμ λν΄ μ΄λ ν μ± μλ μ§μ§ μμ΅λλ€.
Klip API μ¬μ©μκ° κ³Όλν λ€νΈμν¬ νΈλν½μ λ°μμν€λ μλνλ λ± λΆλ² νΉμ λΉμ μμ μΈ λ°©μμΌλ‘ APIλ₯Ό μ¬μ©νλ €κ³ μλνλ κ²½μ°, μ¬μ κ³ μ§μμ΄ API μ¬μ©μ΄ μ°¨λ¨λ μ μμ΅λλ€.
BAppμμ μ΄λ€ μμ μ μ€ννκ³ μΆμμ§ μ μνλ λ¨κ³μ λλ€. "μΈμ¦"μ μ μΈν λλ¨Έμ§λ 체μΈμ νΈλμμ μ μ μ‘νλ μμ μ λλ€. νΈλμμ μ μ‘μ μν΄ Prepare λ¨κ³μμλ νΈλμμ κ°μ²΄λ₯Ό μμ±ν©λλ€. μ€ν κ°λ₯ν μμ μ λ€μκ³Ό κ°μ΅λλ€.
μΈμ¦
ν ν° μ μ‘
μΉ΄λ μ μ‘
μ€λ§νΈ 컨νΈλνΈ μ€ν
BApp νμμ Klip μ§κ°μ μ κ·ΌνκΈ° μν μΈμ¦ μμ μ λλ€. BAppμμ Klip μ¬μ©μμ λ₯Ό μ»μ΄μΌν λ μ¬μ©ν©λλ€. μ΄ κΈ°λ₯μ μν Klip λ‘κ·ΈμΈ λ²νΌμ μ 곡νλ κ²½μ°, λ²νΌ μ€νμΌκ³Ό λ²νΌλͺ μ μλ κ°μ΄λλ₯Ό μ€μν΄μΌ ν©λλ€.
Klip λ‘κ·ΈμΈ λ²νΌ κ°μ΄λ
Klip App2App λ²νΌ μ μ κ°μ΄λ (, )
Klip App2App λ²νΌ ν νλ¦Ώ
μ΄ κΈ°λ₯μ μ¬μ©νλ κ²½μ°, Klip κ³μ μ μ°κ²° ν΄μ§νλ κΈ°λ₯λ λ°λμ μ 곡ν΄μΌ νλ©° ν΄μ§ μ μμ§ν μ¬μ©μ EOA μ 보λ₯Ό μ¦μ μμ ν΄μΌ ν©λλ€.
μμ κ°μ μ‘°κ±΄μ΄ μ§μΌμ§μ§ μμ κ²½μ°, μ¬μ κ³ μ§μμ΄ API μ¬μ©μ΄ μ°¨λ¨λ μ μμ΅λλ€.
BApp νμμ Klip μ§κ°μμ λ€λ₯Έ κ³μ μ£Όμ(EOA)λ‘ ν ν°(Fungible Token)μ μ μ‘νλ μμ
μ
λλ€. ν ν° μ μ‘μ μν νΈλμμ
κ°μ²΄λ₯Ό μμ±ν©λλ€. 컨νΈλνΈ μ£Όμμ 0x0000000000000000000000000000000000000000 κ°μ μ
λ ₯νλ©΄ λ€μ΄ν°λΈ μ½μΈ (KAIA, ETH, MATIC λ±) μ μ‘μ΄ κ°λ₯ν©λλ€.
BApp νμμ Klip μ§κ°μμ λ€λ₯Έ κ³μ μ£Όμ(EOA)λ‘ μΉ΄λ(Non-Fungible Token)μ μ μ‘νλ μμ μ λλ€. μΉ΄λ μ μ‘μ μν νΈλμμ κ°μ²΄λ₯Ό μμ±ν©λλ€.
Klip κ³μ μΌλ‘ μ€λ§νΈ 컨νΈλνΈλ₯Ό μ€ννλ μμ μ λλ€. 컨νΈλνΈ μ€νμ μν νΈλμμ κ°μ²΄λ₯Ό μμ±ν©λλ€.
Klip κ³μ μΌλ‘ λ©μμ§λ₯Ό μλͺ νμ¬ λ°νν©λλ€.
μ λ¨κ³μμ μ μν μμ μ μ€μ λ‘ μ€ννλλ‘ μμ²ν©λλ€.
"μΈμ¦"μ BApp νμμ Klip μ§κ° μ£Όμ(EOA)λ₯Ό BAppμΌλ‘ λ°μμ€λ μμ μ΄λ©° κ·Έ μΈμ λλ¨Έμ§ μμ μ μ νΈλμμ μ μλͺ (sign)μ λ°λ μμ μ λλ€. μ΄λ€ 4κ°μ§ μμ μ μ¬μ€ 체μΈμ νΈλμμ μ μ‘μ μμ²νλ μμ μ΄λ©° ν ν° μ μ‘, KAIA μ μ‘, μΉ΄λ μ μ‘, μ€λ§νΈ 컨νΈλνΈ μ€ν νΈλμμ μ 체μΈμ μ μ‘ν©λλ€. μ΄ λ¨κ³μμλ μ΄λ€ νΈλμμ μ κ³μ ν€λ‘ μλͺ ν λ€μ 체μΈμ μ μ‘ν©λλ€.
μλ₯Ό λ€μ΄, BApp νμ βAβκ° λ€λ₯Έ BApp νμ βBβμκ² ν ν° λλ μμ΄ν μ μ μ‘νλ λ²νΌμ ν΄λ¦νλ©΄ μ¬λ¬λΆμ BAppμ App2App APIλ₯Ό μ¬μ©ν΄ βAβμ Klip μ§κ° μ£Όμλ₯Ό μΈμ¦(μ΄λ―Έ ν보νκ³ μλ€λ©΄ μλ΅ κ°λ₯)νκ³ βAβμ Klip μ§κ°μ μ κ·Όν©λλ€. κ·Έλ¦¬κ³ μ μ‘νλ €λ ν ν° λλ μΉ΄λλ₯Ό βBβμ κ³μ μ£Όμμ μ μ‘νλ νΈλμμ μ 보λ λλ€.
λ§μ§λ§μΌλ‘ Result λ¨κ³λ Request λ¨κ³μμ μμ²ν μμ μ μ€ννμ λ κ²°κ³Ό λλ μλ΅κ°μ μ»λ λ¨κ³μ λλ€.
APIλ ννμ λ°λΌμ λ κ°μ§λ‘ ꡬλΆν μ μμ΅λλ€. λ¨Όμ Prepareμ Result μ€ν μ Klip Backend μλ²λ‘ μμ²μ λ 리λ REST API ννμ΄κ³ , Request μ€ν μ Klipμ λμμ μ²λ¦¬νκΈ° μν Deep Link ννμ λλ€. μμ λ κ°μ§μ λ³κ°λ‘ νμ μ μ¬μ©μμ μΉ΄λ μμ μ 보λ₯Ό μ»κΈ°μν REST API ννμ μμ²μ΄ μμ΅λλ€.
App2App μ²λ¦¬λ₯Ό μν λλ΅μ μΈ νλ¦μ μλ κ·Έλ¦Όκ³Ό κ°μ΅λλ€.
API μμ²κ³Ό λ³κ°λ‘ μΉ΄λ μ 보 μ‘°νλ μΌλ°μ μΈ REST API νΈμΆ νλ¦κ³Ό λμΌν©λλ€. Klip κ±°μΉμ§ μκ³ Backendμ μμ²νμ¬ μ 보λ₯Ό λ°μμ΅λλ€. νλ¦μ μλμ κ°μ΅λλ€.
Deep Linkλ μλμ κ°μ ννμ λ§ν¬μ΄κ³ , BApp μ μ κ° ν΄λ¦νμ λ ν΄λ¦½ μ±μ μ€ννκ±°λ μ€μΉν μ μλλ‘ μ λλ©λλ€. request_key νλμλ Prepare κ³Όμ μμ μλ΅μΌλ‘ μ λ¬λ°μ κ°μ μ¬μ©ν©λλ€.
App2App API μΈλΆ μ€νμ μλμ κ°μ΅λλ€.
POST https://a2a-api.klipwallet.com/v2/a2a/prepare
App2App API μμ² μ²λ¦¬λ₯Ό μ€λΉνκ³ request keyλ₯Ό λ°κΈν©λλ€.
bapp object μμnameμ μΈμ¦ λλ μλͺ
μ Klip μ¬μ©μ νλ©΄μ νμλ BAppμ μ΄λ¦μ
λλ€. callbackμ success νλλ Klipμμ μ¬μ©μ νμΈμ΄ μ±κ³΅μ μΌλ‘ μ²λ¦¬λμ λ BAppμΌλ‘ λμκ°κΈ° μν Deep Linkμ
λλ€. failμ λ°λλ‘ μ€ν¨ν κ²½μ° BAppμΌλ‘ λμκ°κΈ° μν Deep Linkμ
λλ€. Android νλ«νΌμ κ²½μ°, Intent Scheme νμ(intent://..)μ Deep Linkλ‘ μμ±μ΄ νμν©λλ€. callback κ°μ²΄λ optionalμ
λλ€. kas_authorization_key λ optionalμ΄λ©°, BAppμμ νΈλμμ
μμλ£λ₯Ό λλ©νκ³ μ ν κ²½μ° μ¬μ©νλ KAS (Klaytn API Service) μΈμ¦ μ 보μ
λλ€. KAS λλ© μλΉμ€ ꡬλ
λ° authorization key λ°κΈ λ°©λ²μ λ₯Ό μ°Έκ³ νμκΈ° λ°λΌλ©°, λ¬Έμμ¬νμ λ₯Ό μ΄μ©νμ¬ μ£ΌμκΈ° λ°λλλ€.
transaction object μμsend_tokencontractλ ν ν°μ μ€λ§νΈ 컨νΈλνΈ μ£Όμμ
λλ€ (λ€μ΄ν°λΈ μ½μΈμ κ²½μ° 0x0000000000000000000000000000000000000000 μ
λ ₯). toλ ν ν°μ μ μ‘λ°λ μ¬λμ κ³μ μ£Όμμ
λλ€. amountλ₯Ό λ°μ ν ν° μμ
λλ€. μ°Έκ³ λ‘, amountλ 컨νΈλνΈ λ΄ decimalμ λ°μνμ¬ μλμΌλ‘ νμ°λλ μμΉμ
λλ€. μλ₯Ό λ€λ©΄, 18 decimalμ FT 컨νΈλνΈμμ amount 1μ 10^18 κ°μ μ΅μ λ¨μ ν ν°μ μλ―Ένκ² λ©λλ€. fromμ Klip μ¬μ©μμ μ£Όμμ
λλ€. fromμ optional νλμ΄κ³ Klip μ¬μ©μμ μ€μ μ£Όμμ λΉκ΅νμ¬ μλνμ§ μμ μμ²μ κ²μ¬νλ μ©λλ‘ μ¬μ©λ©λλ€.
send_cardcontractλ NFTμ μ€λ§νΈ 컨νΈλνΈ μ£Όμμ
λλ€. toλ μΉ΄λλ₯Ό μ μ‘λ°λ μ¬λμ μ£Όμμ
λλ€. card_idλ μ μ‘ν μΉ΄λμ κ³ μ λ²νΈμ
λλ€. fromμ Klip μ¬μ©μμ μ£Όμμ
λλ€. fromμ optional νλμ΄κ³ Klip μ¬μ©μμ μ€μ μ£Όμμ λΉκ΅νμ¬ μλνμ§ μμ μμ²μ κ²μ¬νλ μ©λλ‘ μ¬μ©λ©λλ€.
execute_contracttoλ μ€νν μ€λ§νΈ 컨νΈλνΈ μ£Όμμ
λλ€. valueλ ν΄λΉ 컨νΈλνΈμ μ μ‘ν μ½μΈμ μλμ
λλ€. valueμ λ¨μλ μ€μ ν΄λΉ 체μΈμ νΈλμμ
μμ± μΈμμ λμΌν©λλ€. Kaia κΈ°μ€μΌλ‘ λ¨μλ keiμ΄λ©°, 1 KAIAλ 1000000000000000000 (10^18) keiμ
λλ€. abiλ μ€νν 컨νΈλνΈ ν¨μ μ 보μ
λλ€. paramsλ ν΄λΉ ν¨μμ λκ²¨μ€ μΈμκ°μ
λλ€. μ΅μ λ²μ λΆν°λ tuple νμ
λ μ§μν©λλ€. abi μ param λμ μ encoded_function_callμ μ¬μ©ν μ μμ΅λλ€. encoded_function_call μ txμ dataμ λ€μ΄κ° μ 보λ₯Ό μ
λ ₯ν΄μ£Όλ©΄ ν΄λΉ κ°μ μ¬μ©νμ¬ txλ₯Ό μ€νν©λλ€. abi, param νΉμ encoded_function_call μ€ νλλ§μ μ¬μ©νμ¬ txλ₯Ό μ€ννκΈ° λλ¬Έμ μ¬μ©νμ§ μλ κ°μ λΉμμ Έ μμ΄μΌ ν©λλ€. fromμ Klip μ¬μ©μμ μ£Όμμ
λλ€. from
message object μμsign_messagefromμ Klip μ¬μ©μμ μ£Όμμ
λλ€. Klip μ¬μ©μμ μ€μ μ£Όμμ λΉκ΅νμ¬ μλνμ§ μμ μμ²μ κ²μ¬νλ μ©λλ‘ μ¬μ©λ©λλ€. μ ν νλͺ©μ΄λ―λ‘ μλ΅ν μ μμ΅λλ€. is_hex_encodedλ λ©μμ§ μλ¬Έμ λ°μ΄ν° νμ
μ
λλ€. true μΌ κ²½μ° μλͺ
κ°μ λ°μ΄ν°μ hex encoding λ byte λ°°μ΄λ‘ νλ¨νμ¬ μλͺ
ν©λλ€. μλ΅νκ±°λ false μΌ κ²½μ°λ λ¬Έμμ΄λ‘ νλ¨ν©λλ€. valueλ μλͺ
ν λ©μμ§μ μλ¬Έμ
λλ€. is_hex_encoded κ° true μΌ κ²½μ° 0x λ‘ μμνλ hex encodingλ byte λ°°μ΄μ΄μ¬μΌ ν©λλ€.
sign_message_eip191sign_message_eip191μ κΈ°λ³Έμ μΌλ‘ sign_messageμ λμΌνκ² Klip μ¬μ©μμ κ³μ ν€λ‘ λ©μμ§λ₯Ό μλͺ
νλ μν μ μννλ, sign_messageλ Klaytnμ νμ€μ λ°λΌ "\x19Klaytn Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ΄κ³ , sign_message_eip191μ Kaiaμ νμ€μ λ°λΌ "\x19Ethereum Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμΈλ€λ μ°¨μ΄μ μ΄ μμ΅λλ€. Kaiaμμ λ³κ²½λ λ©μμ§ μλͺ
νμ€μ λ³νμ λν΄μλ λ₯Ό μ°Έκ³ νμκΈ° λ°λλλ€.
fromμ Klip μ¬μ©μμ μ£Όμμ
λλ€. Klip μ¬μ©μμ μ€μ μ£Όμμ λΉκ΅νμ¬ μλνμ§ μμ μμ²μ κ²μ¬νλ μ©λλ‘ μ¬μ©λ©λλ€. μ ν νλͺ©μ΄λ―λ‘ μλ΅ν μ μμ΅λλ€. is_hex_encodedλ λ©μμ§ μλ¬Έμ λ°μ΄ν° νμ
μ
λλ€. true μΌ κ²½μ° μλͺ
κ°μ λ°μ΄ν°μ hex encoding λ byte λ°°μ΄λ‘ νλ¨νμ¬ μλͺ
ν©λλ€. μλ΅νκ±°λ false μΌ κ²½μ°λ λ¬Έμμ΄λ‘ νλ¨ν©λλ€. valueλ μλͺ
ν λ©μμ§μ μλ¬Έμ
λλ€. is_hex_encoded κ° true μΌ κ²½μ° 0x λ‘ μμνλ hex encodingλ byte λ°°μ΄μ΄μ¬μΌ ν©λλ€.
sign_typedData_v4μ¬κΈ°μμ vaule κ°μ EIP-712μμ μ μλ json ννμ ꡬ쑰νλ λ©μμ§λ‘μ¨, μ νν μ€νμ λ₯Ό μ°Έκ³ νμκΈ° λ°λλλ€.
Request Example
Response Details
μμΈν λ΄μ©μ μ νμΈνμμμ€.
DEEP LINK https://klipwallet.com?target=/a2a?request_key=
Klipμ μΈμ¦ λλ μλͺ μ μμ²νκΈ° μν μμ λ μλ Request Example νλͺ©μ μ°Έμ‘°νμμμ€.
Request Example
μλ μμ μμ request_key νλλ Prepare μ€ν
μμ μ»μ κ°μΌλ‘ μ€μ ν©λλ€.
μλμ κ°μ URL νμμΌλ‘ QR codeλ₯Ό μμ±ν©λλ€. μ¬μ©μλ ν΄λ¦½ μ± λλ λ€μ΄ν°λΈ μΉ΄λ©λΌμ±λ₯Ό ν΅ν΄ QR codeλ₯Ό μΈμνμ¬ App2App μμ²μ μ²λ¦¬ν μ μμ΅λλ€.
GET https://a2a-api.klipwallet.com/v2/a2a/result?request_key=
App2App API μμ²μ λν κ²°κ³Όλ₯Ό νμΈν©λλ€.
Request Example
Response Details
authsend_klay, send_token, send_card, execute_contractsign_message, sign_message_eip191sign_typedData_v4μμΈν λ΄μ©μ μ νμΈνμμμ€.
GET https://a2a-api.klipwallet.com/v2/a2a/cards?cursor=
μ¬μ©μ EOAμ NFT 컨νΈλνΈ μ£Όμλ₯Ό μ λ ₯νκ³ , μ΄ μ¬μ©μκ° μμ ν μΉ΄λ μ€μμ μ΄ NFT 컨νΈλνΈμμ λ°νν μΉ΄λ λͺ©λ‘μ λ°νν©λλ€.
Request Example
Response Details
Response Details for cards[i]
μμΈν λ΄μ©μ μ νμΈνμμμ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
λ©μμ§ μλͺ
message
object
μλͺ
ν λ°μ΄ν°μ
λλ€. fromκ³Ό value κ°μ ν¬ν¨νλ©° fromμ μλ΅ κ°λ₯ν©λλ€. sign_message νμ
μΈ κ²½μ° μ΄ νλλ₯Ό νμμ μΌλ‘ κΈ°μ
ν΄μΌ ν©λλ€. κ·Έ μΈμ νμ
μμλ μ€μ νμ§ μμ΅λλ€. μλ μμλ₯Ό μ°Έκ³ νμμμ€.
abiparamsError
object
νΈλμμ
μ΄ μ€ν¨(revert)ν κ°λ₯μ±μ΄ μκ±°λ execute_contract μμ²μμ params κ°μ΄ μ μ νμ§ μμ κ²½μ° μλ¬λ₯Ό λ°νν©λλ€.
1. revert
from μ£Όμμ ν¨κ» μμ² μ νΈλμμ
μ κ²μ¦νμ¬ revert λ©μμ§λ₯Ό λ°νν©λλ€. λλμκ° κ°λ₯μ±μ΄ μκΈ° λλ¬Έμ νΈλμμ
μ μμ±νμ§ μμ΅λλ€. ν΄λΉ μ€λΈμ νΈλ codeμ messageλ₯Ό λ°ννλ©° revert μν©μΌ λ κ°μ λ€μκ³Ό κ°μ΅λλ€. messageλ νΈλμμ
μ΄ λλμκ°λ μμΈμ stringμΌλ‘ ν¬ν¨ν©λλ€.
"error":{"code":6414,"message":(revert μμΈ)}
2. params error
paramsλ abiμ νμ
μ λ§λ λ°μ΄ν°λ₯Ό μ
λ ₯ν΄μΌ ν©λλ€. address typeμ μ«μ(222)λ₯Ό λ£μ κ²½μ° λ€μμ²λΌ μλ¬λ₯Ό λ°ν ν©λλ€. νλλͺ
μ ν¨κ» λ°ννκΈ° λλ¬Έμ μ΄λ€ paramμ΄ μλͺ» μ
λ ₯λμλμ§ μ°Ύλλ° λμμ μ€λλ€. "error":{"code":6408,"message":"dummy_arg_name: [(json.Number)222] is not (address)"}
hash
string
μλ¬Έμ λν΄ κ° μ²΄μΈμμ 미리 μ ν΄μ§ λ°μ΄ν°λ₯Ό λΆμ¬ ν΄μ±ν κ°μ λλ€. μ€μ λ‘ μλͺ μ μ¬μ©λλ λ°μ΄ν°μ λλ€.
hash
string
μλ¬Έμ λν΄ EIP191 νμ€μ μ μλ prefixλ₯Ό λΆμ¬ ν΄μ±ν κ°μ λλ€. μ€μ λ‘ μλͺ μ μ¬μ©λλ λ°μ΄ν°μ λλ€.
card_id
number
μΉ΄λ IDμ λλ€.
card_uri
string
μΉ΄λ λ©νλ°μ΄ν°κ° λ΄κΈ΄ JSON νμΌ URLμ λλ€.
transaction_hash
string
μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ νΈλμμ ν΄μμ λλ€.
Content-Type*
string
application/json
chain
string
App2App API μμ²μ μνν μ²΄μΈ μ 보μ
λλ€. klaytn, ethereum, polygon λ± μΈ μ’
λ₯μ 체μΈμ μ§μνλ©° κΈ°λ³Έκ°μ klaytnμ
λλ€. μλ μμλ₯Ό μ°Έκ³ νμμμ€. μ€μ λ‘λ Kaia 체μΈκ³Ό μνΈμμ©νμ§λ§ νΈνμ± μ μ§λ₯Ό μν΄ klaytn λͺ
μΉμ΄ μ¬μ©λ©λλ€. λ€λ₯Έ 체μΈμ μ§κ° μ£Όμλ₯Ό μ»κΈ° μν΄ type=authλ‘ μμ²νλ κ²½μ°μλ μ μΈ κ°μ μ¬μ©νλ©΄ λͺ¨λ μ§κ° μ£Όμκ° μΌκ΄ λ°νλ©λλ€.
bapp*
object
App2App API μμ²μ μνν BApp μ 보μ
λλ€. μ΄λ¦κ³Ό callback URLλ‘ Deep Linkλ₯Ό ν¨κ» μ λ¬ν μ μμ΅λλ€. callback νλλ μ΅μ
λμ
λλ€. μλ μμλ₯Ό μ°Έκ³ νμμμ€.
type*
string
App2App API μμ² typeμ
λλ€. μΈμ¦μ auth, μ½μΈ λ° ν ν° μ μ‘μ send_token, μΉ΄λ μ μ‘μ send_card, λ©μμ§ μλͺ
μ sign_message, sign_message_eip191, sign_typedData_v4, λ§μ§λ§μΌλ‘ 컨νΈλνΈ μ€νμ execute_contractμ
λλ€.
transaction
object
μλͺ
ν λ°μ΄ν°μ
λλ€. to, amount, contract λ±μ μ λ³΄κ° λ€μ΄κ°λ©° μ μ‘ μμ² typeλ³λ‘ νμν νλλ₯Ό μΈν
ν΄μΌν©λλ€. auth, sign_messageλ₯Ό μ μΈν μμ² νμ
μ μ΄ νλλ₯Ό νμμ μΌλ‘ κΈ°μ
ν΄μΌν©λλ€. μλ μμλ₯Ό μ°Έκ³ νμμμ€.
request_key
string
μμ²μ μ λν¬νκ² κ΅¬λΆν ν€κ°μ λλ€. Request, Result API νΈμΆ μ μ¬μ©ν©λλ€.
status
string
API μμ²μ νμ¬ μνμ
λλ€. κΈ°λ³Έμ μΌλ‘ prepared μνκ° λ©λλ€.
expiration_time
number
request key λ§λ£ μκ°μ unix timestampλ‘ ννν κ°μ λλ€.
estimated_gas
number
νΈλμμ μ λ°μμν€λ μμ²μ΄λ©΄μ from κ°μ΄ μ‘΄μ¬ν κ²½μ° μ€μ νΈλμμ μμ±μ μ¬μ©λ gasLimit κ°μ λλ€.
request_key*
string
Prepare λ¨κ³μμ μ»μ request keyλ₯Ό μ λ¬νμμμ€. request_keyλ₯Ό ν΅ν΄μ μμ²μ ꡬλΆν μ μμ΅λλ€.
request_key*
string
Prepare λ¨κ³μμ μ»μ request keyλ₯Ό μ λ¬νμμμ€. request_keyλ₯Ό ν΅ν΄μ μμ²μ ꡬλΆν μ μμ΅λλ€.
request_key
string
μμ² ν€κ°μ λλ€.
expiration_time
number
request key λ§λ£ μκ°μ unix timestampλ‘ ννν κ°μ λλ€.
status
string
API μμ²μ νμ¬ μνμ
λλ€. μ²λ¦¬κ° μλ£λμλ€λ©΄ completed μνκ° λ¦¬ν΄λ©λλ€.
result
object
μ§κ° μ°λμ κ²°κ³Όμ
λλ€. μ§κ° μ£Όμκ° μ²΄μΈλ³λ‘ λ°νλ©λλ€. ν΄λ¦½μ EVM νΈν 체μΈλ€ κ°μ λμΌν μ£Όμλ₯Ό κ°μ§λ©°, evm_addressλ‘ λ°νλ©λλ€. μ΄ κ°μ klaytn_addressμ λμΌν©λλ€. μμ§ μ¬μ©μκ° μ±μ μ
λ°μ΄νΈνμ§ μμ μ κ· μ²΄μΈμ μ§κ°μ μμ±νμ§ μμ κ²½μ°μλ μΌλΆ λλ½λ μ μμ΅λλ€.
request_key
string
μμ² ν€κ°μ λλ€.
expiration_time
number
request key λ§λ£ μκ°μ unix timestampλ‘ ννν κ°μ λλ€.
status
string
API μμ²μ νμ¬ μνμ
λλ€. μ²λ¦¬κ° μλ£λμλ€λ©΄ completed μνκ° λ¦¬ν΄λ©λλ€.
result
object
μλͺ μμ²μ κ²°κ³Όμ λλ€. transaction hashμ ν΄λΉ transactionμ μ²λ¦¬ μνκ° λ¦¬ν΄λ©λλ€.
request_key
string
μμ² ν€ κ°μ λλ€.
expiration_time
number
request key λ§λ£ μκ°μ unix timestampλ‘ ννν κ°μ λλ€.
status
string
API μμ² μνμ
λλ€. μ²λ¦¬κ° μλ£λμλ€λ©΄ completedλ₯Ό λ°νν©λλ€.
signature
string
μλͺ
μμ²μ κ²°κ³Όμ
λλ€. μλ¬Έμ λν μλͺ
μ΄ μ λ¬ λ©λλ€. μλͺ
μ v κ°μ 27 νΉμ 28μ
λλ€.
μμ² typeμ΄ sign_messageμΈ κ²½μ°μλ "\x19Klaytn Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ΄κ³ , sign_message_eip191μ "\x19Ethereum Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ¬ μλͺ
ν©λλ€.
request_key
string
μμ² ν€ κ°μ λλ€.
expiration_time
number
request key λ§λ£ μκ°μ unix timestampλ‘ ννν κ°μ λλ€.
status
string
API μμ² μνμ
λλ€. μ²λ¦¬κ° μλ£λμλ€λ©΄ completedλ₯Ό λ°νν©λλ€.
signature
string
μλͺ
μμ²μ κ²°κ³Όμ
λλ€. μλ¬Έμ "\x19Ethereum Signed Message:\n" + len(message)μ μ λμ¬λ₯Ό λΆμ¬ μλͺ
μ΄ μ λ¬λ©λλ€. μλͺ
μ v κ°μ 27 νΉμ 28μ
λλ€.
chain
string
μμ μ 보λ₯Ό μ‘°νν 체μΈλͺ
μ
λλ€. (klaytn, ethereum, polygon)
sca*
string
μμ μ 보λ₯Ό μ‘°νν smart contract addressμ λλ€.
eoa*
string
μ΄λ€ μ¬μ©μ EOAμ μΉ΄λ μμ μ 보λ₯Ό μ»μ΄μ¬μ§ νΉμ ν©λλ€. μΌλ°μ μΌλ‘ App2App auth μμ²μ ν΅ν΄ μ»μ EOAλ₯Ό μΈμλ‘ μ¬μ©ν©λλ€.
cursor
string
μΉ΄λ 보μ λμ΄ 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λ°λ 컀μκ°μ λλ€.
name
string
μ΄ Contract μ΄λ¦μ λλ€.
symbol_img
string
μ΄ Contract symbol image URLμ λλ€.
cards
array
κ° μΉ΄λ μ 보λ₯Ό λ΄μ object λ°°μ΄μ
λλ€.
next_cursor
string
μΉ΄λ κ²°κ³Όκ°μ΄ 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λΆλ¬μ¬ 컀μκ°μ λλ€.
created_at
number
μΉ΄λκ° λ°νλ μκ°μ λλ€.
updated_at
number
μΉ΄λκ° μ λ°μ΄νΈλ μκ°μ λλ€.
owner
string
μ΄ κ³μ EOA μ£Όμμ λλ€.
sender
string
μ΄ κ³μ μΌλ‘ μΉ΄λλ₯Ό λ³΄λΈ μ¬λμ EOA μ£Όμμ λλ€.



https://klipwallet.com?target=/a2a?request_key=9892...4aeb{
"request_key": "random key",
"status": "prepared",
"expiration_time": 12345 //unix timestamp
}{
"bapp": {
"name": "My BApp",
"callback": { // all optional
"success": "myApp://...", // Android νλ«νΌμ κ²½μ°, "intent://..." λ‘ μμ±
"fail": "myApp://..." // Android νλ«νΌμ κ²½μ°, "intent://..." λ‘ μμ±
},
"kas_authorization_key": "Basic abcdefghijklmnopqrstuvwxyz0123456789="
}
}{
"transaction": {
"contract": "SCA",
"from": "0x8756...4321", // optional
"to": "0x1234...5678",
"amount": "100",
}
}{
"transaction": {
"contract": "0xA987...4321",
"from": "0x8756...4321", // optional
"to": "0x1234...5678",
"card_id": "100",
}
}{
"transaction": {
"from": "0x8756...4321", // optional
"to": "0xA987...4321", // contract address
"value": "1000000000000000000", // λ¨μλ μ€μ νΈλμμ
μ value λ¨μμ λμΌ
"abi": "...",
"params": "...",
"encoded_function_call": "0x123...23fe23"
}
}{
"message": {
"from": "0x8756...4321", // optional
"value": "message original", // μλͺ
ν μλ¬Έ
"is_hex_encoded": true or false // optional. defaultλ false.
}
}{
"message": {
"from": "0x8756...4321", // optional
"value": "message original", // μλͺ
ν μλ¬Έ
"is_hex_encoded": true or false // optional. defaultλ false.
}
}{
"message": {
"value": "message original", // μλͺ
ν μλ¬Έ
}
}curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \
-d '{"bapp": { "name" : "My BApp" }, "chain": "klaytn", "type": "execute_contract" }' \
-H "Content-Type: application/json"https://klipwallet.com/?target=/a2a?request_key=9892...4aebhttps://klipwallet.com/?target=/a2a?request_key=9892...4aeb{
"request_key": "random key",
"expiration_time": unix timestamp,
"status": "requested" or "completed",
"result": {
typeμ λ§λ κ²°κ³Ό object
}
}curl -X GET "https://a2a-api.klipwallet.com/v2/a2a/result?request_key=9892...4aeb" \
-H "Content-Type: application/json"{
"request_key": "random key",
"expiration_time": unix timestamp,
"status": "completed",
"result": {
"klaytn_address": string, //νΈνμ±μ μν΄ νλλͺ
μ klaytn μ μ§
"evm_address": string,
"bitcoin_address": string,
"solana_address": string,
"tron_address": string,
"xrpl_address": string
}
}{
"request_key": "random key",
"expiration_time": unix timestamp,
"status": "completed",
"result": {
"tx_hash": string,
"status": "success"
}
}{
"request_key": "random key",
"expiration_time": unix timestamp,
"status": "completed",
"result": {
"signature": string // μλ¬Έμ λν μ¬μ©μ μλͺ
"hash": string
}
}{
"request_key": "random key",
"expiration_time": unix timestamp,
"status": "completed",
"result": {
"signature": string // μλ¬Έμ λν μ¬μ©μ μλͺ
"hash": string
}
}{
"name": "Klip",
"symbol_img": "image url",
"cards": [
{
"created_at": 1580176787,
"created_at_format": "format",
"updated_at": 1580176787,
"updated_at_format": "format",
"owner": "0x2412b300750f505fb2e68ddf0cd45e9d95f5378d",
"sender": "0x0000000000000000000000000000000000000000",
"sender_kakao_id": "kakao_id"
"card_id": 19,
"card_uri": "metadata uri",
"transaction_hash": "0x293a2e53ecf238109908e65a2b7ff4aad0919ce3ce54af08d6fc4323f28e935d"
},
],
"next_cursor": string
}curl -X GET "https://a2a-api.klipwallet.com/v2/a2a/cards?chain=klaytn&sca=0x1234...&eoa=0x9876...&cursor=mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL" \
-H "Content-Type: application/json"μ΄ νμ΄μ§λ Klip Partnersμ λ‘κ·ΈμΈνκ³ μΉ΄λλ₯Ό λ°ν, μ‘°ν, μ μ‘, μμ νκΈ° μν APIλ₯Ό μκ°ν©λλ€.
κ³μ κ΄λ¦¬ APIμλ λ‘κ·ΈμΈ(Sign In), λΉλ°λ²νΈ λ³κ²½(Change Password), ν λ²νΈ λ³κ²½(Change Pin)μ΄ μμ΅λλ€.
POST https://api.klipwallet.com/v2/partner/auth
κ°μ μ μΉμΈλ°μ ν, κ°μ μ μ λ ₯ν μ΄λ©μΌ μ£Όμμ λΉλ°λ²νΈλ‘ Klip Partnersμ λ‘κ·ΈμΈν©λλ€.
Request Example
Response Details
μμΈν λ΄μ©μ μ νμΈνμμμ€.
PUT https://api.klipwallet.com/v2/partner/?opt=password
κ°μ μ μ λ ₯ν λΉλ°λ²νΈλ₯Ό λ³κ²½ν©λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
PUT https://api.klipwallet.com/v2/partner/pin
κ°μ μ μ λ ₯ν ν λ²νΈλ₯Ό λ³κ²½ν©λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
μΉ΄λ κ΄λ¦¬ APIμλ μΉ΄λ μ΄λ―Έμ§ μ λ‘λ(Upload Image), λͺ¨λ μ¬μ©μμκ² μΉ΄λ λ°ν(Mint Card To User), Klip νμμκ² μΉ΄λ λ°ν(Mint Card To Klip Member), λͺ¨λ μ¬μ©μμκ² μΉ΄λ μ μ‘(Send Card To User), Klip νμμκ² μΉ΄λ μ μ‘(Send Card To Klip Member), μΉ΄λ μ 보 λΆλ¬μ€κΈ°(Get Card Information By Bapp, Get Card Information), μΉ΄λ μμ (Delete Card)κ° μμ΅λλ€.
POST https://api.klipwallet.com/v2/wallet/image
μΉ΄λμ μ¬μ©ν μ΄λ―Έμ§λ₯Ό μ λ‘λν©λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
POST https://api.klipwallet.com/v2/wallet/nftResource
μΉ΄λμ μ¬μ©ν 리μμ€λ₯Ό μ
λ‘λν©λλ€. animation_url νλμ μ€μ ν λμμ νμΌμ κ²½μ° ν¬κΈ°κ° 10MiBλ‘ μ νλ©λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
POST https://api.klipwallet.com/v2/wallet/nftResource/secure
μΉ΄λμ μ¬μ©ν μμ μ μ μ© λ¦¬μμ€λ₯Ό μ
λ‘λν©λλ€. upload νλμ μ€μ ν μ μλ νμΌ μ©λμ μ΅λ 10MiBμ
λλ€. κ°λ‘xμΈλ‘ κ°κ° 23000px μ΄ν μΉ΄λ μ΄λ―Έμ§λ₯Ό μ¬μ©ν΄μΌ Klipμ μ μμ μΌλ‘ λ
ΈμΆλ©λλ€.
Request Example
POST https://api.klipwallet.com/v2/wallet/mint
Klip Partnersμ μ¬μ©μ μ 보λ₯Ό 보λ΄κ³ μΉ΄λλ₯Ό λ°νν©λλ€. μ¬μ©μ EOAλ‘ λ°νλ©λλ€.
Request Example
Request Details for secure
μμΈν λ΄μ©μ μ νμΈνμμμ€.
POST https://api.klipwallet.com/v2/wallet/mint/person
Klip Partnersμ Klip νμ μ 보λ₯Ό 보λ΄κ³ μΉ΄λλ₯Ό λ°νν©λλ€. to_personμ μ
λ ₯ν μ€λͺ
κ³Ό μ νλ²νΈλ₯Ό κ°μ§ Klip νμ EOAλ‘ λ°νλ©λλ€.
Request Example
Request Details for secure
μμΈν λ΄μ©μ μ νμΈνμμμ€.
GET https://api.klipwallet.com/v2/wallet/mint/count
μ΄λ² λ¬μ ννΈλ κ³μ μΌλ‘ λ°νν μ΄ μΉ΄λ κ°μλ₯Ό μ‘°νν μ μμ΅λλ€. μ΄ κ°μ λ§€μ 1μΌμ 0μΌλ‘ μ΄κΈ°νλ©λλ€.
Request Example
Response Details
μμΈν λ΄μ©μ μ νμΈνμμμ€.
POST https://api.klipwallet.com/v2/wallet/nft/:nft_id/:card_id/send
μΉ΄λλ₯Ό λ€λ₯Έ μ¬μ©μμκ² λ³΄λ λλ€. μ μ‘ μ μ¬μ©μ EOAλ₯Ό μ¬μ©ν©λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
POST https://api.klipwallet.com/v2/wallet/nft/:nft_id/:card_id/send/person
μΉ΄λλ₯Ό Klip νμμκ² λ³΄λ
λλ€. to_personμ μ
λ ₯ν μ€λͺ
κ³Ό μ νλ²νΈλ₯Ό κ°μ§ Klip νμ EOAλ‘ λ³΄λ
λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
λ³Έ APIμ κ²½μ°, ν΄λ¦½μ μμ° λ¦¬μ€ν μ μ± λ³κ²½μ λ°λΌ μΌλΆ μλ‘μ΄ μΉ΄λλ μ‘°νκ° λΆκ°λ₯ν μλ μμ΅λλ€. λμ API μ¬μ©μ κΆμ₯ν©λλ€.
GET https://api.klipwallet.com/v2/wallet/bapp?cursor=
λ΄κ° μμ ν μΉ΄λ λͺ©λ‘μ μ»μ΅λλ€. 보μ ν μΉ΄λλ€μ BAppλ³λ‘ λ¬Άμ¬ μΆλ ₯λ©λλ€.
Request Example
Response Details for bapps[i]
Response Details for bapps[i].cards[i]
μμΈν λ΄μ©μ , λ₯Ό νμΈνμμμ€.
GET https://api.klipwallet.com/v2/wallet/nft/:nft_id?cursor=
μμ ν μΉ΄λμ μμΈ μ 보λ₯Ό μ»μ΅λλ€.
Request Example
Response Details
Response Details for cards[i]
μμΈν λ΄μ©μ , λ₯Ό νμΈνμμμ€.
DELETE https://api.klipwallet.com/v2/wallet/nft
λ°νν μΉ΄λλ₯Ό μμ ν©λλ€.
λ°νν μΉ΄λλ§ μμ ν μ μμΌλ©°, λ€λ₯Έ μ¬λμκ² λ³΄λΈ μΉ΄λλ μμ ν μ μμ΅λλ€. μΉ΄λλ₯Ό μμ ν΄λ μΉ΄λ μ΄λ―Έμ§λ μμ λμ§ μμ΅λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
POST https://api.klipwallet.com/v2/escrow/approve
μΉ΄λ μ μ‘ μμ€ν¬λ‘ μ¬μ©μ νμ©ν©λλ€. μΉ΄λ μ μ‘ μμ€ν¬λ‘ κΈ°λ₯μ μ¬μ©νκΈ° μν΄μλ μ΅μ΄μ 1ν, νμμ μΌλ‘ νΈμΆν΄μΌνλ APIμ λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
GET https://api.klipwallet.com/v2/escrow/approve
μΉ΄λ μ μ‘ μμ€ν¬λ‘ μ¬μ© λμ μ¬λΆλ₯Ό μ‘°νν©λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
POST https://api.klipwallet.com/v2/escrow
μΉ΄λ μ μ‘ μμ€ν¬λ‘λ₯Ό μ€ννκ³ , Klip μ¬μ©μκ° μΉ΄λλ₯Ό μ§κΈλ°μ μ μλ λ§ν¬κ° μμ±λ©λλ€.
보μ μ€μΈ μΉ΄λλ§ μμ€ν¬λ‘ μ μ‘μ μ€ν ν μ μμΌλ©°, λ€λ₯Έ μ¬λμκ² λ³΄λΈ μΉ΄λλ μ μ‘ν μ μμ΅λλ€. μμ€ν¬λ‘λ₯Ό μνν μΉ΄λλ μμ€ν¬λ‘ μΉ΄λ μ‘°νλ₯Ό ν΅ν΄ νμΈν μ μμ΅λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
GET https://api.klipwallet.com/v2/escrow
μμ€ν¬λ‘ μΉ΄λ λͺ©λ‘ μ‘°ν.
Request Example
Response Details
Response Details for cards[i]
μμΈν λ΄μ©μ μ νμΈνμμμ€.
DELETE https://api.klipwallet.com/v2/escrow
μΉ΄λ μ μ‘ μμ€ν¬λ‘λ₯Ό μ·¨μν©λλ€.
μμ€ν¬λ‘λ μΉ΄λλ§ μ·¨μν μ μμΌλ©°, μ΄λ―Έ μ§κΈλ μΉ΄λλ μμ ν μ μμ΅λλ€. μ·¨μλ μΉ΄λλ 보μ λͺ©λ‘μΌλ‘ λ°νλ©λλ€.
Request Example
μμΈν λ΄μ©μ μ νμΈνμμμ€.
GET https://api.klipwallet.com/v2/wallet/receipt
νΈλμμ μ²λ¦¬ κ²°κ³Όκ° λΈλ‘μ μ΅μ’ μ±κ³΅μΌλ‘ κΈ°λ‘λλμ§ μ¬λΆλ₯Ό μ‘°νν©λλ€.
Request Example
Response Details
μμΈν λ΄μ©μ μ νμΈνμμμ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
phone
string
κ°μ μ μ νλ²νΈμ λλ€.
service_name
string
κ°μ μκ° μ 곡νλ BApp μλΉμ€ μ΄λ¦μ λλ€.
access_token
string
JWT νμμΌλ‘ API νΈμΆμ νμ©νκΈ° μν΄ λ°κΈλ μΈμ¦ ν ν°μ λλ€.
status
number
κ³μ μνμ½λμ λλ€.
mint_limit
number
κ³μ μ΄ μ΄λ² λ¬μ λ°νν μ μλ μ΅λ μΉ΄λ κ°μμ λλ€.
mint_count
number
κ³μ μ΄ μ΄λ² λ¬μ λ°νν μΉ΄λ κ°μμ λλ€.
description*
string
μΉ΄λμ κ΄ν μ€λͺ μ λλ€.
image*
string
μΉ΄λμ μ¬μ©ν μ΄λ―Έμ§ URL μ£Όμμ λλ€.
animation_url
string
μΉ΄λμ μ¬μ©ν λμμ URL μ£Όμμ
λλ€. μ§μνλ νμΌ νμ₯μλ .mp4μ
λλ€. H.264 μ½λ±μ΄ μλκ±°λ ν΄μλκ° 3840x2160μ λλ κ²½μ° μ¬μλμ§ μμ μ μμ΅λλ€.
background_color
string
μΉ΄λ λ°°κ²½μ μ¬μ©ν RGB μμ μ½λμ λλ€.
sendable
boolean
TRUEμ΄λ©΄ λ°νν μΉ΄λλ₯Ό Klipμμ νμΈμκ² μ μ‘ κ°λ₯ν©λλ€.
send_friend_only
boolean
TRUEμ΄λ©΄ λ°νν μΉ΄λλ₯Ό Klipμμ μΉ΄μΉ΄μ€ν‘ μΉκ΅¬μκ²λ§ μ μ‘ κ°λ₯ν©λλ€. νμ¬ Klip λ΄μμ μΌμμ μΌλ‘ μΉκ΅¬ μ μ‘μ΄ μ 곡λμ§ μκ³ μμΌλ―λ‘ FALSEλ‘ μ€μ ν©λλ€.
group_name
string
μΉ΄λλ₯Ό κ·Έλ£Ήνν λ μ¬μ©νλ μΉ΄λ κ·Έλ£Ή μ΄λ¦μ λλ€.
group_icon
string
μΉ΄λ κ·Έλ£Ή μμ΄μ½μΌλ‘ μ¬μ©ν μ΄λ―Έμ§ URL μ£Όμμ λλ€.
hashtags
array
ν΄μνκ·Έλ€μ΄ λ΄κΈ΄ string λ°°μ΄μ
λλ€. μΉ΄λμ ν΄μνκ·Έλ₯Ό λ¬λ©΄ νΉμ μ£Όμ , λ΄μ©μ μ½κ² μ°Ύμ μ μμ΅λλ€.
layout
string
μΉ΄λλ₯Ό 보μ¬μ£Όλ λ°©μμ
λλ€. μλ₯Ό λ€μ΄, μ μ¬κ°ν μ΄λ―Έμ§λ general, κ°λ‘κ° λ κΈ΄ μ΄λ―Έμ§λ horizontal μΈλ‘κ° κΈ΄ μ΄λ―Έμ§λ verticalλ‘ μ€μ ν μ μμ΅λλ€. κΈ°λ³Έκ°μ generalμ
λλ€.
external_link
string
Klip μΈλΆλ‘ μ°κ²°λλ URL μ£Όμμ λλ€. (μ΅λ κΈΈμ΄:255)
custom_links
array
Klip μΈλΆλ‘ μ°κ²°λλ URL μ£Όμλ€μ΄ λ΄κΈ΄ object λ°°μ΄ μ
λλ€. display_nameμ λ
ΈμΆν μμ±λͺ
, valueμ μμ±κ°μ μμ μ΄λ€ μ§μ ν©λλ€. Klipμ NFT μμΈ νλ©΄μμ μΈλΆλ‘ μ°κ²°λλ λ§ν¬κ° μ 곡λ©λλ€. (λ°°μ΄μ μ΅λ ν¬κΈ°: 10κ°, κ° λ§ν¬μ μ΅λ κΈΈμ΄: 255)
qr_code
string
QR Codeκ° κ·Έλ €μ§ μ΄λ―Έμ§ URLμ λλ€ (μ΅λ κΈΈμ΄:255)
bar_code
string
Bar Codeκ° κ·Έλ €μ§ μ΄λ―Έμ§ URLμ λλ€. (μ΅λ κΈΈμ΄:255)
attributes
array
λ°νν μΉ΄λ μμ±κ°λ€μ΄ λ΄κΈ΄ object λ°°μ΄μ
λλ€.
secure
object
μΉ΄λ μμ μμκ²λ§ 보μ¬μ€ μ 보λ₯Ό λ΄μ objectμ
λλ€. bar_code, qr_code, images, animations, λ° attributes νλλ₯Ό μ νμ μΌλ‘ μ€μ ν μ μμ΅λλ€.
status_url
string
μΉ΄λ μν μ 보λ₯Ό λ΄κ³ μλ μΈλΆ URLμ
λλ€. ν΄λΉ URLμμλ JSON κ°μ λ°νν΄μΌνκ³ , νμμ μΌλ‘ bool typeμ valid νλμ μ νμ μΌλ‘ array typeμ attributes νλλ₯Ό μ€μ ν μ μμ΅λλ€.
animations
array
secure λμμ κ°μ²΄λ€μ λ°°μ΄μ
λλ€. λμμ κ°μ²΄λ low_resolutionκ³Ό (λλ) high_resolution κ°μ κ°μ§λ©° κ°κ° μ ν΄μλ λμμ, κ³ ν΄μλ λμμ νμΌλͺ
μ κΈ°λ‘ν©λλ€. secure λμμ μ
λ‘λ λ°©λ²μ Upload Secure NFT Resourceλ₯Ό μ°Έμ‘°νμΈμ. optional νλμ
λλ€.
description*
string
μΉ΄λμ κ΄ν μ€λͺ μ λλ€.
image*
string
μΉ΄λμ μ¬μ©ν μ΄λ―Έμ§ URL μ£Όμμ λλ€.
animation_url
string
μΉ΄λμ μ¬μ©ν λμμ URL μ£Όμμ
λλ€. μ§μνλ νμΌ νμ₯μλ .mp4μ
λλ€. H.264 μ½λ±μ΄ μλκ±°λ ν΄μλκ° 3840x2160μ λλ κ²½μ° μ¬μλμ§ μμ μ μμ΅λλ€.
background_color
string
μΉ΄λ λ°°κ²½μ μ¬μ©ν RGB μμ μ½λμ λλ€.
sendable
boolean
TRUEμ΄λ©΄ λ°νν μΉ΄λλ₯Ό Klipμμ νμΈμκ² μ μ‘ κ°λ₯ν©λλ€.
send_friend_only
boolean
TRUEμ΄λ©΄ λ°νν μΉ΄λλ₯Ό Klipμμ μΉ΄μΉ΄μ€ν‘ μΉκ΅¬μκ²λ§ μ μ‘ κ°λ₯ν©λλ€. νμ¬ Klip λ΄μμ μΌμμ μΌλ‘ μΉκ΅¬ μ μ‘μ΄ μ 곡λμ§ μκ³ μμΌλ―λ‘ FALSEλ‘ μ€μ ν©λλ€.
group_name
string
μΉ΄λλ₯Ό κ·Έλ£Ήνν λ μ¬μ©νλ μΉ΄λ κ·Έλ£Ή μ΄λ¦μ λλ€.
group_icon
string
μΉ΄λ κ·Έλ£Ή μμ΄μ½μΌλ‘ μ¬μ©ν μ΄λ―Έμ§ URL μ£Όμμ λλ€.
hashtags
array
ν΄μνκ·Έλ€μ΄ λ΄κΈ΄ string λ°°μ΄μ
λλ€. μΉ΄λμ ν΄μνκ·Έλ₯Ό λ¬λ©΄ νΉμ μ£Όμ , λ΄μ©μ μ½κ² μ°Ύμ μ μμ΅λλ€.
layout
string
μΉ΄λλ₯Ό 보μ¬μ£Όλ λ°©μμ
λλ€. μλ₯Ό λ€μ΄, μ μ¬κ°ν μ΄λ―Έμ§λ general, κ°λ‘κ° λ κΈ΄ μ΄λ―Έμ§λ horizontal μΈλ‘κ° κΈ΄ μ΄λ―Έμ§λ verticalλ‘ μ€μ ν μ μμ΅λλ€. κΈ°λ³Έκ°μ generalμ
λλ€.
external_link
string
Klip μΈλΆλ‘ μ°κ²°λλ URL μ£Όμμ λλ€. (μ΅λ κΈΈμ΄:255)
custom_links
array
Klip μΈλΆλ‘ μ°κ²°λλ URL μ£Όμλ€μ΄ λ΄κΈ΄ object λ°°μ΄ μ
λλ€. display_nameμ λ
ΈμΆν μμ±λͺ
, valueμ μμ±κ°μ μμ μ΄λ€ μ§μ ν©λλ€. Klipμ NFT μμΈ νλ©΄μμ μΈλΆλ‘ μ°κ²°λλ λ§ν¬κ° μ 곡λ©λλ€. (λ°°μ΄μ μ΅λ ν¬κΈ°: 10κ°, κ° λ§ν¬μ μ΅λ κΈΈμ΄: 255)
qr_code
string
QR Codeκ° κ·Έλ €μ§ μ΄λ―Έμ§ URL μ£Όμμ λλ€. (μ΅λ κΈΈμ΄:255)
bar_code
string
Bar Codeκ° κ·Έλ €μ§ μ΄λ―Έμ§ URL μ£Όμμ λλ€. (μ΅λ κΈΈμ΄:255)
attributes
array
λ°νν μΉ΄λ μμ±κ°λ€μ΄ λ΄κΈ΄ object λ°°μ΄μ
λλ€.
secure
object
μΉ΄λ μμ μμκ²λ§ 보μ¬μ€ μ 보λ₯Ό λ΄μ objectμ
λλ€. bar_code, qr_code, images, animations, λ° attributes νλλ₯Ό μ νμ μΌλ‘ μ€μ ν μ μμ΅λλ€.
status_url
string
μΉ΄λ μν μ 보λ₯Ό λ΄κ³ μλ μΈλΆ URLμ
λλ€. ν΄λΉ URLμμλ JSON κ°μ λ°νν΄μΌνκ³ , νμμ μΌλ‘ bool typeμ valid νλμ μ νμ μΌλ‘ array typeμ attributes νλλ₯Ό μ€μ ν μ μμ΅λλ€.
animations
array
secure λμμ κ°μ²΄λ€μ λ°°μ΄μ
λλ€. λμμ κ°μ²΄λ low_resolutionκ³Ό (λλ) high_resolution κ°μ κ°μ§λ©° κ°κ° μ ν΄μλ λμμ, κ³ ν΄μλ λμμ νμΌλͺ
μ κΈ°λ‘ν©λλ€. secure λμμ μ
λ‘λ λ°©λ²μ Upload Secure NFT Resourceλ₯Ό μ°Έμ‘°νμΈμ. optional νλμ
λλ€.
nft_order_no
number
Klip μΉ΄λ λͺ©λ‘μμ μΉ΄λ κ·Έλ£Ήμ΄ λ ΈμΆλλ μμμ λλ€.
summary
string
μ΄ BAppμ κ΄ν ν μ€ μ€λͺ μ λλ€.
card_count
number
보μ ν λͺ¨λ μΉ΄λμ€ μ΄ BAppμμ μ°μ΄λ μΉ΄λ κ°μμ λλ€.
nft_id
number
NFT IDμ λλ€. NFTλ μ΄ μΉ΄λλ₯Ό λΈλ‘체μΈμ ꡬννλ μ€λ§νΈ 컨νΈλνΈμ λλ€.
cards
array
κ° μΉ΄λ μ 보λ₯Ό λ΄μ object λ°°μ΄μ
λλ€.
cards_next_cursor
string
μΉ΄λκ° 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λΆλ¬μ¬ 컀μκ°μ λλ€.
next_cursor
string
BAppμ΄ 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λΆλ¬μ¬ 컀μκ°μ λλ€.
card_id
number
μΉ΄λ IDμ λλ€.
card_uri
string
μΉ΄λ λ©νλ°μ΄ν°κ° λ΄κΈ΄ JSON νμΌ URLμ λλ€.
transaction_hash
string
μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ νΈλμμ ν΄μμ λλ€.
card_id
number
μΉ΄λ IDμ λλ€.
card_uri
string
μΉ΄λ λ©νλ°μ΄ν°κ° λ΄κΈ΄ JSON νμΌ URLμ λλ€.
transaction_hash
string
μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ νΈλμμ ν΄μμ λλ€.
card_id
number
μΉ΄λ IDμ λλ€.
card_uri
string
μΉ΄λ λ©νλ°μ΄ν°κ° λ΄κΈ΄ JSON νμΌ URLμ λλ€.
transaction_hash
string
μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ νΈλμμ ν΄μμ λλ€.
Content-Type*
string
application/json
email*
string
κ°μ μ μ΄λ©μΌ μ£Όμμ΄λ©° λ‘κ·ΈμΈ κ³μ μΌλ‘ μ¬μ©λ©λλ€.
password*
string
κ°μ μ λ‘κ·ΈμΈ λΉλ°λ²νΈμ λλ€. μΉμ¬μ΄νΈμ κ°μ μ μ¬μ©ν λΉλ°λ²νΈμ SHA256 ν΄μλ₯Ό μ μ©νμ¬ μ μ‘ν©λλ€.
string
κ°μ μ μ΄λ©μΌ μ£Όμμ΄λ©° λ‘κ·ΈμΈ κ³μ μΌλ‘ μ¬μ©λ©λλ€.
klaytn_address
string
κ°μ
μ Kaia EOA μ£Όμμ
λλ€. νΈνμ± μ μ§λ₯Ό μν΄ klaytn λͺ
μΉμ΄ μ¬μ©λ©λλ€.
contract_address
string
μΉ΄λλ₯Ό λ°ννλ SCA μ£Όμμ λλ€.
name
string
κ°μ μ μ΄λ¦μ΄λ©° μ¬μ μ λλ λ²μΈ μ΄λ¦μ μ¬μ©ν©λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
old_password*
string
κΈ°μ‘΄μ μ¬μ©νλ λΉλ°λ²νΈμ λλ€.
new_password*
string
μλ‘κ² μ¬μ©ν λΉλ°λ²νΈμ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
old_pin*
string
κΈ°μ‘΄μ μ¬μ©νλ ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
new_pin*
string
μλ‘κ² μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
multipart/form-data
upload*
string
μ λ‘λν μ΄λ―Έμ§ νμΌλͺ μ λλ€. νμΌ κ²½λ‘λ₯Ό ν¬ν¨ν΄μΌ ν©λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
multipart/form-data
upload*
string
μ λ‘λν νμΌλͺ μ λλ€. νμΌ κ²½λ‘λ₯Ό ν¬ν¨ν΄μΌ ν©λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
multipart/form-data
upload*
string
μ λ‘λν νμΌλͺ μ λλ€. νμΌ κ²½λ‘λ₯Ό ν¬ν¨ν΄μΌ ν©λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
to_address*
array
μΉ΄λλ₯Ό λ°νλ°μ EOA μ£Όμλ€μ΄ λ΄κΈ΄ string λ°°μ΄μ
λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°ννλ SCA μ£Όμμ λλ€.
name*
string
μΉ΄λ μ΄λ¦μ λλ€.
bar_code
string
bar codeλ‘ νμν λ¬Έμμ΄ κ°μ λλ€. κΈ°λ³Έμ μΌλ‘ CODE 128 νμμ μ¬μ©ν©λλ€. optional νλμ λλ€. (μ΅λ κΈΈμ΄:20, ' '(곡백) λλ '-' λ¬Έμ μ μΈ)
qr_code
string
qr codeλ‘ νμν λ¬Έμμ΄ κ°μ λλ€. optional νλμ λλ€. (μ΅λ κΈΈμ΄:255)
attributes
array
μΉ΄λ μμ±κ°λ€μ΄ λ΄κΈ΄ object λ°°μ΄μ
λλ€. optional νλμ
λλ€.
images
array
secure μ΄λ―Έμ§ κ°μ²΄λ€μ λ°°μ΄μ
λλ€. μ΄λ―Έμ§ κ°μ²΄λ low_resolutionκ³Ό (λλ) high_resolution κ°μ κ°μ§λ©° κ°κ° μ ν΄μλ μ΄λ―Έμ§, κ³ ν΄μλ μ΄λ―Έμ§ νμΌλͺ
μ κΈ°λ‘ν©λλ€. secure μ΄λ―Έμ§ μ
λ‘λ λ°©λ²μ Upload Secure NFT Resourceλ₯Ό μ°Έμ‘°νμΈμ. optional νλμ
λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
to_person*
array
μΉ΄λλ₯Ό λ°νλ°μ μ€λͺ κ³Ό μ νλ²νΈ μμ΄ λ΄κΈ΄ 2μ°¨μ λ°°μ΄μ λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°ννλ SCA μ£Όμμ λλ€.
name*
string
μΉ΄λ μ΄λ¦μ λλ€.
bar_code
string
bar codeλ‘ νμν λ¬Έμμ΄ κ°μ λλ€. κΈ°λ³Έμ μΌλ‘ CODE 128 νμμ μ¬μ©ν©λλ€. optional νλμ λλ€. (μ΅λ κΈΈμ΄:20, ' '(곡백) λλ '-' λ¬Έμ μ μΈ)
qr_code
string
qr codeλ‘ νμν λ¬Έμμ΄ κ°μ λλ€. optional νλμ λλ€. (μ΅λ κΈΈμ΄:255)
attributes
array
μΉ΄λ μμ±κ°λ€μ΄ λ΄κΈ΄ object λ°°μ΄μ
λλ€. optional νλμ
λλ€.
images
array
secure μ΄λ―Έμ§ κ°μ²΄λ€μ λ°°μ΄μ
λλ€. μ΄λ―Έμ§ κ°μ²΄λ low_resolutionκ³Ό (λλ) high_resolution κ°μ κ°μ§λ©° κ°κ° μ ν΄μλ μ΄λ―Έμ§, κ³ ν΄μλ μ΄λ―Έμ§ νμΌλͺ
μ κΈ°λ‘ν©λλ€. secure μ΄λ―Έμ§ μ
λ‘λ λ°©λ²μ Upload Secure NFT Resourceλ₯Ό μ°Έμ‘°νμΈμ. optional νλμ
λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
mint_count
number
μ΄λ² λ¬ νμ¬κΉμ§ λ°νν μΉ΄λ κ°μμ λλ€.
nft_id*
string
BAppμ μλ μΉ΄λλ₯Ό μμ±ν μ€λ§νΈ 컨νΈλνΈ IDμ λλ€.
card_id*
string
BAppμ μλ μΉ΄λ IDμ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
to_address*
string
μΉ΄λλ₯Ό λ°λ μλλ°© EOA μ£Όμμ λλ€.
card_name*
string
λ³΄λΌ μΉ΄λ μ΄λ¦μ λλ€.
nft_id*
string
BAppμ μλ μΉ΄λλ₯Ό μμ±ν μ€λ§νΈ 컨νΈλνΈ IDμ λλ€.
card_id*
string
BAppμ μλ μΉ΄λ IDμ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
to_person*
array
μΉ΄λλ₯Ό λ°λ μλλ°©μ μ€λͺ
κ³Ό μ νλ²νΈκ° μλ string λ°°μ΄μ
λλ€.
card_name*
string
λ³΄λΌ μΉ΄λ μ΄λ¦μ λλ€.
cursor
string
BAppμ΄ 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λ°λ 컀μκ°μ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
id
number
μ΄ BApp IDμ λλ€.
name
string
μ΄ BApp μ΄λ¦μ λλ€.
bapp_img
string
μ΄ BApp λν μ΄λ―Έμ§ νμΌ μ£Όμμ λλ€.
category_id
number
μ΄ BApp μΉ΄ν κ³ λ¦¬ λΆλ₯ μ½λμ λλ€.
created_at
number
μΉ΄λκ° λ°νλ μκ°μ λλ€.
updated_at
number
μΉ΄λκ° μ λ°μ΄νΈλ μκ°μ λλ€.
owner
string
μ΄ κ³μ EOA μ£Όμμ λλ€.
sender
string
μ΄ κ³μ μΌλ‘ μΉ΄λλ₯Ό λ³΄λΈ μ¬λμ EOA μ£Όμμ λλ€.
nft_id*
string
NFT IDμ λλ€. NFTλ μ΄ μΉ΄λλ₯Ό λΈλ‘체μΈμ ꡬννλ μ€λ§νΈ 컨νΈλνΈμ λλ€.
isAll
bool
TRUEμ΄λ©΄ λ΄κ° μμ ν λͺ¨λ μΉ΄λ μ 보λ₯Ό ν λ²μ λ°μ΅λλ€. cursor νλΌλ―Έν°μλ ν¨κ» μ¬μ©ν μ μμ΅λλ€.
cursor
string
μΉ΄λ μ 보λ₯Ό 100κ°μ© λλμ΄ λ°κΈ° μν 컀μκ°μ
λλ€. isAll νλΌλ―Έν°μλ ν¨κ» μ¬μ©ν μ μμ΅λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
name
string
μΉ΄λ μ΄λ¦μ λλ€.
symbol_img
string
μΉ΄λμ μ¬μ©νλ μ΄λ―Έμ§ URL μ£Όμμ λλ€.
cards
array
κ° μΉ΄λ μ 보λ₯Ό λ΄μ object λ°°μ΄μ
λλ€.
next_cursor
string
μΉ΄λκ° 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λΆλ¬μ¬ 컀μκ°μ λλ€.
created_at
number
μΉ΄λκ° λ°νλ μκ°μ λλ€.
updated_at
number
μΉ΄λκ° μ λ°μ΄νΈλ μκ°μ λλ€.
owner
string
μ΄ κ³μ EOA μ£Όμμ λλ€.
sender
string
μ΄ κ³μ μΌλ‘ μΉ΄λλ₯Ό λ³΄λΈ μ¬λμ EOA μ£Όμμ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
card_id*
number
μΉ΄λ IDμ λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°νν SCA μ£Όμμ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°νν SCA μ£Όμμ λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°ννλ SCA μ£Όμμ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
card_ids*
array
μΉ΄λ IDλ€μ΄ λ΄κΈ΄ number λ°°μ΄μ
λλ€. μ΅λ 100κ°μ μμλ₯Ό λ΄μ μ μμ΅λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°νν SCA μ£Όμμ λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°ννλ SCA μ£Όμμ λλ€.
cursor
string
μΉ΄λ κ°μκ° 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λ°λ 컀μκ°μ
λλ€. μΌλ°μ μΌλ‘ μΉ΄λ κ°μκ° 100κ°λ₯Ό μ΄κ³Όνλ€λ©΄ 1λ² νΈμΆ μ 100κ°μ κ²°κ³Όμ next_cursor κ°μ λ°μ΅λλ€. λλ¨Έμ§ μΉ΄λλ₯Ό μ‘°ννλ €λ©΄ next_cursor κ°μ query νλΌλ―Έν° cursorμ μ λ¬νμ¬ APIλ₯Ό λ€μ νΈμΆν΄μΌν©λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
name
string
μΉ΄λ μ΄λ¦μ λλ€.
symbol_img
string
μΉ΄λμ μ¬μ©νλ μ΄λ―Έμ§ URL μ£Όμμ λλ€.
cards
array
κ° μΉ΄λ μ 보λ₯Ό λ΄μ object λ°°μ΄μ
λλ€.
next_cursor
string
μΉ΄λκ° 100κ° μ΄μμ΄λ©΄ λ€μ 100κ° μ 보λ₯Ό λΆλ¬μ¬ 컀μκ°μ λλ€.
created_at
number
μΉ΄λκ° λ°νλ μκ°μ λλ€.
updated_at
number
μΉ΄λκ° μ λ°μ΄νΈλ μκ°μ λλ€.
owner
string
μ΄ κ³μ EOA μ£Όμμ λλ€.
sender
string
μ΄ κ³μ μΌλ‘ μΉ΄λλ₯Ό λ³΄λΈ μ¬λμ EOA μ£Όμμ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
pin*
string
μλͺ μ μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ(SHA256)ν 64μ리 Hex String κ°μ λλ€.
card_ids*
array
μΉ΄λ IDλ€μ΄ λ΄κΈ΄ number λ°°μ΄μ
λλ€. μ΅λ 100κ°μ μμλ₯Ό λ΄μ μ μμ΅λλ€.
contract_address*
string
μΉ΄λλ₯Ό λ°νν SCA μ£Όμμ λλ€.
tx_hash*
string
μ‘°νν νΈλμμ ν΄μ κ°μ λλ€.
Authorization*
string
JWT νμ μΈμ¦ ν ν°μ λλ€.
Content-Type*
string
application/json
success
bool
νΈλμμ μ±κ³΅ μ¬λΆμ λλ€.
{
"email": "[email protected]",
"klaytn_address":0xdc6AE5861a73d852bd3cdD84a4BA7f598A5160F3,
"contract_address": "0xc94770007dda54cF92009BFF0dE90c06F603a09f",
"name": "Ray Kim",
"phone": "01077777777",
"service_name": "ννμ§μλλ 볼루μ
"
"access_token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJI...",
"status" : 1
"mint_limit": 1000
"mint_count": 1
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."not found user info in db": κ³μ μ λ³΄κ° μ‘΄μ¬νμ§ μμ΅λλ€."banned accounts cannot login": μ μ¬ κ³μ μ λ‘κ·ΈμΈν μ μμ΅λλ€."suspended accounts cannot login": μ μ§ κ³μ μ λ‘κ·ΈμΈν μ μμ΅λλ€."not yet approved": μμ§ κ°μ
μ΄ μΉμΈλμ§ μμμ΅λλ€."invalid password": λΉλ°λ²νΈκ° μΌμΉνμ§ μμ΅λλ€.λ‘κ·ΈμΈν μ μμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/partner/auth" \
-d '{"email":"[email protected]", "password":"C01069C9ABB6EA7DA49AE418A24BBEF3AD67170DDCD20AC7C76084A5A85E4057"}' \
-H "Content-Type: application/json"{}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."invalid password": λΉλ°λ²νΈκ° μΌμΉνμ§ μμ΅λλ€.λΉλ°λ²νΈ λ³κ²½μ μ€ν¨νμ΅λλ€.curl -X PUT "https://api.klipwallet.com/v2/partner/?opt=password" \
-d '{"old_password":"HASHED_OLD_PASSWORD", "new_password":"HASHED_NEW_PASSWORD"}' \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."exceed pin code error count": ν λ²νΈ μ
λ ₯ μ€λ₯ νμκ° μ§μ λ νλλ₯Ό μ΄κ³Όνμμ΅λλ€."invalid pin code": κΈ°μ‘΄ ν λ²νΈκ° μΌμΉνμ§ μμ΅λλ€.ν λ²νΈλ₯Ό λ³κ²½νμ§ λͺ»νμ΅λλ€.curl -X PUT "https://api.klipwallet.com/v2/partner/pin" \
-d '{"old_pin":"HASHED_OLD_PIN_NUMBER", "new_pin":"HASHED_NEW_PIN_NUMBER"}' \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{"image": "https://url_path_to_img_file/image.png"}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μ΄λ―Έμ§λ₯Ό μ
λ‘λνμ§ λͺ»νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/wallet/image" \
-F upload=@./imagefile.png \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: multipart/form-data"{"url": "https://url_path_to_file/file.mp4"}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."upload animation file limit exceeded": λμμ νμΌμ κ²½μ° μ νλ ν¬κΈ° 10MiBλ₯Ό λμμ΅λλ€. νμΌ ν¬κΈ°λ₯Ό λ€μ νμΈνμμμ€."upload animation file extension is not support": μ§μνμ§ μλ λμμ ν¬λ§·μ
λλ€.νμΌμ μ
λ‘λνμ§ λͺ»νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/wallet/nftResource" \
-F upload=@./file.mp4 \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: multipart/form-data"{"filename": "{uuid}.{extension}"}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."upload animation file limit exceeded": λμμ νμΌμ κ²½μ° μ νλ ν¬κΈ° 10MiBλ₯Ό λμμ΅λλ€. νμΌ ν¬κΈ°λ₯Ό λ€μ νμΈνμμμ€."upload animation file extension is not support": μ§μνμ§ μλ λμμ ν¬λ§·μ
λλ€.νμΌμ μ
λ‘λνμ§ λͺ»νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/wallet/nftResource/secure" \
-F upload=@./file.mp4 \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: multipart/form-data"{
"hash": "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97"
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μ μμ μΈ μΉ΄λ λ°νμ μ€ν¨νμ΅λλ€.
μΌλΆ μΉ΄λλ λ°νλμμ μ μμΌλ β보μ μΉ΄λ λͺ©λ‘β μμ 보μ λͺ©λ‘μ νμΈνμμμ€.//attributes μμ
"attributes":[
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]//secure μμ ()
"secure": {
// μΌλ°μ μΌλ‘ bar_code λλ qr_code λ μ€ νλλ§ μ€μ
"bar_code": "1234 ABCD 5678 EFGH 90IJ",
"qr_code": "https://your-domain.com?key=1234",
// μ¬μ μ μ
λ‘λν secure μ΄λ―Έμ§μ UUIDλ₯Ό μ¬μ©
// λ°°μ΄ νμμ΄μ§λ§ νμ¬ ν΄λ¦½μμ μμ μ μ μ© μ΄λ―Έμ§λ ν κ°λ§ μΆκ° λ
ΈμΆλλ―λ‘ νλλ§ μΈμλ‘ μ
λ ₯
"images": [
{"low_resolution" : "{uploaded-filename-1}.png"}
],
// μ¬μ μ μ
λ‘λν secure λμμμ UUIDλ₯Ό μ¬μ©
// λ°°μ΄ νμμ΄μ§λ§ νμ¬ ν΄λ¦½μμ μμ μ μ μ© λμμμ ν κ°λ§ μΆκ° λ
ΈμΆλλ―λ‘ νλλ§ μΈμλ‘ μ
λ ₯
// animationsλ₯Ό λ±λ‘νλ κ²½μ°, λ°λμ imagesλ "μΈλ€μΌ" μν λ‘μ¨ λ±λ‘ νμ
"animations": [
{"low_resolution" : "{uploaded-filename-2}.mp4"}
],
"attributes":[
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]
}//status_url μμ
status_url: "https://your-domain.com?key=1234"
//status_url νΈμΆ μ μλ΅κ° μμ
{
"valid": true,
"attributes":[
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]
}custom_links: [
{
"display_name": "κ³ κ°μΌν°",
"value": "https://customersupport.com"
},
{
"display_name": "ννμ΄μ§",
"value": "https://homepage.com"
}
]curl -X POST "https://api.klipwallet.com/v2/wallet/mint" \
-d @./mint_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"hash": "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97",
"result": [["νκΈΈλ", "010-1111-2222", "success", ""], ["κΉμΆν₯", "010-3333-4444", "fail", "phone number does not exist"], ...]
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μ μμ μΈ μΉ΄λ λ°νμ μ€ν¨νμ΅λλ€.
μΌλΆ μΉ΄λλ λ°νλμμ μ μμΌλ β보μ μΉ΄λ λͺ©λ‘β μμ 보μ λͺ©λ‘μ νμΈνμμμ€.//attributes μμ
attributes:[
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]//secure μμ
"secure": {
// μΌλ°μ μΌλ‘ bar_code λλ qr_code λ μ€ νλλ§ μ€μ
"bar_code": "1234 ABCD 5678 EFGH 90IJ",
"qr_code": "https://your-domain.com?key=1234",
// μ¬μ μ μ
λ‘λν secure μ΄λ―Έμ§μ UUIDλ₯Ό μ¬μ©
// λ°°μ΄ νμμ΄μ§λ§ νμ¬ ν΄λ¦½μμ μμ μ μ μ© μ΄λ―Έμ§λ ν κ°λ§ μΆκ° λ
ΈμΆλλ―λ‘ νλλ§ μΈμλ‘ μ
λ ₯
"images": [
{"low_resolution" : "{uploaded-filename-1}.png"}
],
// μ¬μ μ μ
λ‘λν secure λμμμ UUIDλ₯Ό μ¬μ©
// λ°°μ΄ νμμ΄μ§λ§ νμ¬ ν΄λ¦½μμ μμ μ μ μ© λμμμ ν κ°λ§ μΆκ° λ
ΈμΆλλ―λ‘ νλλ§ μΈμλ‘ μ
λ ₯
// animationsλ₯Ό λ±λ‘νλ κ²½μ°, λ°λμ imagesλ "μΈλ€μΌ" μν λ‘μ¨ λ±λ‘ νμ
"animations": [
{"low_resolution" : "{uploaded-filename-2}.mp4"}
],
"attributes":[
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]
}//status_url μμ
status_url: "https://your-domain.com?key=1234"
//status_url νΈμΆ μ μλ΅κ° μμ
{
"valid": true,
"attributes":[
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]
}custom_links: [
{
"display_name": "κ³ κ°μΌν°",
"value": "https://customersupport.com"
},
{
"display_name": "ννμ΄μ§",
"value": "https://homepage.com"
}
]curl -X POST "https://api.klipwallet.com/v2/wallet/mint/person" \
-d @./mint_person_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"mint_count": 10
}curl -X GET "https://api.klipwallet.com/v2/wallet/mint/count" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//μ μ‘ μ±κ³΅ μμ
{ to_address: "0xb1764B96da889..." , fail_count: 0, tx_hash: "0x7cf09602cebb..."}
//μλͺ»λ ν λ²νΈλ₯Ό 1ν μ
λ ₯ μ
{fail_count: 1}
//μλͺ»λ ν λ²νΈλ₯Ό 2ν μ
λ ₯ μ
{fail_count: 2}
//μλͺ»λ ν λ²νΈ μ
λ ₯ νμ νλλ 5νμ
λλ€. μλͺ»λ ν λ²νΈλ₯Ό 5ν μ
λ ₯νκ³
//μ νν ν λ²νΈλ₯Ό 6νμ§Έμ μ
λ ₯ν΄λ λ€μ κ²°κ³Όλ₯Ό λ°μμ μ μνμμμ€.
{fail_count: 6}
//fail_countμ maxκ°μ νμ¬ 6μ
λλ€.
//μλͺ»λ ν λ²νΈλ₯Ό 7ν μ
λ ₯ μ
{fail_count: 6}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/wallet/nft/60/1/send" \
-d @./send_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//μ μ‘ μ±κ³΅ μμ
{ fail_count: 0, tx_hash: "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97" }
//μλͺ»λ ν λ²νΈλ₯Ό 1ν μ
λ ₯ μ
{fail_count: 1, tx_hash: ""}
//μλͺ»λ ν λ²νΈλ₯Ό 2ν μ
λ ₯ μ
{fail_count: 2, tx_hash: ""}
//μλͺ»λ ν λ²νΈ μ
λ ₯ νμ νλλ 5νμ
λλ€. μλͺ»λ ν λ²νΈλ₯Ό 5ν μ
λ ₯νκ³
//μ νν ν λ²νΈλ₯Ό 6νμ§Έμ μ
λ ₯ν΄λ λ€μ κ²°κ³Όλ₯Ό λ°μμ μ μνμμμ€.
{fail_count: 6, tx_hash: ""}
//fail_countμ maxκ°μ νμ¬ 6μ
λλ€.
//μλͺ»λ ν λ²νΈλ₯Ό 7ν μ
λ ₯ μ
{fail_count: 6, tx_hash: ""}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/wallet/nft/60/1/send/person" \
-d @./send_person_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"bapps": [
{
"id": 2,
"name": "bapp2",
"bapp_img": "/img/bapp-icon2.svg",
"category_id": 2,
"nft_order_no": 1,
"summary": "summary",
"card_count": 10,
"nft_id": 52,
"cards": [
{
"created_at": 1580300503,
"updated_at": 1580300503,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 18,
"card_uri": "https://.../card_meta.json",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
],
"cards_next_cursor": ""
},
...
],
"next_cursor": ""
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.BAppλ³λ‘ 보μ ν μΉ΄λ λͺ©λ‘μ λΆλ¬μ€μ§ λͺ»νμ΅λλ€.curl "https://api.klipwallet.com/v2/wallet/bapp?cursor=mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"name": "conan",
"symbol_img": "",
"cards": [
{
"created_at": 1580300503,
"updated_at": 1580300503,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 18,
"card_uri": "https://.../card_meta.json",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"next_cursor": "mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL",
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ 보λ₯Ό λΆλ¬μ€μ§ λͺ»νμ΅λλ€.curl "https://api.klipwallet.com/v2/wallet/nft/52?cursor=mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"hash": "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97"
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μμ μ μ€ν¨νμμ΅λλ€. μ νν μ 보λ₯Ό νμΈνκΈ° μν΄ νμ¬ μμ ν μΉ΄λ λͺ©λ‘μ νμΈνμμμ€.curl -X DELETE "https://api.klipwallet.com/v2/wallet/nft" \
-d @./delete_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"fail_count": 0,
"tx_hash": "string"
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.{
"code": number,
"err": "string"
}curl -X POST "https://api.klipwallet.com/v2/escrow/approve" \
-d @./approve_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"approve": true
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.{
"code": number,
"err": "string"
}curl -X GET "https://api.klipwallet.com/v2/escrow/approve?contract_address=0xc94770007dda54cF92009BFF0dE90c06F603a09f" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"claim_links": [
"https://klipwallet.com/?target=/claimCard/2/123?claimKey=1234567890123456789012345678901212345678901234567890123456789012"
],
"fail_count": 0,
"tx_hash": "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97"
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.{
"code": number,
"err": "string"
}curl -X POST "https://api.klipwallet.com/v2/escrow" \
-d @./escrow_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"cards": [
{
"name": "conan",
"symbol_img": "",
"cards": [
{
"created_at": 1580300503,
"updated_at": 1580300503,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 18,
"card_uri": "https://.../card_meta.json",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"next_cursor": "mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL",
}
]
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.curl -X GET "https://api.klipwallet.com/v2/escrow?contract_address=0xc94770007dda54cF92009BFF0dE90c06F603a09f" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"fail_count": 0,
"tx_hash": "string"
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μμ€ν¬λ‘ μ·¨μμ μ€ν¨νμμ΅λλ€. μ νν μ 보λ₯Ό νμΈνκΈ° μν΄ νμ¬ μμ€ν¬λ‘λ μΉ΄λ λͺ©λ‘μ νμΈνμμμ€.{
"code": number,
"err": "string"
}curl -X DELETE "https://api.klipwallet.com/v2/escrow" \
-d @./cancel_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"success": true
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."no transaction receipt": νΈλμμ
ν΄μκ° μ‘΄μ¬νμ§ μμ΅λλ€. μμ§ νΈλμμ
μ΄ μ²λ¦¬λμ§ μμκ±°λ μλͺ»λ νΈλμμ
ν΄μ κ°μ
λλ€.curl -X GET "https://api.klipwallet.com/v2/wallet/receipt?tx_hash=0x880a45d3c482c7d794c2e7b7dbdc9e933a68f4a1f3d978d582ba9f9ebd1f9e72" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"μ΄ νν 리μΌμ Klip ννΈλ μ¬λ¬λΆμ΄ APIλ₯Ό μ¬μ©ν΄ μΉ΄λλ₯Ό μμ½κ² λ°ν, κ΄λ¦¬νλλ‘ λκΈ° μν΄ μμ±λ κ°λ°μ κ°μ΄λμ λλ€.
μΉ΄λλ₯Ό λ°ννλ €λ©΄ λ¨Όμ Klip Partners μ¬μ΄νΈμ κ°μ ν΄μΌ ν©λλ€. κ°μ μ μ μ²νλ©΄ Klip μ΄μμ§κ³Ό λ³λλ‘ νμν ν κ°μ μ΄ μΉμΈλ©λλ€. κ°μ μ΄ μΉμΈλλ©΄ κ°μ μΉμΈ νμΈ λ©μΌμ λ°μΌλ©° Klip Partnersμ λ‘κ·ΈμΈν μ μμ΅λλ€. μλΉμ€ μ΄μ©μ ν¬λ§νλ ννΈλμ¬λ μνν μ¬μ λ Όμλ₯Ό μν΄μ (1)νμ¬ μκ°, (2)μΉ΄λ νμ© λͺ©μ , (3)μΉ΄λ νμ© λ°©μ λ±μ μλ©΄μΌλ‘ μ λ¦¬ν΄ [email protected]λ‘ λ³΄λ΄μ£ΌμκΈΈ λ°λλλ€.
μΌλ‘ λ‘κ·ΈμΈ IDμ λΉλ°λ²νΈ( emailκ³Ό password)λ₯Ό Klip Partnersμ 보λ΄κ³ λ‘κ·ΈμΈμ μμ²ν©λλ€.
passwordλ λΉλ°λ²νΈλ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
λΉλ°λ²νΈλ 8~16μμ μλ¬Έ λμλ¬Έμ, μ«μ, νΉμλ¬Έμλ₯Ό μ‘°ν©ν string κ°μ λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
Klip Partnersμ κ°μ
νλ©΄ λΈλ‘체μΈμμ μ¬λ¬λΆμ μ£Όμμ μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈκ° μμ±λ©λλ€. klaytn_addressλ λΈλ‘체μΈμ μμ±λ μ¬λ¬λΆμ μ£Όμμ΄λ©° contract_addressλ μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ μ£Όμ()μ
λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λ μ΄λ―Έμ§λ μΉ΄λκ° Klip μ¬μ©μμκ² λ³΄μΌ λͺ¨μμ
λλ€. μΉ΄λλ₯Ό λ°ννλ €λ©΄ μ΄ μΉ΄λ μ΄λ―Έμ§λ₯Ό λ¨Όμ μ
λ‘λν΄μΌ ν©λλ€. λ‘ μΉ΄λ μ΄λ―Έμ§ νμΌ, λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ μ΄λ―Έμ§ μ
λ‘λλ₯Ό μμ²ν©λλ€.
λ‘ μΉ΄λλ₯Ό λ°ννλ €λ©΄ Upload Image APIλ‘ λ¨Όμ μΉ΄λ μ΄λ―Έμ§λ₯Ό μ λ‘λν΄μΌ ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μ΄λ―Έμ§ νμΌμ΄ μ λ‘λλλ©΄ μ λ‘λλ μ΄λ―Έμ§ νμΌ URL μ£Όμλ₯Ό μμ κ°μ΄ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
λ‘ mint_info.json νμΌ, λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ μΉ΄λ λ°νμ μμ²ν©λλ€. μ
λ‘λν μΉ΄λ μ΄λ―Έμ§λ₯Ό μ¬μ©ν©λλ€. EOAλ₯Ό κ°μ§ μ¬μ©μλΌλ©΄ λꡬλ μΉ΄λλ₯Ό λ°νλ°μ μ μμ΅λλ€.
mint_info.json μμλ μλμ κ°μ΅λλ€. μ΄ νμΌμλ μΉ΄λ μ΄λ―Έμ§ URL μ£Όμμ μΉ΄λ λ°νμ νμν μ λ³΄κ° λ΄κ²¨ μμ΅λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
to_addressλ μΉ΄λλ₯Ό λ°νλ°μ μ¬μ©μ μ£Όμλ€μ΄ λ΄κΈ΄ λ°°μ΄μ
λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λκ° μ μ λ°νλμλ€λ©΄ μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ νΈλμμ ν΄μκ°μ μμ κ°μ΄ λ°μ΅λλ€. μ λ¬λ°μ νΈλμμ ν΄μκ°μ μμ μ‘°νν μ μμ΅λλ€. μ΄ ν΄μκ°μ μ‘°ννλ©΄ μΉ΄λ λ°ν νΈλμμ μ΄ μ μ μ€νλμλμ§ νμΈν μ μμ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
λ‘ mint_info.json νμΌ, λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ μΉ΄λ λ°νμ μμ²ν©λλ€. Klip νμμ μ€λͺ
κ³Ό μ νλ²νΈλ₯Ό μ¬μ©νμ¬ Klip νμμκ²λ§ μΉ΄λλ₯Ό λ°νν©λλ€.
mint_info.json μμλ μλμ κ°μ΅λλ€. μ΄ νμΌμλ μΉ΄λ μ΄λ―Έμ§ URL μ£Όμμ μΉ΄λ λ°νμ νμν μ λ³΄κ° λ΄κ²¨ μμ΅λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
to_personμ μΉ΄λλ₯Ό λ°νλ°μ μ¬μ©μ [μ€λͺ
, μ νλ²νΈ] λ°°μ΄λ€μ΄ λ΄κΈ΄ 2μ°¨μ λ°°μ΄μ
λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λκ° μ μ λ°νλμλ€λ©΄ μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ νΈλμμ
μ μ‘ κ²°κ³Ό λ° νΈλμμ
ν΄μλ₯Ό λ°μ΅λλ€.to_personμ μ
λ ₯ν νμ μ€ 1λͺ
μ΄λΌλ μΉ΄λλ₯Ό μ μμ μΌλ‘ λ°νλ°μλ€λ©΄ μμ²μ΄ μ μ μ²λ¦¬λ κ²μΌλ‘ λνλ©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λλ₯Ό λ°νν λ animation_url νλλ₯Ό μ€μ νκΈ° μν΄μλ μΉ΄λ λμμμ λ¨Όμ μ
λ‘λν΄μΌ ν©λλ€. λ‘ μΉ΄λ λμμ νμΌ, λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ λμμ μ
λ‘λλ₯Ό μμ²ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
νμΌμ΄ μ λ‘λλλ©΄ μ λ‘λλ νμΌ URLμ μμ κ°μ΄ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
Secure μ 보λ₯Ό ν¬ν¨ν NFTλ₯Ό μ λ‘λν©λλ€. Secure μ 보λ NFT μμ μλ§ νμΈν μ μλ μ 보λ₯Ό μ€λΈμ νΈ ννλ‘ μ μ₯ν©λλ€. attributes, qr_code, bar_code νλλ₯Ό μ νμ μΌλ‘ μ€μ ν μ μμ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
νμΌμ΄ μ λ‘λλλ©΄ μ λ‘λλ νμΌ URLμ μμ κ°μ΄ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λλ₯Ό λ°ννλ€λ©΄ λ°νν μΉ΄λλ₯Ό ν¬ν¨ν΄ μμ ν μΉ΄λ μ 보λ₯Ό BApp μ 보μ ν¨κ» μ‘°νν μ μμ΅λλ€. μΌλ‘ λ‘κ·ΈμΈ μ λ°μ access_tokenμ 보λ΄κ³ BAppλ³ μΉ΄λ μ 보 μ‘°νλ₯Ό μμ²ν©λλ€.
λ³Έ APIμ κ²½μ°, ν΄λ¦½μ μμ° λ¦¬μ€ν μ μ± λ³κ²½μ λ°λΌ μΌλΆ μλ‘μ΄ μΉ΄λλ μ‘°νκ° λΆκ°λ₯ν μλ μμ΅λλ€. λμ API μ¬μ©μ κΆμ₯ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λ μ λ³΄κ° μ μ μ‘°νλμλ€λ©΄ κ³μ μ΄ μ°λ λͺ¨λ BApp λͺ©λ‘κ³Ό BAppλ³ μΉ΄λ μ 보λ₯Ό λ°μ΅λλ€.
bappsμμ bappμ Klip ννΈλμ¬κ° μλΉμ€νλ BAppμ
λλ€.
cardsμμ cardλ μ΄ BAppμμ μ°μ΄λ Klip μΉ΄λμ
λλ€. BAppμλ μΉ΄λ 1μ’
λ₯κ° λ€μ΄μμ΅λλ€.
nft_idλ μ΄ cardλ₯Ό λΈλ‘μ²΄μΈ μμ λ§λλ μ€λ§νΈ 컨νΈλνΈμ IDμ
λλ€.
1ν μμ²μ BApp μ 보λ₯Ό μ΅λ 100κ°κΉμ§ λ°μ΅λλ€. λΆλ¬μ¬ BApp κ°μκ° 100κ° μ΄μμ΄λ©΄ λ€μ BApp μ 보λ₯Ό λΆλ¬μ¬ μ μλ νμ΄μ§λ€μ΄μ
컀μκ°μΈ bapps.next_cursorλ‘ λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό λ°μ΅λλ€.
λλ¨Έμ§ BApp μ 보λ₯Ό λ°μΌλ €λ©΄ Query νλΌλ―Έν° cursorμ μ΄μ νΈμΆμμ λ°μ bapps.next_cursorλ₯Ό λ£κ³ APIλ₯Ό λ€μ νΈμΆν©λλ€.
λ 1ν μμ²μ BAppλ³λ‘ BAppμμ μ°μ΄λ μΉ΄λ μ 보λ₯Ό μ΅λ 100κ°κΉμ§ λ°μ΅λλ€. BAppλ³λ‘ μΉ΄λκ° 100κ°λ₯Ό μ΄κ³Όν κ²½μ° λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό λ°μΌλ €λ©΄, APIλ‘ κ° μΉ΄λ μ 보λ₯Ό νμΈν΄μΌ ν©λλ€.
μ API μλ΅κ°μ 보면 λ°νμλ BApp 2κ°λ₯Ό μ¬μ©νλ©°, 첫 λ²μ§Έ BAppμλ μΉ΄λμ 3κ°κ°, λ λ²μ§Έ BAppμλ μΉ΄λ 1κ°κ° μμ΅λλ€.
bapps[0].cards λ°°μ΄μ 보면 μΉ΄λ μμ±/μ
λ°μ΄νΈ μκ°, μΉ΄λ μμ μ μ£Όμ, μΉ΄λλ₯Ό 보λ΄μ€ μ¬λ μ£Όμ, μΉ΄λ λ°ν νΈλμμ
ν΄μ λ± κ° μΉ΄λμ κ΄ν μμΈ μ 보λ₯Ό νμΈν μ μμ΅λλ€.
ν λ²μ μ‘°νν BApp κ°μκ° 100κ°λ₯Ό μ΄κ³Όνλ€λ©΄ 1ν νΈμΆ μ BApp 100κ° μ λ³΄λ§ λ°κ³ bapps.next_cursorκ°μ λ°μ΅λλ€.
λλ¨Έμ§ BApp μ 보λ₯Ό μ‘°ννλ €λ©΄ bapps.next_cursorκ°μ Query νλΌλ―Έν° cursorμ μ λ¬νκ³ APIλ₯Ό λ€μ νΈμΆν΄μΌ ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
κ° BAppμ μΉ΄λλ₯Ό μμ±νλ μ€λ§νΈ 컨νΈλνΈ IDμΈ nft_idκ° μμ΅λλ€. μΌλ‘ Path νλΌλ―Έν° nft_id, λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ BAppλ³λ‘ μΉ΄λ μ 보λ₯Ό μ‘°νν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λ μ λ³΄κ° μ μ μ‘°νλμλ€λ©΄ κ³μ μ΄ μ΄ BAppμμ μμ ν μΉ΄λ λͺ©λ‘κ³Ό μ 보λ₯Ό λ°μ΅λλ€.
cardsμμ cardλ μ΄ bappμμ μ°μ΄λ Klip μΉ΄λμ
λλ€. bappμλ μΉ΄λ 1μ’
λ₯κ° λ€μ΄μμ΅λλ€.
Query νλΌλ―Έν°λ‘ cursor λλ isAll λ μ€ νλλ§ μ¬μ©ν΄μΌ ν©λλ€(isAllμ΄ falseμ΄λ©΄ cursorλ₯Ό μ¬μ©ν μ μμ΅λλ€).
μ μμμμ cards.next_cursorκ°μ΄ μ‘΄μ¬νλ―λ‘ μ΄ κ³μ μ conan μΉ΄λλ₯Ό 100κ° μ΄μ κ°μ§κ³ μμ΅λλ€.
ν λ²μ μ‘°νν μΉ΄λ κ°μκ° 100κ°λ₯Ό μ΄κ³Όνλ€λ©΄ 1ν νΈμΆ μ μΉ΄λ 100κ° μ λ³΄λ§ λ°κ³ cards.next_cursorκ°μ λ°μ΅λλ€.
λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό μ‘°ννλ €λ©΄ cards.next_cursorκ°μ Query νλΌλ―Έν° cursorμ μ λ¬νκ³ APIλ₯Ό λ€μ νΈμΆν΄μΌ ν©λλ€.
μλ₯Ό λ€μ΄, μ 보λ₯Ό λΆλ¬μ¬ μΉ΄λ κ°μκ° 150κ°λΌλ©΄, λ¨Όμ APIλ₯Ό νΈμΆνμ¬ μΉ΄λ 100κ°μ μ 보μ cards.next_cursorκ°μ λ°μ΅λλ€.
κ·Έλ¦¬κ³ λμΌν APIλ₯Ό λ€μ νΈμΆν λ cards.next_cursorκ°μ Query νλΌλ―Έν° cursorλ‘ μ¬μ©νλ©΄ λλ¨Έμ§ 50κ°μ μ 보λ₯Ό λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μΌλ‘ cards.next_cursorκ°κ³Ό λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ λλ¨Έμ§ μΉ΄λ μ 보 μ‘°νλ₯Ό μμ²ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μ 1ν μμ²μ κ° BAppλΉ μΉ΄λ μ 보λ₯Ό μ΅λ 100κ°κΉμ§λ§ λ°νν©λλ€. BAppλ³ μΉ΄λκ° 100κ°λ₯Ό μ΄κ³Όν λ λλ¨Έμ§ μΉ΄λ μ 보κΉμ§ λ°μΌλ €λ©΄, μ λ°λ‘ νΈμΆν΄μΌ ν©λλ€. 101λ²μ§Έ μΉ΄λλΆν° μ‘°ννλ €λ©΄ bapps[i].cards_next_cursorλ₯Ό Query νλΌλ―Έν° cursorλ‘ μ¬μ©ν΄ μ νΈμΆν©λλ€.
μλ₯Ό λ€μ΄, BAppμ 2κ° κ°μ§κ³ μκ³ BApp1μ μΉ΄λ 150κ°, BApp2μ μΉ΄λ 200κ°κ° μμ λ μ νΈμΆνλ©΄ BApp1 μΉ΄λ 100κ°, BApp2 μΉ΄λ 100κ°μ μ 보λ§μ λ°μ΅λλ€. μΌλ‘ λ‘κ·ΈμΈ μ λ°μ access_tokenμ 보λ΄κ³ BAppλ³ μΉ΄λ μ 보 μ‘°νλ₯Ό μμ²ν΄μΌ ν©λλ€.
λ³Έ APIμ κ²½μ°, ν΄λ¦½μ μμ° λ¦¬μ€ν μ μ± λ³κ²½μ λ°λΌ μΌλΆ μλ‘μ΄ μΉ΄λλ μ‘°νκ° λΆκ°λ₯ν μλ μμ΅λλ€. λμ API μ¬μ©μ κΆμ₯ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
BApp1 λλ¨Έμ§ 50κ° μΉ΄λ μ 보λ₯Ό λ°μΌλ €λ©΄ Query νλΌλ―Έν° cursorμ bapps[0].cards_next_cursorκ°μΈ gKvkL1lPYv1P93dpE...λ₯Ό μ λ¬ν΄ μ νΈμΆν΄μΌ ν©λλ€.
μΌλ‘ gKvkL1lPYv1P93dpE...κ³Ό λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ BApp1 λλ¨Έμ§ μΉ΄λ 50κ° μ 보 μμ μ μμ²ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
BApp2 λλ¨Έμ§ μΉ΄λ 100κ° μ 보λ₯Ό λ°μΌλ €λ©΄ Query νλΌλ―Έν° cursorμ bapps[1].cards_next_cursorκ°μΈ Xrzed2Ot9LeEor...μ μ λ¬ν΄ μ νΈμΆν΄μΌ ν©λλ€. μΌλ‘ Xrzed2Ot9LeEor...κ³Ό λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ BApp2 λλ¨Έμ§ μΉ΄λ 100κ° μ 보 μμ μ μμ²ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
νμ΄μ§λ€μ΄μ
μΌλ‘ μΉ΄λ μ 보λ₯Ό 100κ°μ© νμΈνμ§ μκ³ ν λ²μ λͺ¨λ μΉ΄λ μ 보λ₯Ό λ°μΌλ €λ©΄ μΌλ‘ Query νλΌλ―Έν° isAll, Path νλΌλ―Έν° nft_id, λ‘κ·ΈμΈ μ λ°μ access_tokenμ Klip Partnersμ 보λ΄κ³ λͺ¨λ μΉ΄λ μ 보λ₯Ό μμ²ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μΉ΄λ μ λ³΄κ° μ μ μ‘°νλμλ€λ©΄ κ³μ μ΄ μ΄ BAppμμ μ°λ λͺ¨λ μΉ΄λ λͺ©λ‘κ³Ό μ 보λ₯Ό λ°μ΅λλ€.
Query νλΌλ―Έν°λ‘ cursor λλ isAll λ μ€ νλλ§ μ¬μ©ν΄μΌ ν©λλ€(isAllμ΄ falseμ΄λ©΄ cursorλ₯Ό μ¬μ©ν μ μμ΅λλ€).
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
ννΈλμ¬μμ μ
λ‘λν secure λ―Έλμ΄ νμΌ λͺ©λ‘μ μ‘°νν μ μμ΅λλ€. λ°νλλ νμΌ λͺ©λ‘ ννλ <uploaded_secure_url>/<uploaded_files[0]>?<uploaded_secure_query>μ΄λ©°, μ¬μ©νλ €λ©΄ Klip νμΌλ‘ λ¨Όμ λ¬ΈμνμκΈ° λ°λλλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
λ‘ Klip Partnersμ λ‘κ·ΈμΈ μ λ°μ access_token, send_info.json νμΌ, μ μ‘ν BApp μΉ΄λμ nft_idμ card_id(Path νλΌλ―Έν°)λ₯Ό 보λ΄κ³ νμ¬ κ³μ μ£Όμμ μλ μΉ΄λλ₯Ό λ€λ₯Έ μ¬λμ μ£Όμλ‘ μ μ‘νλλ‘ μμ²ν©λλ€.
EOAλ₯Ό κ°μ§ μ¬μ©μλΌλ©΄ λꡬλ μΉ΄λλ₯Ό μ μ‘λ°μ μ μμ΅λλ€.
send_info.json νμΌ μμλ μλμ κ°μ΅λλ€.
μ΄ νμΌμλ μΉ΄λ μ΄λ¦, pin, μΉ΄λλ₯Ό λ°λ μ¬λμ μ£Όμκ° λ΄κ²¨ μμ΅λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μ μ‘μ μ±κ³΅νλ©΄ μΉ΄λ μμ μ μ£Όμ, μ μ‘ μ€ν¨ νμ, μΉ΄λλ₯Ό μ μ‘ν νΈλμμ
ν΄μκ°μ λ°μ΅λλ€. μ μ‘μ μ±κ³΅νλ©΄ fail_count 0μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
λ‘ Klip Partnersμ λ‘κ·ΈμΈ μ λ°μ access_token, send_info.json νμΌ, μ μ‘ν BApp μΉ΄λμ nft_idμ card_id(Path νλΌλ―Έν°)λ₯Ό 보λ΄κ³ νμ¬ κ³μ μ£Όμμ μλ μΉ΄λλ₯Ό λ€λ₯Έ μ¬λμκ² μ μ‘νλλ‘ μμ²ν©λλ€.
Klip νμμ μ€λͺ κ³Ό μ νλ²νΈλ₯Ό μ¬μ©νμ¬ Klip νμμκ²λ§ μΉ΄λλ₯Ό μ μ‘ν©λλ€.
send_info.json νμΌ μμλ μλμ κ°μ΅λλ€.
μ΄ νμΌμλ μΉ΄λ μ΄λ¦, pin, μΉ΄λλ₯Ό λ°λ μ¬λμ΄ Klip νμμ κ°μ
μ μ¬μ©ν μ€λͺ
κ³Ό μ νλ²νΈκ° λ΄κ²¨ μμ΅λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
to_person νλΌλ―Έν°μ μ λ¬ν μ€λͺ
κ³Ό μ νλ²νΈλ‘ κ°μ
ν Klip νμμ΄ μλ€λ©΄ μ μ‘μ μ€ν¨ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μ μ‘μ μ±κ³΅νλ©΄ fail_count 0μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ κΈ°λ₯μ μ¬μ©νκΈ° μν΄μλ μΉ΄λ λ°κΈμ μν 컨νΈλνΈμμ μμ€ν¬λ‘ 컨νΈλνΈλ₯Ό μΉμΈνλ κ³Όμ μ΄ νμν©λλ€. μ¬μ© λμλ ν λ²λ§ μννλ©΄ λλ©° μ΄νμλ λ€μ μνν νμκ° μμ΅λλ€.
approve.json νμΌ μμλ μλμ κ°μ΅λλ€.
μ΄ νμΌμλ pin, contract_addressλ μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ μ£Όμ()κ° λ€μ΄κ°λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ μμ±μ μ±κ³΅νλ©΄ νΈλμμ
ν΄μκ°μ λ°μ΅λλ€. λ§μ½ pin νμΈμ μ€ν¨ν κ²½μ° fail_countμ 0λ³΄λ€ ν° κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ μ¬μ© λμ μ¬λΆλ₯Ό μ‘°νν μ μμ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ μμ±μ μ±κ³΅νλ©΄ approve νλμ true κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ μ μ‘μ Klip νμμκ² μΉ΄λλ₯Ό λ°λ‘ μ μ‘νμ§ μκ³ μΉ΄λ μ§κΈ λ§ν¬λ₯Ό ν΅ν΄μ μ μ‘νλ κΈ°λ₯μ λλ€. μμ€ν¬λ‘ μ μ‘ κΈ°λ₯μ νμ©νκΈ° μν΄μλ λ¨Όμ μΉ΄λ μ§κΈ λ§ν¬ μμ± APIλ₯Ό νΈμΆν΄μΌν©λλ€. κΈ°λ³Έμ μΌλ‘ 보μ ν μΉ΄λμ ννμ¬ μμ€ν¬λ‘ μμ±μ μμ²ν μ μμ΅λλ€. μμ€ν¬λ‘ μμ± ν ν΄λΉ μΉ΄λλ λ μ΄μ μΉ΄λ 보μ λͺ©λ‘μμ μ‘°νλμ§ μμ΅λλ€.
escrow_info.json νμΌ μμλ μλμ κ°μ΅λλ€.
μ΄ νμΌμλ pin, contract_addressλ μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ μ£Όμ(), μμ€ν¬λ‘ μ μ‘ν card_idμ λ°°μ΄μΈ card_idsκ° λ€μ΄κ°λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ μμ±μ μ±κ³΅νλ©΄ νΈλμμ
ν΄μκ°κ³Ό μΉ΄λ μ§κΈ λ§ν¬ κ·Έλ¦¬κ³ fail_count 0μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ μμ±μ μ±κ³΅νλ€λ©΄ νμ¬ μμ€ν¬λ‘ μ€μΈ μΉ΄λ μ 보λ₯Ό μ‘°νν μ μμ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
νμ¬ μμ€ν¬λ‘ μ€μΈ μΉ΄λλ₯Ό μ·¨μν μ μμ΅λλ€. μ·¨μλ μΉ΄λλ μΉ΄λ 보μ λͺ©λ‘μμ λ€μ νμΈν μ μμ΅λλ€.
cancel_info.json νμΌ μμλ μλμ κ°μ΅λλ€.
μ΄ νμΌμλ pin, contract_addressλ μΉ΄λλ₯Ό λ°νν μ€λ§νΈ 컨νΈλνΈ μ£Όμ(), μ·¨μν card_idμ λ°°μ΄μΈ card_idsκ° λ€μ΄κ°λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ€ν¬λ‘ μμ±μ μ±κ³΅νλ©΄ νΈλμμ
ν΄μκ°κ³Ό fail_count 0μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
νΈλμμ
μ²λ¦¬ κ²°κ³Όκ° λΈλ‘μ μ΅μ’
μ±κ³΅μΌλ‘ κΈ°λ‘λλμ§ μ¬λΆλ₯Ό μ‘°νν μ μμ΅λλ€. νΈλμμ
μμ² ν κ³§λ°λ‘ κ²°κ³Όλ₯Ό μ‘°ννλ κ²½μ° 4700: no transaction receipt μλ¬κ° λ°μν μ μμ΅λλ€. λλ΅ 2μ΄ μ΄μμ λλ μ΄λ₯Ό λκ³ μλ¬κ° λ¨μ§ μμ λκΉμ§ μν λ°λ³΅ νΈμΆνλ κ²μ κΆμ₯ν©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
λ‘ Klip Partnersμ old_password, new_password, λ‘κ·ΈμΈ μ λ°μ access_tokenμ 보λ΄κ³ μ΄μ λΉλ°λ²νΈμμ μλ‘μ΄ λΉλ°λ²νΈλ‘ κ΅μ²΄λ₯Ό μμ²ν©λλ€.
old_password, new_passwordλ κΈ°μ‘΄ λΉλ°λ²νΈ/μλ‘κ² μ¬μ©ν λΉλ°λ²νΈλ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
κΈ°μ‘΄ λΉλ°λ²νΈ/μλ‘κ² μ¬μ©ν λΉλ°λ²νΈλ 8~16μμ μλ¬Έ λμλ¬Έμ, μ«μ, νΉμλ¬Έμλ₯Ό μ‘°ν©ν string κ°μ λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μλ¬κ° λ°μνμ§ μμλ€λ©΄ μ΄μ λΉλ°λ²νΈκ° μ λΉλ°λ²νΈλ‘ κ΅μ²΄λ κ²μ λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μΌλ‘ Klip Partnersμ μ΄μ ν λ²νΈ, μλ‘μ΄ ν λ²νΈ, λ‘κ·ΈμΈ μ λ°μ access_tokenμ 보λ΄κ³ μλ‘μ΄ ν λ²νΈλ‘ ν λ²νΈ κ΅μ²΄λ₯Ό μμ²ν©λλ€.
old_pinκ³Ό new_pinμ κΈ°μ‘΄ ν λ²νΈ/μλ‘κ² μ¬μ©ν ν λ²νΈλ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
old_pinκ³Ό new_pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
κΈ°μ‘΄ ν λ²νΈ/μλ‘κ² μ¬μ©ν ν λ²νΈλ 6μ리 μ«μμ λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μλ¬κ° λ°μνμ§ μμλ€λ©΄ μ΄μ ν λ²νΈκ° μ ν λ²νΈλ‘ κ΅μ²΄λ κ²μ λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μ΄λ² λ¬μ ννΈλ κ³μ μΌλ‘ λ°νν μ΄ μΉ΄λ κ°μλ₯Ό μ‘°νν μ μμ΅λλ€. μ΄ κ°μ λ§€μ 1μΌμ 0μΌλ‘ μ΄κΈ°νλ©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
mint_count νλμ νμ¬κΉμ§ λ°νν μΉ΄λ κ°μ κ°μ λ°μ΅λλ€.
λ‘ Klip Partnersμ delete_info.json νμΌ, λ‘κ·ΈμΈ μ λ°μ access_tokenμ 보λ΄κ³ λ°νν μΉ΄λ μμ λ₯Ό μμ²ν©λλ€.
delete_info.json νμΌ μμλ μλμ κ°μ΅λλ€.
μ΄ νμΌμλ μμ ν μΉ΄λ ID, μΉ΄λλ₯Ό λ°νν μ£Όμ, ν λ²νΈκ° λ΄κ²¨ μμ΅λλ€.
pinμ ν λ²νΈ(Klip Partners νμ κ°μ
μ μ€μ ν 6μ리 μ«μ)λ₯Ό ν΄μ()ν 64μ리 Hex String κ°μ
λλ€.
pinμ νΈλμμ
μλͺ
μ κ°μΈ ν€ λμ μ¬μ©λ©λλ€.
μμ²μ΄ μ μ μ²λ¦¬λλ©΄ μλ κ°μ λ°μ΅λλ€.
μλ¬κ° λ°μνμ§ μμλ€λ©΄ μΉ΄λκ° μ μ μμ λ κ²μ λλ€. μΉ΄λκ° μ μ μμ λμλ€λ©΄ μΉ΄λ μμ νΈλμμ ν΄μκ°μ λ°μ΅λλ€.
λ°νν μΉ΄λλ§ μμ ν μ μμΌλ©°, λ€λ₯Έ μ¬λμκ² λ³΄λΈ μΉ΄λλ μμ ν μ μμ΅λλ€. μΉ΄λλ₯Ό μμ ν΄λ μΉ΄λ μ΄λ―Έμ§λ μμ λμ§ μμ΅λλ€.
μμ²μ΄ μ μ μ²λ¦¬λμ§ μμΌλ©΄ μλ κ°μ λ°μ΅λλ€.
μ΄ λ¬Έμ νΉμ Klipμ κ΄ν λ¬Έμλ μ λ°©λ¬Έν΄ λμμ λ°μΌμμμ€.
to_addressμ μμ 1κ°μ§λ¦¬ λ°°μ΄μ μ λ¬νλ©΄ 1λͺ
μκ²λ§ λ°νν©λλ€.
to_addressμ λ£μ μ μλ EOA μ£Όμ κ°μλ API νΈμΆ 1νλΉ μ΅λ 200κ°μ
λλ€.
sendableμ΄ TRUEμ΄λ©΄ μΉ΄λλ₯Ό λ°νλ°μ μ¬λμ λ°νλ°μ μΉ΄λλ₯Ό Klipμμ λ€λ₯Έ μ¬λμκ² μ μ‘ κ°λ₯ν©λλ€.
send_friend_onlyκ° TRUEμ΄λ©΄ μΉ΄λλ₯Ό λ°νλ°μ μ¬λμ λ°νλ°μ μΉ΄λλ₯Ό Klipμμ μΉ΄μΉ΄μ€ν‘ μΉκ΅¬μκ²λ§ μ μ‘ κ°λ₯ν©λλ€.
hashtags λ°°μ΄μ μμ κ°μλ μ΅λ 10κ°μ
λλ€. κ° μμλ μ΅λ 100κΈμμ
λλ€.
external_linkλ₯Ό μ§μ νλ©΄ Klip μΈλΆ λΈλΌμ°μ λ‘ μ°κ²°λλ URL μ£Όμλ₯Ό λ£μ μ μμ΅λλ€. μ΅λ 255μκΉμ§ κ°λ₯ν©λλ€.
qr_codeλ‘ μ¬μ©ν μ΄λ―Έμ§λ κ°λ‘ 400px μ΄μμ΄κ³ μνμ’μ° μ¬λ°±μ΄ μλ κ²μ κΆμ₯ν©λλ€.
bar_codeλ‘ μ¬μ©ν μ΄λ―Έμ§λ κ°λ‘ 400px μ΄μμ΄κ³ μνμ’μ° μ¬λ°±μ΄ μλ κ²μ κΆμ₯ν©λλ€.
attributesλ μΉ΄λμ κ³ μ ν μμ±μ trait_type/value ννλ‘ κ°μ§λ objectλ€μ λ°°μ΄μ
λλ€.
to_personμ μμ 1κ°μ§λ¦¬ λ°°μ΄μ μ λ¬νλ©΄ 1λͺ
μκ²λ§ λ°νν©λλ€.
to_personμ λ£μ μ μλ [μ€λͺ
, μ νλ²νΈ] κ°μλ API νΈμΆ 1νλΉ μ΅λ 200κ°μ
λλ€.
to_person νλΌλ―Έν°μ μ λ¬ν μ€λͺ
κ³Ό μ νλ²νΈλ‘ κ°μ
ν Klip νμμ΄ μλ€λ©΄ λ°νμ μ€ν¨ν©λλ€.
sendableμ΄ TRUEμ΄λ©΄ μΉ΄λλ₯Ό λ°νλ°μ μ¬λμ λ°νλ°μ μΉ΄λλ₯Ό Klipμμ λ€λ₯Έ μ¬λμκ² μ μ‘ κ°λ₯ν©λλ€.
send_friend_onlyκ° TRUEμ΄λ©΄ μΉ΄λλ₯Ό λ°νλ°μ μ¬λμ λ°νλ°μ μΉ΄λλ₯Ό Klipμμ μΉ΄μΉ΄μ€ν‘ μΉκ΅¬μκ²λ§ μ μ‘ κ°λ₯ν©λλ€.
hashtags λ°°μ΄μ μμ κ°μλ μ΅λ 10κ°μ
λλ€. κ° μμλ μ΅λ 100κΈμμ
λλ€.
external_linkλ₯Ό μ§μ νλ©΄ Klip μΈλΆ λΈλΌμ°μ λ‘ μ°κ²°λλ URL μ£Όμλ₯Ό λ£μ μ μμ΅λλ€. μ΅λ 255μκΉμ§ κ°λ₯ν©λλ€.
qr_codeλ‘ μ¬μ©ν μ΄λ―Έμ§λ κ°λ‘ 400px μ΄μμ΄κ³ μνμ’μ° μ¬λ°±μ΄ μλ κ²μ κΆμ₯ν©λλ€.
bar_codeλ‘ μ¬μ©ν μ΄λ―Έμ§λ κ°λ‘ 400px μ΄μμ΄κ³ μνμ’μ° μ¬λ°±μ΄ μλ κ²μ κΆμ₯ν©λλ€.
attributesλ μΉ΄λμ κ³ μ ν μμ±μ trait_type/value ννλ‘ κ°μ§λ objectλ€μ λ°°μ΄μ
λλ€.
nftμ bappμ νμ 1:1λ‘ λ§΅νλ©λλ€.
card_uriλ μΉ΄λ λ©νλ°μ΄ν°κ° λ΄κΈ΄ JSON νμΌμ΄ μλ URLμ
λλ€.
μΉ΄λ λ©νλ°μ΄ν°λ name, description, image, background_color, attributes λ± μΉ΄λλ₯Ό λ°νν λ μ μν μΉ΄λ κΈ°λ³Έ μ 보μ
λλ€.
cursorλ₯Ό μ¬μ©νλ©΄ Paginationμ μ¬μ©ν©λλ€.
1ν μμ²μ μ΅λ μΉ΄λ 100κ°μ μ 보λ₯Ό λ°μ΅λλ€.
μ 보λ₯Ό λΆλ¬μΈ μΉ΄λκ° 100κ°λ₯Ό μ΄κ³Ό μ λ€μ μΉ΄λ μ 보λ₯Ό λΆλ¬μ¬ μ μλ 컀μκ°μΈ next_cursorλ‘ λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό λ°μ΅λλ€.
λλ¨Έμ§ μΉ΄λ μ 보λ₯Ό λ°μΌλ €λ©΄ cursorμ μ΄μ νΈμΆμμ λ°μ next_cursorλ₯Ό λ£κ³ APIλ₯Ό λ€μ νΈμΆν©λλ€.
nft_idλ Get Card Information by BApp APIλ‘ λ°μ BApp μ 보μμ νμΈν©λλ€.
//Klip Partners λ‘κ·ΈμΈ
curl -X POST "https://api.klipwallet.com/v2/partner/auth" \
-d '{"email":"[email protected]", "password":"C01069C9ABB6EA7DA49AE418A24BBEF3AD67170DDCD20AC7C76084A5A85E4057"}' \
-H "Content-Type: application/json"{
"email": "[email protected]",
"klaytn_address":0xdc6AE5861a73d852bd3cdD84a4BA7f598A5160F3,
"contract_address": "0xc94770007dda54cF92009BFF0dE90c06F603a09f",
"name": "Ray Kim",
"phone": "01077777777",
"service_name": "ννμ§μλλ 볼루μ
",
"access_token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJI...",
"status" : 10,
"mint_limit": 1000,
"mint_count": 1,
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."not found user info in db": κ³μ μ λ³΄κ° μ‘΄μ¬νμ§ μμ΅λλ€."not yet approved": μμ§ κ°μ
μ΄ μΉμΈλμ§ μμμ΅λλ€."invalid password": λΉλ°λ²νΈκ° μΌμΉνμ§ μμ΅λλ€.λ‘κ·ΈμΈν μ μμ΅λλ€.//Klip Partnersμ μΉ΄λ μ΄λ―Έμ§ μ
λ‘λ
curl -X POST "https://api.klipwallet.com/v2/wallet/image" \
-F upload=@./imagefile.png \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: multipart/form-data"{"image": "https://path_to_image/image.png"}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μ΄λ―Έμ§λ₯Ό μ
λ‘λνμ§ λͺ»νμ΅λλ€.//μΉ΄λ λ°ννκΈ°
curl -X POST "https://api.klipwallet.com/v2/wallet/mint" \
-d @./mint_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//mint_info.json νμΌ λ΄μ© μμ
{
"pin": "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
"to_address": ["0x01ea07D1258c106FFD3197721a838F02408ea809",
"0xE2d12bE9E570AE58277d6872B001fE9dF94D1531",
"0xb1764B96da889Cc2F043025aa368517C80e86795"],
"contract_address": "0xbad6444e1f84af055c22281d4ac7d75bde2ddec8",
"name": "Magic Sword",
"description" : "κ²μ λ΄μμ λ§λ² μμ±μ λ λ§κ²μ μνν μ μμ΅λλ€.",
"image": "https://path_to_image/image.png",
"animation_url": "https://path_to_video/video.mp4",
"background_color" : "#ae312e",
"sendable": true,
"send_friend_only": true,
"group_name": "Ground X Magic Game",
"group_icon": "https://path_to_image/image.png",
"hashtags": ["Game","groundX","Magic"],
"layout": "vertical",
"external_link": "https://path_to_ext_link",
"qr_code": "https://path_to_image/qr_image.png",
"bar_code": "https://path_to_image/bar_image.png",
"attributes" : [
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
],
"secure" : {
"bar_code" : "1234 ABCD 5678 EFGH 90IJ",
"qr_code" : "https://your-domain.com?key=1234",
"attributes" : [
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]
},
"status_url" : "https://your-domain.com?key=1234"
}{
"hash": "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97"
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μ μμ μΈ μΉ΄λ λ°νμ μ€ν¨νμ΅λλ€.
μΌλΆ μΉ΄λλ λ°νλμμ μ μμΌλ β보μ μΉ΄λ λͺ©λ‘β μμ 보μ λͺ©λ‘μ νμΈνμμμ€.//μΉ΄λ λ°ννκΈ°
curl -X POST "https://api.klipwallet.com/v2/wallet/mint/person" \
-d @./mint_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//mint_info.json νμΌ λ΄μ© μμ
{
"pin": "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
"to_person": [["νκΈΈλ", "010-1111-2222"], ["κΉμΆν₯", "010-3333-4444"]]
"contract_address": "0xbad6444e1f84af055c22281d4ac7d75bde2ddec8",
"name": "Magic Sword",
"description" : "Summons a magic sword that has magical properties and effects in the game.",
"image": "https://path_to_image/image.png",
"animation_url": "https://path_to_video/video.mp4",
"background_color" : "#ae312e",
"sendable": true,
"send_friend_only": true,
"group_name": "Ground X Magic Game",
"group_icon": "https://path_to_image/image.png",
"hashtags": ["Game","groundX","Magic"],
"layout": "vertical",
"external_link": "https://path_to_ext_link",
"qr_code": "https://path_to_image/image.png",
"bar_code": "https://path_to_image/bar_image.png",
"attributes" : [
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
],
"secure" : {
"bar_code" : "1234 ABCD 5678 EFGH 90IJ",
"qr_code" : "https://your-domain.com?key=1234",
"attributes" : [
{
"trait_type": "Sword",
"value": "Iron Short Sword"
},
{
"trait_type": "Magic Type",
"value": "Fire"
},
{
"trait_type": "Sword Level",
"value": "5"
},
{
"trait_type": "Magic Level",
"value": "2"
}
]
},
"status_url" : "https://your-domain.com?key=1234"
}{
"hash": "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97",
"result": [["νκΈΈλ", "010-1111-2222", "success", ""], ["κΉμΆν₯", "010-3333-4444", "fail", "phone number does not exist"], ...]
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μ μμ μΈ μΉ΄λ λ°νμ μ€ν¨νμ΅λλ€.
μΌλΆ μΉ΄λλ λ°νλμμ μ μμΌλ β보μ μΉ΄λ λͺ©λ‘β μμ 보μ λͺ©λ‘μ νμΈνμμμ€.//Klip Partnersμ μΉ΄λ λμμ μ
λ‘λ
curl -X POST "https://api.klipwallet.com/v2/wallet/nftResource" \
-F upload=@./video.mp4 \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: multipart/form-data"{"url": "https://path_to_video/video.mp4"}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.νμΌμ μ
λ‘λνμ§ λͺ»νμ΅λλ€.//Klip Partnersμμ secure λ―Έλμ΄λ₯Ό μ§μ μ
λ‘λ
curl -X POST "https://api.klipwallet.com/v2/wallet/nftResource/secure" \
-F upload=@./file.mp4 \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: multipart/form-data"{"filename": "{uuid}.{extension}"}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."upload animation file limit exceeded": λμμ νμΌμ κ²½μ° μ νλ ν¬κΈ° 10MiBλ₯Ό λμμ΅λλ€. νμΌ ν¬κΈ°λ₯Ό λ€μ νμΈνμμμ€."upload animation file extension is not support": μ§μνμ§ μλ λμμ ν¬λ§·μ
λλ€.νμΌμ μ
λ‘λνμ§ λͺ»νμ΅λλ€.//Get Card Information By BApp
curl "https://api.klipwallet.com/v2/wallet/bapp" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//BApp λͺ©λ‘κ³Ό BAppλ³ μΉ΄λ μ 보 μμ
{
"bapps": [
{
"id": 2,
"name": "bapp2",
"bapp_img": "/img/bapp-icon2.svg",
"category_id": 2,
"nft_order_no": 1,
"summary": "summary",
"card_count": 10,
"nft_id": 52,
"cards": [
{
"created_at": 1580300503,
"updated_at": 1580300503,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 18,
"card_uri": "https://...",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
{
"created_at": 1580300504,
"updated_at": 1580300504,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 19,
"card_uri": "https://...",
"transaction_hash": "0x8814f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
{
"created_at": 1580300505,
"updated_at": 1580300505,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 20,
"card_uri": "https://...",
"transaction_hash": "0x9254f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"cards_next_cursor": ""
},
{
"id": 3,
"name": "bapp3",
"bapp_img": "/img/bapp-icon3.svg",
"category_id": 2,
"nft_order_no": 2,
"summary": "summary",
"card_count": 10,
"nft_id": 55,
"cards": [
{
"created_at": 1580300511,
"updated_at": 1580300511,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 5,
"card_uri": "https://...",
"transaction_hash": "0x1a54f10f73468ea85c84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"cards_next_cursor": ""
},
],
"next_cursor": ""
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.BAppλ³λ‘ 보μ ν μΉ΄λ λͺ©λ‘μ μ‘°ννμ§ λͺ»νμ΅λλ€.//Get Card Information - '52' is the `nft_id` of our interest.
curl "https://api.klipwallet.com/v2/wallet/nft/52" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//μΉ΄λ μ 보λ₯Ό λ°μ μμ.
{
"name": "conan",
"symbol_img": "",
"cards": [
{
"created_at": 1580300501,
"updated_at": 1580300501,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 1,
"card_uri": "https://...",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
{
"created_at": 1580300502,
"updated_at": 1580300502,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 100,
"card_uri": "https://...",
"transaction_hash": "0x9254f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"next_cursor": "mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL",
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ 보λ₯Ό μ‘°ννμ§ λͺ»νμ΅λλ€.//Get Card Information, cards.next_cursor κ°μ cursorλ‘ μ¬μ©
curl "https://api.klipwallet.com/v2/wallet/nft/52?cursor=mrzedXOE9OeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//cursorλ₯Ό μ¬μ©ν΄ λλ¨Έμ§ 50κ° μΉ΄λ μ 보λ₯Ό λ°μ μμ.
{
"name": "conan",
"symbol_img": "",
"cards": [
{
"created_at": 1580300503,
"updated_at": 1580300503,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 101,
"card_uri": "https://...",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
{
"created_at": 1580300515,
"updated_at": 1580300515,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 150,
"card_uri": "https://...",
"transaction_hash": "0x9254f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"next_cursor": "",
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ 보λ₯Ό μ‘°ννμ§ λͺ»νμ΅λλ€.//Get Card Information By BApp
curl "https://api.klipwallet.com/v2/wallet/bapp" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//BApp1μ μΉ΄λ 150κ°, BApp2λ μΉ΄λ 200κ° λ³΄μ μ Get Card Information By BApp κ²°κ³Ό μμ
{
"bapps": [
{
"id": 1,
"name": "bapp1",
"bapp_img": "/img/bapp-icon1.svg",
"category_id": 2,
"nft_order_no": 1,
"summary": "summary",
"card_count": 150,
"nft_id": 60,
"cards": [
{
"created_at": 1580300503,
"updated_at": 1580300503,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 1,
"card_uri": "https://...",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
{
"created_at": 1580300505,
"updated_at": 1580300505,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 100,
"card_uri": "https://...",
"transaction_hash": "0x9254f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"cards_next_cursor": "gKvkL1lPYv1P93dpEWgaBzrq7XZ4LwjpgNe39AH9Dt3C1iWkubJtGotkrsQs4qSwdIJMHr3HKrhlCqJupwToWCd0T55IKhLzARM60N5xAGJQbKomeDkVl2O8WxMB0GQ9"
},
{
"id": 2,
"name": "bapp2",
"bapp_img": "/img/bapp-icon2.svg",
"category_id": 2,
"nft_order_no": 2,
"summary": "summary",
"card_count": 200,
"nft_id": 61,
"cards": [
{
"created_at": 1580300511,
"updated_at": 1580300511,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 1,
"card_uri": "https://...",
"transaction_hash": "0x1a54f10f73468ea85c84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
{
"created_at": 1580300515,
"updated_at": 1580300515,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 100,
"card_uri": "https://...",
"transaction_hash": "0x3t54f10f73468ea85c84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"cards_next_cursor": "Xrzed2Ot9LeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL"
},
],
"next_cursor": ""
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.BAppλ³λ‘ 보μ ν μΉ΄λ λͺ©λ‘μ μ‘°ννμ§ λͺ»νμ΅λλ€.//BApp 1 λλ¨Έμ§ μΉ΄λ μ 보 μμ μμ
//Get Card Information, bapps[0].cards_next_cursorκ°μ cursorλ‘ μ¬μ©
curl "https://api.klipwallet.com/v2/wallet/nft/60?cursor=gKvkL1lPYv1P93dpEWgaBzrq7XZ4LwjpgNe39AH9Dt3C1iWkubJtGotkrsQs4qSwdIJMHr3HKrhlCqJupwToWCd0T55IKhLzARM60N5xAGJQbKomeDkVl2O8WxMB0GQ9" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//cursorλ₯Ό μ¬μ©ν΄ λλ¨Έμ§ 50κ° μΉ΄λ μ 보λ₯Ό λ°μ μμ.
{
"name": "ray1",
"symbol_img": "",
"cards": [
{
"created_at": 1580300503,
"updated_at": 1580300503,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 101,
"card_uri": "https://...",
"transaction_hash": "0x9e54f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
{
"created_at": 1580300515,
"updated_at": 1580300515,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 150,
"card_uri": "https://...",
"transaction_hash": "0x92d4f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"next_cursor": "",
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ 보λ₯Ό μ‘°ννμ§ λͺ»νμ΅λλ€.//BApp 2 λλ¨Έμ§ μΉ΄λ μ 보 μμ μμ
//Get Card Information, bapps[1].cards_next_cursorκ°μ cursorλ‘ μ¬μ©
curl "https://api.klipwallet.com/v2/wallet/nft/61?cursor=Xrzed2Ot9LeEorkAvwQXB7JdVg4LP1Rzze2kLQFxLU4C8iMOhOVulzIr5iesZoie9uv9h87UNXsWCKdhqYszXFWLsYYI7h125Rx8p56qlMKaZ20YbNW3zDGmNBJKM1wL" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//cursorλ₯Ό μ¬μ©ν΄ λλ¨Έμ§ 100κ° μΉ΄λ μ 보λ₯Ό λ°μ μμ.
{
"name": "ray2",
"symbol_img": "",
"cards": [
{
"created_at": 1580300505,
"updated_at": 1580300505,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 101,
"card_uri": "https://...",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
{
"created_at": 1580300520,
"updated_at": 1580300520,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 200,
"card_uri": "https://...",
"transaction_hash": "0x9254f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"next_cursor": "",
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ 보λ₯Ό μ‘°ννμ§ λͺ»νμ΅λλ€.//Get All Card Information - '52' is the `nft_id` of our interest.
curl "https://api.klipwallet.com/v2/wallet/nft/52?isAll=true" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//μΉ΄λ μ 보λ₯Ό λ°μ μμ.
{
"name": "conan",
"symbol_img": "",
"cards": [
{
"created_at": 1580300501,
"updated_at": 1580300501,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 1,
"card_uri": "https://...",
"transaction_hash": "0x8754f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
...
{
"created_at": 1580300502,
"updated_at": 1580300502,
"owner": "0xa3b7aa3a3c8a08bd22f77932368e2043e7ffe263",
"sender": "0x0000000000000000000000000000000000000000",
"card_id": 100,
"card_uri": "https://...",
"transaction_hash": "0x9254f10f73468ea85e84d9e29c2a864fc574c1e57675bfc70b5459d82477a91f"
},
],
"next_cursor": "",
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ 보λ₯Ό μ‘°ννμ§ λͺ»νμ΅λλ€.//
curl "https://klipmedia/../uploaded/{uuid-1}.mp4?Base64PolicyQuery.." \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//μ
λ‘λλ νμΌμ΄ μλ κ²½μ°
{
"uploaded_files" : ["{uuid-1}.mp4", "{uuid-2}.mp4"]
"uploaded_secure_url" : "https://klipmedia/../uploaded"
"uploaded_secure_query" : "Base64PolicyQuery"
}
// μ
λ‘λλ νμΌμ΄ μλ κ²½μ°
{
"uploaded_files" : []
"uploaded_secure_url" : ""
"uploaded_secure_query" : ""
}curl -X POST "https://api.klipwallet.com/v2/wallet/nft/50/1/send" \
-d @./send_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//κ²μ μμ΄ν
μΉ΄λμΈ λ§λ² κ² μΉ΄λλ₯Ό 보λ΄κΈ° μν send_info.json νμΌ λ΄μ© μμ
{
"pin": "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
"to_address": "0xb1764B96da889Cc2F043025aa368517C80e86795",
"card_name": "Magic Sword"
}{ to_address: "0xb1764B96da889Cc2F043025aa368517C80e86795",
fail_count: 0,
tx_hash: "0x7cf09602cebb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97" }"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/wallet/nft/50/1/send/person" \
-d @./send_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//κ²μ μμ΄ν
μΉ΄λμΈ λ§λ² κ² μΉ΄λλ₯Ό 보λ΄κΈ° μν send_info.json νμΌ λ΄μ© μμ
{
"pin": "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
"to_person": ["νκΈΈλ", "010-1111-2222"]
"card_name": "Magic Sword"
}{fail_count: 0, tx_hash: "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97"}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/escrow/approve" \
-d @./approve_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"pin": "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
"contract_address": "0x6E3571F451fc960Ea69b532006A2c8683fF8922F"
}{
"tx_hash":"0x831e207b0b951127646b8f7d7eded55903cecb29fe794e17a2d93f457b7158a4",
"fail_count":0,
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X GET "https://api.klipwallet.com/v2/escrow/approve?contract_address=0x6E3571F451fc960Ea69b532006A2c8683fF8922F" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"approve":true
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X POST "https://api.klipwallet.com/v2/escrow" \
-d @./escrow_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"pin": "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
"contract_address": "0x6E3571F451fc960Ea69b532006A2c8683fF8922F"
"card_ids": [15277, 15279],
}{
"tx_hash":"0x5082643fc9799badeea30d243e3c5aba46dfd0eedf623f6698c8f30c36618c6c",
"fail_count":0,
"claim_links": ["https://klipwallet.com/?target=/claimCard/64/15277?claimKey=234b78b5d03a395f440b3b9acf784959a4f5f0a7f6c558ef6a2d22f8fee25a79", "https://klipwallet.com/?target=/claimCard/64/15279?claimKey=8fdaae3e92208aeb19753edff72abddacfd4d4f36fe871c77eb79f061537e415"]
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X GET "https://api.klipwallet.com/v2/escrow?contract_address=0x6E3571F451fc960Ea69b532006A2c8683fF8922F&cursor=" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"name":"ννΈλμ€ λ°ν μΉ΄λ",
"symbol_img":"https://...",
"cards":[{"created_at":1605921829,"updated_at":1606057801,"owner":"0x7998d102b2938532bc068300517d4db783f326c2","sender":"0xc95e3a887cb2108d4a19e2a9bcbe0827367372fe","card_id":15279,"card_uri":"https://klip-media.klaytn.com/card_asset/20295/7de0f5cc-6624-487f-adb9-4bfa86d38992.json","transaction_hash":"0x5082643fc9799badeea30d243e3c5aba46dfd0eedf623f6698c8f30c36618c6c"},{"created_at":1605921668,"updated_at":1606057801,"owner":"0x7998d102b2938532bc068300517d4db783f326c2","sender":"0xc95e3a887cb2108d4a19e2a9bcbe0827367372fe","card_id":15277,"card_uri":"https://klip-media.klaytn.com/card_asset/20295/e18133b8-aedc-4daf-aa2a-87654beabadf.json","transaction_hash":"0x5082643fc9799badeea30d243e3c5aba46dfd0eedf623f6698c8f30c36618c6c"}],
"next_cursor":""
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X DELETE "https://api.klipwallet.com/v2/escrow" \
-d @./cancel_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"pin": "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
"contract_address": "0x6E3571F451fc960Ea69b532006A2c8683fF8922F"
"card_ids": [15277, 15279],
}{
"tx_hash":"0x831e207b0b951127646b8f7d7eded55903cecb29fe794e17a2d93f457b7158a4",
"fail_count":0,
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μ μ‘μ μ€ν¨νμ΅λλ€.curl -X GET "https://api.klipwallet.com/v2/wallet/receipt?tx_hash=0x880a45d3c482c7d794c2e7b7dbdc9e933a68f4a1f3d978d582ba9f9ebd1f9e72" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"success": true
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."no transaction receipt": νΈλμμ
ν΄μκ° μ‘΄μ¬νμ§ μμ΅λλ€. μμ§ νΈλμμ
μ΄ μ²λ¦¬λμ§ μμκ±°λ μλͺ»λ νΈλμμ
ν΄μ κ°μ
λλ€.curl -X PUT "https://api.klipwallet.com/v2/partner/?opt=password" \
-d '{"old_password":"HASHED_OLD_PASSWORD", "new_password":"HASHED_NEW_PASSWORD"}' \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."invalid password": λΉλ°λ²νΈκ° μΌμΉνμ§ μμ΅λλ€.λΉλ°λ²νΈ λ³κ²½μ μ€ν¨νμ΅λλ€.curl -X PUT "https://api.klipwallet.com/v2/partner/pin" \
-d '{"old_pin":"HASHED_OLD_PIN_NUMBER", "new_pin":"HASHED_NEW_PIN_NUMBER"}' \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€."exceed pin code error count": ν λ²νΈ μ
λ ₯ μ€λ₯ νμκ° μ§μ λ νλλ₯Ό μ΄κ³Όνμμ΅λλ€."invalid pin code": κΈ°μ‘΄ ν λ²νΈκ° μΌμΉνμ§ μμ΅λλ€.ν λ²νΈλ₯Ό λ³κ²½νμ§ λͺ»νμ΅λλ€.curl -X GET "https://api.klipwallet.com/v2/wallet/mint/count" \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"{
"mint_count": 10
}curl -X DELETE "https://api.klipwallet.com/v2/wallet/nft" \
-d @./delete_info.json \
-H "Authorization: ACCESS_TOKEN" -H "Content-Type: application/json"//delete_info.json νμΌ λ΄μ© μμ
{
pin: "91B4D142823F7D20C5F08DF69122DE43F35F057A988D9619F6D3138485C9A203",
card_id: 12,
contract_address: "0xbad6444e1f84af055c22281d4ac7d75bde2ddec8"
}{
"hash": "0x2d26f602cfbb4c662931592bf2c4ee18d29f09683be5b9e8d589ff935fca0b97"
}"bad request": μλͺ»λ μμ²μ
λλ€. Request νλΌλ―Έν°λ₯Ό λ€μ νμΈνμμμ€.μΉ΄λ μμ μ μ€ν¨νμμ΅λλ€. μμ μ κ΄λ ¨ν΄ μ νν μ 보λ₯Ό νμΈνλ €λ©΄ 보μ μΉ΄λλ₯Ό μ‘°ννμμμ€.