Apportez vos propres données
Les superpositions privées vivent sous le préfixe de votre compte sur R2 et se peignent au-dessus du fond de carte du Canada et des catalogues sectoriels. Le fichier est à vous de préparer. unmap le stocke et le dessine. Il ne le reprojette pas, ne l'indexe pas, ne le cherche pas et ne l'identifie pas.
Limites
| Plafond | Valeur |
|---|---|
| Superpositions par compte | 10 |
| Taille par superposition | 5 Mo |
| Formats | GeoJSON (FeatureCollection, Feature ou une géométrie) et PMTiles |
| Auth | Clé API sur /byod, cookie de session sur /account/byod |
Un fichier trop grand ou une 11e superposition est 400 bad_request. Une superposition reste
tant que vous ne la supprimez pas. Les clés d'un même compte partagent les dix places. Une clé
sans compte garde ses propres fichiers, et le tableau de bord liste le compte, donc ces
fichiers n'y figurent pas. C'est inclus avec l'accès à l'API. Ce n'est pas un complément
séparé, et chaque requête compte comme un appel byod.
Téléverser, lister, supprimer
curl -X POST "https://api.unmap.dev/byod?name=leases" \
-H "Authorization: Bearer $UNMAP_API_KEY" \
-H "Content-Type: application/geo+json" \
--data-binary @leases.geojson{
"id": "ovl_aabbccddeeff",
"name": "leases",
"kind": "geojson",
"bytes": 1284,
"createdAt": "2026-09-11T18:00:00.000Z",
"url": "https://api.unmap.dev/byod/ovl_aabbccddeeff/data",
"overlay": "byod:ovl_aabbccddeeff"
}GET /byod liste vos superpositions et répète les plafonds. DELETE /byod/{id} retire
l'objet. GET /byod/{id}/data est le fichier lui-même (même clé). Un multipart file +
name facultatif est aussi accepté. L'onglet données du tableau de bord téléverse, liste
et supprime avec la session du compte. La carte charge encore le fichier avec votre clé API.
Il n'y a pas de remplacement. Un nouveau téléversement crée un nouvel id, et supprimer la
superposition précédente libère la place. Un style qui nomme encore l'ancien id est un 400.
Les objets sont stockés à byod/{accountId}/{id}. Un autre compte ne peut ni lister, ni lire,
ni supprimer les vôtres : la réponse est 404, pas une confirmation que l'id existe.
Depuis le SDK
import { Unmap } from "@unmap/sdk";
const unmap = new Unmap({ key: process.env.UNMAP_API_KEY! });
const input = document.querySelector<HTMLInputElement>("#overlay")!;
const { overlay } = await unmap.byod.upload(input.files![0]!, { name: "Zones de service" });
const map = new Unmap({ key: process.env.UNMAP_API_KEY!, container: "#map", overlays: [overlay] });
const { overlays, limits } = await unmap.byod.list();
await unmap.byod.delete("ovl_aabbccddeeff");upload() retourne l'enregistrement complet : overlay est le jeton byod:<id> qu'attend
overlays, non l'id nu. Passez un File directement depuis un champ de formulaire et
l'environnement se charge de l'encodage multipart. Un objet simple part en GeoJSON, et des
octets bruts partent en PMTiles sauf si vous passez { kind: "geojson" }. Un téléversement
refusé lève une CatalogError avec status 400 et code bad_request, qui porte la raison
donnée par le serveur. Les téléversements et les suppressions ne sont jamais relancés : une
réponse perdue ne peut pas stocker deux fois le même fichier.
Le fichier
Envoyez le GeoJSON en longitude, latitude, en degrés. unmap ne reprojette pas. Un fichier projeté est stocké tel quel et dessiné au mauvais endroit.
Le téléversement accepte le corps quand le JSON s'analyse et que son type de premier niveau
est un type GeoJSON, ou quand un fichier PMTiles commence par l'en-tête PMTiles. Il ne
vérifie pas que les coordonnées sont des nombres, ni qu'elles tombent au Canada.
MapLibre télécharge tout le GeoJSON au chargement de la carte. Cinq mégaoctets, c'est le fichier entier. Une zone plus grande demande une archive PMTiles, que vous ajoutez vous-même à la carte.
La peindre sur un style
Les superpositions GeoJSON se composent par le crochet overlays= existant :
GET /styles/muted.json?overlays=byod:ovl_aabbccddeeff,municipalities
overlays= remplace profile. Listez dans le même paramètre chaque couche du catalogue que
vous voulez encore.
const map = new Unmap({
key,
style: "muted",
overlays: ["byod:ovl_aabbccddeeff", "municipalities"],
});unmap ajoute une source GeoJSON vers /byod/{id}/data?key= et deux couches, au-dessus des
routes et sous les étiquettes, dans la couleur de limite du style :
PointetMultiPointsont des cercles.LineString,MultiLineString,PolygonetMultiPolygonsont des traits. Il n'y a pas de remplissage.- Une
GeometryCollectionne correspond à aucune des deux couches : elle est stockée et n'est pas dessinée. - Les attributs restent dans le fichier. Ces couches ne les lisent pas, donc rien n'est étiqueté et rien n'est coloré à partir d'une propriété.
Votre clé API est dans cette URL de données. MapLibre récupère le fichier depuis le navigateur
et ne peut pas envoyer d'en-tête Authorization, donc traitez le document de style comme un
secret. Un id manquant est un 400. Supprimer une superposition ne réécrit pas un style qui
la nomme encore; cette requête reste un 400 tant que vous ne retirez pas le jeton.
PMTiles
Un téléversement PMTiles est stocké et servi à /byod/{id}/{z}/{x}/{y}?key=. Ajoutez la
source vectorielle vous-même et nommez son source-layer. La composition de style ne devine
pas ce nom, donc overlays=byod: sur un id PMTiles est un 400. GET /byod/{id} renvoie le
nom, le type et la taille, pas les noms de couches dans l'archive. Une tuile hors de la plage
de zoom de l'archive, ou une tuile sans octets, est un 204 sans corps.
Ce que ce n'est pas
- Un endroit où interroger, joindre ou restyler les attributs de votre fichier.
- Un complément facturé. L'usage est compté comme
byod. - Un remplacement du catalogue de couches public.
Prochaines étapes
- Couches pour les superpositions du catalogue, sans rien téléverser.
- L'API de cartes pour la composition d'une superposition sur un style.
- Forfaits et limites pour la façon dont chacune de ces requêtes compte comme un appel.