Migrating from v1 to v2 (New Era)
There are some fairly substantial changes migrating from EVE Frontier Founder Access Cycle 4 to the New Era, these are my notes on the things that I have had to change to bring it in-line with Smart Object Framework v2 and the World API v2.
Important
This document is incomplete, and not intended to be canonical or complete, if you find additional areas please feel free to Send a Pull Request or message me on Discord (User ID: 265550347433410560)
World API
The majority of the routes in the World API have been removed and been replaced with new routes prefixed with /v2 with pagination support through the limit=10 and offset=0 semantics.
Native Pagination
Any endpoint that used to return a JSON array [ { } ] now returns a paginated structure alongside metadata:
{
"data": [
... objects in the page ...
],
"metadata": {
"total": 350,
"limit": 10,
"offset": 0
}
}You can control which page of the API is returned by passing offset=o where o is a positive integer or zero that represents the number of items to skip (i.e. it’s not the page number). You can control how many results are returned by passing the limit=l where l is a positive integer that controls the number of results returned in a single page payload. The limits seem to default to 10 and have a maximum value of 100 for most endpoints.
Authentication
There are four new endpoints that require Authentication, at the moment there isn’t a user interface for getting a JWT, however you can grab one from the EVE Frontier Website:
- Go to https://evefrontier.com/en and Login,
- Open DevTools by pressing
F12and switch to the Application tab, - Find the
__Secure-eve-frontier.session-tokencookie, the value should start withey, - Either use jwt.io or a tool like DevToys to decode this JWT,
- Once decoded it will contain an
access_tokenfield in the token, you use this for theAuthorizationheader in the formatAuthorization: Bearer {access_token}, - You should now be able to call the authenticated endpoints to GET a payload.
Naming Conventions
CCP have moved from Json Property Names rendered with underscores delimiting words (smart_object_id) to Camel Case (smartObjectId) this aligns better to the Solidity / Mud naming conventions which are also Camel Case. This means you will need to update any JSON Deserializers to use the new conventions.
Payloads
/v2/smartassemblies/
The structure of the payload has changed substantially, for example:
- The
fuelstructure no longer exists, - A new assembly-specific structure has been added, i.e.
gatefor SmartGates, andmanufacturingforManufacturingthis typically hasisParentNodeOnlineas a child plus assembly type specific metadata. - The singleton response i.e.
/v2/smartassemblies/{id}contains much more detail intypeDetailsthan before. - The timestamp when it was first anchored no longer exists.
Timestamps
Historically CCP used a combination of LDAP/FILETIME Timestamps and UNIX Timestamps to represent dates, times and offsets; CCP have now switched to using ISO8601 formatted time strings instead, this means that if you JSON parser was setup to convert a 64-bit integer and interpreting it, instead it will need to take parse a string.
Mud World
There is a new Mud World for Era 6 - Cycle 1 with the Store Address: 0xcdb380e0cd3949caf70c45c67079f2e27a77fc47 this is an instance of the v2 world structure so there are some significant changes to the tables:
- The
eveworldnamespace has been renamed toevefrontier, - The old
eveerc721*namespaces have been removed, some of the data has been moved to theevefrontiernamespace, this is because SmartCharacters and SmartAssemblies are no longer implemented as ERC-721 NFTs, - The word
Tablehas been removed from the end of many tables:CharactersTablebecomesCharacters,CharactersByAddrbecomesCharactersByAccoto reflect ERC-4337’s use of Account for Account Abstraction,LocationTablebecomesLocation(note: noson the end),EntityTablebecomesEntity,SmartAssemblyTablebecomesSmartAssemblyDeployableFuelBabecomesFuelSmartGateConfigTabbecomesSmartGateConfig- … and so on
- Many of the fields have been renamed within the tables, this is because there is a new Class/Object/System Relation Map for v2
- Characters (previously CharactersTable)
characterIdbecomessmartObjectIdcorpIdbecomestribeId
- CharactersByAddr (previously CharactersByAcco)
characterAddressbecomesaccount,characterIdbecomessmartObjectId,
- Fuel (was DeployableFuelBa)
fuelConsumptionPerMinutebecomesfuelBurnRateInSeconds(this was always a burn rate, just the name of the column was poorly named)
- DeployableState
createdAtfield has been added in addition to theanchoredAtfield, however both seem to be equal in all cases,
- Characters (previously CharactersTable)
- There are several new Tables for the new Smart Assemblies and to support Smart Object Framework v2:
NetworkNoteEnergNetworkNodeByAss(LOL)NetworkNodeAssemNetworkNodeTenant
- Smart Gates used to have a range of 500ly (4,730,365,236,290,022,000 meters) they now have a range of 110ly (1,040,680,351,983,804,840).