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
F12
and switch to the Application tab, - Find the
__Secure-eve-frontier.session-token
cookie, the value should start withey
, - Either use https://jwt.io or a tool like DevToys to decode this JWT,
- Once decoded it will contain an
access_token
field in the token, you use this for theAuthorization
header 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
fuel
structure no longer exists, - A new assembly-specific structure has been added, i.e.
gate
for SmartGates, andmanufacturing
forManufacturing
this typically hasisParentNodeOnline
as a child plus assembly type specific metadata. - The singleton response i.e.
/v2/smartassemblies/{id}
contains much more detail intypeDetails
than 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
eveworld
namespace has been renamed toevefrontier
, - The old
eveerc721*
namespaces have been removed, some of the data has been moved to theevefrontier
namespace, this is because SmartCharacters and SmartAssemblies are no longer implemented as ERC-721 NFTs, - The word
Table
has been removed from the end of many tables:CharactersTable
becomesCharacters
,CharactersByAddr
becomesCharactersByAcco
to reflect ERC-4337’s use of Account for Account Abstraction,LocationTable
becomesLocation
(note: nos
on the end),EntityTable
becomesEntity
,SmartAssemblyTable
becomesSmartAssembly
DeployableFuelBa
becomesFuel
SmartGateConfigTab
becomesSmartGateConfig
- … 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)
characterId
becomessmartObjectId
corpId
becomestribeId
- CharactersByAddr (previously CharactersByAcco)
characterAddress
becomesaccount
,characterId
becomessmartObjectId
,
- Fuel (was DeployableFuelBa)
fuelConsumptionPerMinute
becomesfuelBurnRateInSeconds
(this was always a burn rate, just the name of the column was poorly named)
- DeployableState
createdAt
field has been added in addition to theanchoredAt
field, 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:
NetworkNoteEnerg
NetworkNodeByAss
(LOL)NetworkNodeAssem
NetworkNode
Tenant
- 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).