Developer_API

Old: chuanhsing#2097 2025-02-21 15:01:56

New: chuanhsing#2097 2025-02-21 15:04:09

OldNewDifferences
1-# GGPK
1+# Developer API
22
3-## GGPK schema
3+There are 2 api sets:
4+* POESESSID used in the website API is not officially supported.
5+* [OAuth](https://www.pathofexile.com/developer/docs) apis are officially supported, but less functions.
46
5-### Record Structures
7+## Development Tool
68
7-```
8-struct GGPK {
9- uint32 Length;
10- char[4] Tag; // ="GGPK"
11- uint32 Version;
12- GgpkEntry[2] Entries;
13-}
14-struct GgpkEntry {
15- uint64 offset;
16-}
17-struct FREE {
18- uint32 Length;
19- char[4] Tag; // = "FREE"
20- Byte[Length-8] Data;
21-}
22-struct PDIR {
23- uint32 Length;
24- char[4] Tag; // ="PDIR"
25- uint32 NameLength;
26- uint32 TotalEntries;
27- byte[32] SHA256Hash;
28- wchar_t[NameLength] Name;
29- DirectoryEntry[TotalEntries];
30-}
31-struct DirectoryEntry {
32- int32 entryNameHash;
33- uint64 offset;
34-}
35-struct FILE {
36- uint32 Length;
37- char[4] Tag; // ="FILE"
38- uint32 NameLength;
39- byte[32] SHA256Hash;
40- wchar_t[NameLength] Name;
41- byte[reminder] Data;
42-}
43-```
44-
45-<a href="https://i.imgur.com/VRBetTX.png" data-lightbox="panel"></a>
46-
47-### Sample Tree
48-<a href="https://i.imgur.com/EP7QRal.png" data-lightbox="panel"></a>
9+Site | Description
10+- | -
11+[Tooldev Discord Channel](https://discord.gg/pathofexile) | #tooldev-general
12+[PoeSharp](https://github.com/andreandersen/PoeSharp) | C# Library to deal with PoE stuff
13+[PoE Go](https://github.com/ccbrown/poe-go) | an entry-level guide to writing tools for PoE in the Go programming language.
4914
5015
51-### Reference
16+## APIs
5217 Site | Description
5318 - | -
54-[Path of Go](https://github.com/oriath-net/pogo) | Golang tools for reading PoE data files
55-[LibGGPK3](https://github.com/aianlinb/LibGGPK3) | Windows GUI tool to view Content.ggpk and export
56-[libbun](https://github.com/zao/ooz) | Ooz shared library (libooz.dll/liblibooz.so) for Oodle decompression and Bun library/tool with a C API suitable for FFI/interop - reads and extracts bundle contents from a Steam game directory or a PC Standalone GGPK. Tested on x64 Windows and Debian. <br>Original Ooz code by powzix/rarten, adapted into a library.
19+[PoE API swagger](https://poedb.tw/us/poe-api) | PoEDB collections of POESESSID and OAuth API
20+[Official Website API](https://www.pathofexile.com/developer/docs) | OAuth API endpoints of Path of Exile
21+[POESESSID](POESESSID) | how to get your POESESSID
22+[API:Passive_Skill_Tree](API%3APassive_Skill_Tree)
23+[API:OAuth](API%3AOAuth) | how to use OAuth
24+[API:Ladder](API%3ALadder)
25+[API:Trade](API%3ATrade) | Official Trade API (POESESSID)
26+[API:Public_Stashes](API%3APublic_Stashes) | OAuth Public Stashes API
27+[GGPK](GGPK) | Content.ggpk file format
28+[Atlas Tree Export](https://github.com/grindinggear/atlastree-export)
5729
58-## Bundle schema
30+## Path Of Building Fork schema
5931
60-[Bundle schema](Bundle_schema)
61-
62-## Dat schema
63-
64-```
65-struct DAT {
66- uint32 rowCounts;
67- Data[rowCounts] rows;
68- REFERENCE refer;
69-}
70-
71-struct Data {
72- blob row;
73-}
74-
75-struct REFERENCE {
76- char[8]; // 0xBB * 8
77- blob reference;
78-}
79-```
80-
81-### Data Export
82-
83-The game data does not have any official API, and only possible data can be analyzed from the game files.
84-
85-Almost all data is stored in .dat64 files within Content.ggpk. But they only have data, no headers. You can start with the .dat64 format, the [PoE dat schema](https://github.com/poe-tool-dev/dat-schema) project is the latest format. Or try to parse the .dat format from [PoE Dat Viewer](https://snosme.github.io/poe-dat-viewer/) yourself. [RePoE](https://github.com/lvlvllvlvllvlvl/RePoE) collects many common and processed .dat files and exports them to .json format.
86-
87-### Reference
8832 Site | Description
8933 - | -
90-[PyPoE](https://github.com/Project-Path-of-Exile-Wiki/PyPoE) | Collection of Python Tools for Path of Exile, mostly used by wiki
91-[RePoE](https://github.com/lvlvllvlvllvlvl/RePoE) | Repository of Path of Exile resources for tool developers.
92-[Poe Dat Viewer](https://snosme.github.io/poe-dat-viewer/) | Web-base Poe Dat Viewer
93-[PoE dat schema](https://github.com/poe-tool-dev/dat-schema) | Source of truth schema for dat files.
94-[Path Of Building Fork schema](https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/dev/src/Export/spec.lua) | Source of Path Of Building Fork schema
95-
96-### PyPoe stable.py to spec.json
97-```
98-from PyPoE.poe.file.specification.data import stable
99-from json import dump
100-with open('D:/spec.json', 'w') as f:
101- dump(stable.specification.as_dict(), f)
102-```
34+[Pastebin](Pastebin)
35+[Pobbin](Pobbin)