User Tools

Site Tools


en:outskirts:mages-peaks:api

This is an old revision of the document!


The Laelith API

The API is a classic JSON-based REST API.

Also check out the The Laelith Authentication.

GET /hello

An easy way for developers to test if the API works.

GET /cadastre

Get the list of all Cadastre elements (Lots, streets, etc.). See the Cadastre format for more information.

The Cadastre is a 5400×3900 meter map with the (0,0) point being somewhere at the top-left corner, and the y-axis looking down. 1.0 = 1 meter

GET /cadastre/{id}

Get the details of a specific Cadastre element. See the Lot format for more information.

Example: https://api.laelith.com/cadastre/12.5.3.0

GET /cadastre/{alias}

Same as GET /cadastre/{id}, but using an alias instead of a numerical id.

Example: https://api.laelith.com/cadastre/laelith-gazette

PUT /cadastre/{id}/user

Change the owner of a Cadastre element. Requires admin or cartographer access.

Payload: owner_id

The end-point returns the complete element details.

PUT /cadastre/{id}/widgets

Change the owner of a Cadastre element. Requires admin or cartographer access.

Payload: Array of widgets data

The end-point returns the complete element details.

GET /cadastre/{id}/preview

Return a 400×400 PNG file that contains the NFT image of a Cadastre element.

GET /cadastre/{id}/mapview

Return a 400×400 PNG file that shows a map image of a Cadastre element.

GET /network

Return the graph of the streets, plazas and gardens network.

GET /heightmap

Return the Height Map. It is a simple table 1081 x 781 table of z values. So it provides a resolution of 5 meters (1080×780 for the 5400×3900 m map).

Don't forget that element [0,0] represents the top-left corner. Here is a simple map-to-height Typescript function using bilinear interpolation and that works even outside the bounds of the map:

    const ELEVATION_GRID_H = 1080; // Index goes from 0 to ELEVATION_GRID_H *included*
    const ELEVATION_GRID_V = 780;
 
    function getAltitude(heightMap: number[][], pt: Point): number {
            const u = Math.max(Math.min((pt.x / 5400.0 * ELEVATION_GRID_H), ELEVATION_GRID_H), 0);
            const v = Math.max(Math.min((pt.y / 3900.0 * ELEVATION_GRID_V), ELEVATION_GRID_V), 0);
            const u_i = Math.floor(u);
            const u_f = u - u_i;
            const v_i = Math.floor(v);
            const v_f = v - v_i;
 
            let z = heightMap[u_i][v_i] * (1 - u_f) * (1 - v_f);
            if (u_f != 0 && u_i < ELEVATION_GRID_H) {
                z += heightMap[u_i + 1][v_i] * u_f * (1 - v_f);
            }
            if (v_f != 0 && v_i < ELEVATION_GRID_V) {
                z += heightMap[u_i][v_i + 1] * (1 - u_f) * v_f;
            }
            if (u_f != 0 && v_f != 0 && u_i < ELEVATION_GRID_H && v_i < ELEVATION_GRID_V) {
                z += heightMap[u_i + 1][v_i + 1] * u_f * v_f;
            }
 
            return z;
    }

Altitude 0 is the lake. Values go from about -750 m to +1300 m.

GET /cache

Recompute from scratch the entire cadastre for ALL elements and build the Cadastre file. Very slow

GET /cache/{id}

Recompute the cache of a single Cadastre element. This also updates the Cadastre file, but in a fast manner.

GET /cache/{alias}

Same as GET /cache/{id}, but using an alias instead of a numerical id.

Example: https://api.laelith.com/cache/laelith-gazette

GET /cache/cadastre

Build the Cadastre file by assembling all the cached elements. Reasonnably fast.

GET /user/{user_id}

Get public information about a user account and his/her current Character (aka PC), if any.

Example: https://api.laelith.com/user/1

GET /character/{character_id}

Get details about a character. Result includes the id of the user the character belongs to.

Example: https://api.laelith.com/character/1

GET /character/{character_id}/lots

Get the list of Cadastre elements that belong to a character.

Example: https://api.laelith.com/character/1/lots

GET /ontology

Get a hierarchy representation of the Ontology. For more information, see lael3ndx_ontology.

GET /ontology/i18n

Get an English and French translation table of the Ontology.

en/outskirts/mages-peaks/api.1703076826.txt.gz · Last modified: 2024/10/28 08:00 (external edit)