การแปลภาษาไทยนี้อาจไม่ถูกต้อง 100% โปรดอ้างอิงจากข้อมูลต้นฉบับได้ที่
[api.md](/api.md)
# Enka.Network - API
## เนื้อหา
- [เริ่มต้นการใช้งาน](#เริ่มต้นการใช้งาน)
- [โครงสร้างข้อมูล](#โครงสร้างข้อมูล)
- [คำนิยาม](#คำนิยาม)
- [ไอคอน และรูปภาพ](#ไอคอน-และรูปภาพ)
- [ภาษา](#ภาษา)
## เริ่มต้นการใช้งาน
คุณสามารถใช้ Wrapper ที่ถูกสร้างขึ้นโดยคนอื่น หรือใช้ API โดยตรงได้ ซึ่งเป็นเรื่องที่ง่ายมาก ดังนั้นจึงเป็นเรื่องที่ไม่ใช่ยากเลยที่จะต้องจัดข้อมูลหรือ Logic ของคุณโดยจากข้อมูลตอบกลับ โดยการท้ายที่ยิ่งใหญ่ที่สุดก็คือการสำรวจข้อมูลที่ขุดขึ้นมาและการแนบข้อมูลส่งคืนด้วยวิธีถูกต้อง
โปรดดู [Wrappers](#wrappers) สำหรับภาษาที่คุณต้องการ
## ก่อนที่คุณจะส่งข้อมูล
กฏของการใช้งาน API มีอยู่ 3 ข้อ:
1. โปรดอย่าแยก UIDs หรือพยามที่จะส่งข้อมูลเข้าฐานข้อมูลเป็นจำนวนมาก เนื่องจากมี UIDs เป็นจำนวนมาก และ API นี้ไม่มีความสามารถที่จะกระทำข้างต้นได้
2. โปรดกำหนด `User-Agent` ไว้ที่ Header ของ requests เพื่อให้สามารถติดตามและให้ความช่วยเหลือในสิ่งที่เธอต้องการ
3. ใน API นี้มีการจำกัดอัตราแบบ Dynamic บน UID - ถ้าหาก request ของคุณเร็ว คุณจะได้พบกับเวลาตอบกลับที่ช้า และส่งกลับมาด้วย 429 code นั้นหมายความว่าต้องลดความเร็วของการ request หรือติดต่อเราเพื่อให้เพิ่ม ratelimits ให้คุณ แต่ในกรณีส่วนใหญ่นั้นไม่มีความจำเป็นและเกิดจาก code ที่ส่งมานั้นไม่มีประสิทธิภาพมากพอ
4. ในทุก UID request นั้นจะได้รับ `ttl` field - field นี้คือ "จำนวนวินาทีในการแสดงตู้ Showcase ในครั้งถัดไปจาก UID นี้ " จนกว่าจะหมด โดย endpoint จะส่งคืนข้อมูลที่แคชไว้ แต่คุณจะยังคงใช้ ratelimit ของคุณหากคุณกดซ้ำหลายครั้ง โปรดลอง cache ข้อมูลหลังจากหมดเวลาของ `ttl` หรือ prevent requests ไปยัง UID จนกว่า `ttl` จะหมด เราแนะนำให้ใช้ Redis สำหรับสิ่งนี้
หากคุณประสบปัญหาในการทำงานเกี่ยวข้องกับข้อมูล [เซิร์ฟเวอร์ Discord](https://discord.gg/PcSZr5sbn3) เพื่อขอความช่วยเหลือ
## รายการ API
### UID endpoints
#### รับข้อมูลตู้ Showcase โดยข้อมูลผู้เล่นแบบเต็ม
> https://enka.network/api/uid/618285856/
การตอบสนองจะมี `playerInfo` และ `avatarInfoList` `playerInfo` เป็นข้อมูลพื้นฐานเกี่ยวกับบัญชีเกม หากไม่มี `avatarInfoList` แสดงว่า Showcase ของบัญชีนี้ถูกปิดหรือไม่มีตัวละคร
#### รับข้อมูลรายละเอียดข้อมูลผู้เล่นเท่านั้น
> https://enka.network/api/uid/618285856/?info
การแนบ `?info` ไปกับคำขอ คุณกำลังร้องขอเฉพาะ `playerInfo` คำขอหลักพยายามรับ `avatarInfoList` เสมอเช่นกัน หากคุณต้องการเพียง `playerInfo` โปรดใช้จุดสิ้นสุดนี้ - มันจะเร็วกว่าการรับข้อมูลทั้งหมด
นอกจากนี้คำขอทั้งสองจะมี object `owner` หาก:
1. ผู้ใช้มีบัญชีบนเว็บไซต์
2. ผู้ใช้เพิ่ม UID ลงในโปรไฟล์
3. ผู้ใช้ได้ทำการ verified บัญชี
4. ผู้ใช้ตั้งค่าการมองเห็นเป็น "สาธารณะ"
ข้อมูลเพิ่มเติมเกี่ยวกับบัญชีผู้ใช้ด้านล่าง
#### HTTP response codes
โปรดให้มั่นใจว่าคุณได้ Handle สิ่งเล่านี้ในแอพของคุณอย่างเหมาะสม
```
400 = รูปแบบ UID ไม่ถูกต้อง
404 = ไม่พบผู้เล่น (เซิฟ MHY บอกแบบนี้อ่ะนะ)
424 = บำรุงรักษาเกมส์ / ทุกอย่างจะพังลงหลังจากอัพเดตตัวเกมส์
429 = ถูกจำกัด (ทั้งเซิฟของฉันและเซิฟ MHY)
500 = ข้อผิดพลาดทั่วไป
503 = ฉันเมามากมาย
```
### Endpoint โปรไฟล์
สามารถสร้างบัญชี (โปรไฟล์) บนเว็บไซต์และแนบบัญชีที่มีหลาย ๆ เกม จากนั้น ผู้ใช้จะต้องยืนยันว่าบัญชีนั้นเป็นของพวกเขาผ่านรหัสยืนยันที่อยู่ในลายเซ็น วิธีนี้ทำให้เรามั่นใจได้ว่าบัญชีนั้นเป็นของพวกเขา
ผู้ใช้สามารถสร้าง "snapshot" ภายใต้ชื่อที่กำหนดเอง ซึ่งเรียกว่า "saved builds"
> https://dev.enka.network/api/profile/Algoinde/
รับข้อมูลผู้ใช้
> https://dev.enka.network/api/profile/Algoinde/hoyos/
รับรายการ "hoyos" - บัญชี Genshin และข้อมูลเมตาของพวกเขา วิธีนี้ส่งคืนเฉพาะบัญชีที่ `ยืนยันแล้ว` และ `สาธารณะ` เท่านั้น (ผู้ใช้สามารถซ่อนบัญชีได้ บัญชีที่ไม่ได้รับการยืนยันจะถูกซ่อนโดยค่าเริ่มต้น) แต่ละคีย์ในการตอบกลับคือตัวระบุเฉพาะของ hoyo ซึ่งคุณต้องใช้สำหรับคำขอที่ตามมาเพื่อรับข้อมูลตัวละคร/builds information
> https://dev.enka.network/api/profile/Algoinde/hoyos/4Wjv2e/
ส่งคืนข้อมูลเมตาสำหรับ single hoyo
> https://dev.enka.network/api/profile/Algoinde/hoyos/4Wjv2e/builds/
ส่งคืน saved build สำหรับ hoyo ที่กำหนด นี่คือออบเจ็กต์ของอาร์เรย์ โดยที่คีย์คือ `avatarId` ของตัวละคร และออบเจ็กต์ในอาร์เรย์เป็นโครงสร้างที่แตกต่างกันสำหรับตัวละครที่กำหนด โดยไม่เรียงลำดับเฉพาะเจาะจง (แต่พวกมันมีฟิลด์ `order` ที่คุณต้องเรียงลำดับสำหรับ แสดง).
หากการ build มี `live: true` แสดงว่าไม่ใช่การ build ที่ "บันทึกไว้" แต่เป็นเพียงงานสร้างที่ดึงมาจากงานแสดงเมื่อพวกเขาคลิก "รีเฟรช" เมื่อรีเฟรช build `live` เก่าทั้งหมดจะหายไปและสร้างใหม่ มีเพียงผู้ใช้เท่านั้นที่ตัดสินใจว่าจะทำการรีเฟรชเมื่อใด - ข้อมูลนี้จะไม่เป็นปัจจุบัน
ตามที่ระบุไว้ใน [UID endpoints](#uid-endpoints) เมื่อคุณส่งคำขอ UID คุณจะได้รับวัตถุ `owner` คุณสามารถสร้าง URL โดยใช้ฟิลด์เหล่านี้ในวัตถุ:
`https://dev.enka.network/api/profile/{owner.username}/hoyos/{owner.hash}/builds/`
## โครงสร้างข้อมูล
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| [playerInfo](#playerinfo) | ข้อมูลโปรไฟล์ |
| [avatarInfoList](#avatarinfolist) | ลิสข้อมูลรายละเอียดของหน้าตู้ตัวละคร |
### playerInfo
สำหรับข้อมูลเบื้องต้นของตัวละครโดยไอดีนั้น, ไปที่ [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json).
สำหรับข้อมูลเพิ่มเติม ตรวจสอบได้ที่ [Characters Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarExcelConfigData.json).
| ชื่อ | คำอธิบาย |
| :--- | :--------- |
| nickname | ชื่อเล่นของผู้เล่น |
| signature | ลายเซ็นโปรไฟล์ |
| worldLevel | ระดับโลกของผู้เล่น |
| namecardId | เลขนามบัตร |
| finishAchievementNum | จำนวนความสำเร็จที่ได้รับ |
| towerFloorIndex | ชั้น Abyss |
| towerLevelIndex | ห้อง Abyss |
| [showAvatarInfoList](#showavatarinfolist) | ลิสไอดีตัวละครและเลเวล |
| showNameCardIdList | ลิสนามบัตร |
| profilePicture.avatarID | ไอดีตัวละครของรูปโปรไฟล์ |
#### showAvatarInfoList
| ชื่อ | คำอธิบาย |
| :--- | :--------- |
| avatarId |ไอดีตัวละคร |
| level | เลเวลตัวละคร |
| costumeId | ไอดีชุดคอสตูมของตัวละคร ตรวจสอบได้ที่ `"Costumes"` ใน [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json) |
### avatarInfoList
สำหรับข้อมูลเบื้องต้นของตัวละครโดยไอดีนั้น, ไปที่ [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json).
สำหรับข้อมูลเพิ่มเติม ตรวจสอบได้ที่ [Characters Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarExcelConfigData.json).
| ชื่อ | คำอธิบาย |
| :--- |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| avatarID | ไอดีตัวละคร |
| talentIdList | ลำดับกลุ่มดาว
หากเป็น 0 ก็คือไม่มีข้อมูล |
| [propMap](#propmap) | คุณสมบัติของตัวละคร |
| fightPropMap -> `{id: value}` | ข้อมูลตัวละคร
โปรดตรวจสอบได้ที่ [คำนิยามสำหรับไอดี](#fightprop) |
| skillDepotId | เซ็ทไอดีสกิลตัวละคร
[Skills Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarSkillDepotExcelConfigData.json) -> `"id"` |
| inherentProudSkillList | ระดับการปลดล็อกพรรสวรรค์
[Skills Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarSkillDepotExcelConfigData.json) -> `"inherentProudSkillOpens"` |
| skillLevelMap -> `{skill_id: level}`| เลเวลพรรสวรรค์
[Skills Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/AvatarSkillDepotExcelConfigData.json) -> `"inherentProudSkillOpens"` |
| [equipList](#equiplist) | รายชื่ออาวุธและอาติแฟส |
| fetterInfo.expLevel | เลเวลความประทับใจของตัวละคร |
#### propMap
| ชื่อ | คำอธิบาย |
| :--- | :--------- |
| type | ไอดีชนิดคุณสมบัติ ตรวจสอบได้ที่ [Definitions for IDs](#prop) |
| ival | ไม่ต้องสนใจ |
| val | ค่าคุณสมบัติ |
#### equipList
| ชื่อ | คำอธิบาย |
| :--- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| itemId | ไอดีไอเทม
[Artifacts Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryExcelConfigData.json) -> `"id"`
[Weapons Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/WeaponExcelConfigData.json) -> `"id"` |
| [weapon](#weapon) `[Weapon Only]` | ข้อมูลพื้นฐานของอาวุธ |
| [reliquary](#reliquary) `[Artifact Only]` | ข้อมูลพื้นฐานของอาติแฟส |
| [flat](#flat) | รายละเอียดข้อมูลของไอเทม |
#### weapon
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอาวุธนั้น ตรวจสอบได้ที่ [Weapons Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/WeaponExcelConfigData.json)
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| level | เลเวลอาวุธ |
| promoteLevel | ระดับเลเวลอาวุธ |
| affixMap | ระดับขัดเกลา `[0-4]` |
#### reliquary
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอาติแฟสนั้น ตรวจสอบได้ที่ [Artifacts Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryExcelConfigData.json)
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| level | เลเวลอาติแฟส `[1-21]` |
| mainPropId | Stats อาติแฟสหลัก
[MainProps Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryMainPropExcelConfigData.json) |
| appendPropIdList | ลิสไอดี Stats อาติแฟสรอง
[AppendProp Data](https://gitlab.com/Dimbreath/AnimeGameData/-/blob/master/ExcelBinOutput/ReliquaryAffixExcelConfigData.json) |
#### flat
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| nameTextHashMap | ไอดีชื่อไอเทม
ตรวจสอบได้ที่ [ภาษา](#ภาษา) |
| setNameTextHashMap `[Artifact Only]`| ไอดีชื่อของอาติแฟส
ตรวจสอบได้ที่ [ภาษา](#ภาษา)|
| rankLevel | ระดับความหายากของไอเทม |
| [reliquaryMainstat](#reliquarymainstat-reliquarysubstats-weaponstats) `[Artifact Only]` | Stats อาติแฟสหลัก |
| [reliquarySubstats](#reliquarymainstat-reliquarysubstats-weaponstats) `[Artifact Only]` | ลิส Stats อาติแฟสรอง |
| [weaponStats](#reliquarymainstat-reliquarysubstats-weaponstats) `[Weapon Only]`| ลิส Stats อาวุธ |
| [itemType](#itemtype) | ชนิดไอเทม (อาวุธ หรือ อาติแฟส) |
| icon | ไอคอนไอเทม
[ไอคอน และรูปภาพ](#ไอคอน-และรูปภาพ)|
| [equipType](#equiptype) `[Artifact Only]` | ชนิดอาติแฟส |
#### reliquaryMainstat, reliquarySubstats, weaponStats
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| mainPropId / appendPropID | ชื่อคุณสมบัติของไอเทม ตรวจสอบใน [คำนิยามสำหรับชื่อ](#appendprop)|
| propValue | ค่าคุณสมบัติ |
## คำนิยาม
### Prop
| ชนิด | คำอธิบาย |
| :--: | :---------- |
| 1001 | XP |
| 1002 | ระดับ |
| 4001 | เลเวล |
### FightProp
| ชนิด | คำอธิบาย |
| :--: | :---------- |
| 1 | พลังชีวิตพื้นฐาน |
| 4 | พลังโจมตีพื้นฐาน |
| 7 | พลังป้องกันพื้นฐาน |
| 20 | อัตราคริ |
| 22 | ความแรงคริ |
| 23 | ฟื้นฟูพลังงาน |
| 26 | โบนัสรักษา |
| 27 | โบนัสการถูกรักษา |
| 28 | ความชำนาญธาตุ |
| 29 | ความต้านทานกายภาพ |
| 30 | โบนัสความเสียหายกายภาพ |
| 40 | โบนัสความเสียหายไฟ |
| 41 | โบนัสความเสียหายไฟฟ้า |
| 42 | โบนัสความเสียหายนํ้า |
| 43 | โบนัสความเสียหายไม้ |
| 44 | โบนัสความเสียหายลม |
| 45 | โบนัสความเสียหายหิน |
| 46 | โบนัสความเสียหายนํ้าแข็ง |
| 50 | ความต้านทานไฟ |
| 51 | ความต้านทานไฟฟ้า |
| 52 | ความต้านทานนํ้า |
| 53 | ความต้านทานไม้ |
| 54 | ความต้านทานลม |
| 55 | ความต้านทานหิน |
| 56 | ความต้านทานนํ้าแข็ง |
| 70 | อนุธาตุไฟ |
| 71 | อนุธาตุไฟฟ้า |
| 72 | อนุธาตุนํ้า |
| 73 | อนุธาตุไม้ |
| 74 | อนุธาตุลม |
| 75 | อนุธาตุนํ้าแข็ง |
| 76 | อนุธาตุหิน |
| 2000 | พลังชีวิตสูงสุด |
| 2001 | พลังโจมตี |
| 2002 | พลังป้องกัน |
### ItemType
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| ITEM_WEAPON | อาวุธ |
| ITEM_RELIQUARY | อาติแฟส |
### EquipType
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| EQUIP_BRACER | ดอกไม้ |
| EQUIP_NECKLACE | ขนนก |
| EQUIP_SHOES | นาฬิกาทราย |
| EQUIP_RING | ถ้วย |
| EQUIP_DRESS | มงกุฏ |
### AppendProp
| ชื่อ | คำอธิบาย |
| :--- | :---------- |
| FIGHT_PROP_BASE_ATTACK `[Weapon]` | พลังโจมตีพื้นฐาน |
| FIGHT_PROP_HP | พลังชีวิต |
| FIGHT_PROP_ATTACK | พลังโจมตี |
| FIGHT_PROP_DEFENSE | พลังป้องกัน |
| FIGHT_PROP_HP_PERCENT | พลังชีวิต% |
| FIGHT_PROP_ATTACK_PERCENT | พลังโจมตี% |
| FIGHT_PROP_DEFENSE_PERCENT | พลังป้องกัน% |
| FIGHT_PROP_CRITICAL | อัตราคริ |
| FIGHT_PROP_CRITICAL_HURT | ความแรงคริ |
| FIGHT_PROP_CHARGE_EFFICIENCY | ฟื้นฟูพลังงาน |
| FIGHT_PROP_HEAL_ADD | โบนัสรักษา |
| FIGHT_PROP_ELEMENT_MASTERY | ความชำนาญธาตุ |
| FIGHT_PROP_PHYSICAL_ADD_HURT | โบนัสความเสียหายกายภาพ |
| FIGHT_PROP_FIRE_ADD_HURT | โบนัสความเสียหายไฟ |
| FIGHT_PROP_ELEC_ADD_HURT | โบนัสความเสียหายไฟฟ้า |
| FIGHT_PROP_WATER_ADD_HURT | โบนัสความเสียหายนํ้า |
| FIGHT_PROP_WIND_ADD_HURT | โบนัสความเสียหายลม |
| FIGHT_PROP_ICE_ADD_HURT | โบนัสความเสียหายนํ้าแข็ง |
| FIGHT_PROP_ROCK_ADD_HURT | โบนัสความเสียหายหิน |
| FIGHT_PROP_GRASS_ADD_HURT | โบนัสความเสียหายไม้ |
## ไอคอน และรูปภาพ
คุณสามารถดึงรูปไอคอนจาก ตัวละคร, อาวุธ และ อาติแฟสจาก Enka ได้โดยใช้ลิ้งก์ `https://enka.network/ui/[icon_name].png`
โดยปกติแล้วชื่อไอคอนจะขึ้นต้นด้วย `"UI_"` หรือ `"Skill_"` จาก [พรรสวรรค์ตัวละคร](#ตัวละคร,-พรรสวรรค์-และกลุ่มดาว)
ยกตัวอย่างเช่น https://enka.network/ui/UI_AvatarIcon_Side_Ambor.png
### อาวุธ และอาติแฟส
ไปที่ [flat](#flat) และมองหาคำว่า `icon`.
### ตัวละคร, พรรสวรรค์ และกลุ่มดาว
ไปที่ [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json) และมองหาข้อมูลสิ่งที่เกี่ยวข้องอย่าง "UI_XXXXXX" หรือ "Skill_XXXXXX" จากไอดีตัวละคร
## ภาษา
คุณอางสังเกตุเห็น `"NameTextMapHash"` ในข้อมูล [store/characters.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/characters.json), `"nameTextHashMap"` และ `"setNameTextHashMap"` จาก [flat](#flat) นั้นที่จะสามารถใช้เป็นคีย์สำหรับในการหาข้อมูลภาษาจากตัวละคร, อาวุธ และ อาติแฟสจาก [store/loc.json](https://github.com/EnkaNetwork/API-docs/blob/master/store/loc.json).
นอกจากนี้คุณยังสามารถใช้ข้อมูลภาษาจาก [AppendProp](#appendprop) โดยใช้ชื่อคีย์คุณสมบัติอย่าง - `"FIGHT_PROP_HP"`, `"FIGHT_PROP_HEAL_ADD"` และอิ่น ๆ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับชื่อ, คำอธิบาย และ อื่น ๆ นั้น ตรวจสอบได้ที่ [TextMap Data](https://gitlab.com/Dimbreath/AnimeGameData/-/tree/master/TextMap) เฉพาะภาษาที่เกมส์รองรับเท่านั้น
## Wrappers
TS/JS - https://www.npmjs.com/package/enkanetwork.js - [Jelosus1](https://github.com/Jelosus2)
TS/JS - https://github.com/yuko1101/enka-network-api - [yuko1101](https://github.com/yuko1101)
Rust - https://github.com/eratou/enkanetwork-rs - [eratou](https://github.com/eratou)
Python - https://github.com/mrwan200/enkanetwork.py - [mrwan200](https://github.com/mrwan200)
Python - https://github.com/seriaati/enka-py - [seriaati](https://github.com/seriaati)
Java - https://github.com/kazuryyx/EnkaNetworkAPI - [kazury](https://github.com/kazuryyx)
C# - https://github.com/aliafuji/EnkaDotnet - [aliafuji](https://github.com/aliafuji)
C# - https://github.com/Carried520/EnkaSharp - [Carried520](https://github.com/Carried520)