API de capas alojadas
La API de capas alojadas es una fachada propiedad de Meratyn. Las respuestas usan IDs estables de Meratyn y modelos normalizados; los identificadores de GeoNode y GeoServer nunca forman parte del contrato público.
Recursos
GET, POST /api/layers
GET, POST /api/layers/collections
GET, PUT, DELETE /api/layers/collections/:collectionId
POST /api/layers/collections/:collectionId/layers
DELETE /api/layers/collections/:collectionId/layers/:layerId
GET /api/layers/provider
POST /api/layers/provider/sync
POST /api/layers/schema
GET, POST /api/layers/remote-catalogues
DELETE /api/layers/remote-catalogues/:catalogueId
POST /api/layers/remote-catalogues/:catalogueId/:check|refresh|harvest
GET /api/layers/remote-catalogues/:catalogueId/resources
GET, POST /api/layers/principals
GET /api/layers/principals/:principalId/members
PUT, DELETE /api/layers/principals/:principalId/members/:userId
GET /api/layers/metadata/schema
GET, PUT, DELETE /api/layers/:id
GET /api/layers/:id/services
GET, POST /api/layers/:id/gateway/:serviceId
GET /api/layers/:id/representations
GET /api/layers/:id/downloads
GET, HEAD /api/layers/:id/downloads/:downloadId
GET /api/layers/:id/usage
GET /api/layers/:id/audit
GET /api/layers/:id/lineage
POST /api/layers/:id/access
GET, HEAD /api/layers/:id/assets/:assetId/:filename
GET, PUT /api/layers/:id/metadata
GET, PUT /api/layers/:id/permissions
GET, PUT /api/layers/:id/attributes
GET, POST /api/layers/:id/styles
PUT, DELETE /api/layers/:id/styles/:styleId
GET, PUT /api/layers/:id/geolimits
GET, POST /api/layers/:id/comments
DELETE /api/layers/:id/comments/:commentId
GET, PUT, DELETE /api/layers/:id/rating
GET, PUT, DELETE /api/layers/:id/favorite
GET /api/layers/:id/versions
POST /api/layers/:id/replace
POST /api/layers/:id/versions/:versionId/restore
GET, POST /api/layers/:id/features
PATCH, DELETE /api/layers/:id/features/:featureId
GET, POST /api/layers/:id/related
DELETE /api/layers/:id/related/:relatedId
GET, POST /api/layers/:id/reconcile
GET, PUT /api/layers/:id/workflow
GET, POST /api/layers/:id/supplementary-assets
DELETE /api/layers/:id/supplementary-assets/:assetId
GET, HEAD /api/layers/:id/supplementary-assets/:assetId/download
GET /api/layers/:id/metadata-links
POST /api/layers/:id/metadata-file
GET /api/layers/:id/dataset-schema
POST /api/layers/:id/upsert
GET /api/layers/:id/provider-jobs
POST /api/layers/:id/recalculate-extent
POST /api/layers acepta datos de formulario multipart para archivos locales y
sus sidecars. El registro de endpoints o URLs no se presenta a los usuarios.
Todas las mutaciones requieren autenticación. Las lecturas de catálogo e ítems siguen la política de descubrimiento y concesiones de la capa. Las solicitudes de servicio exigen View o Download según corresponda.
GET /api/layers acepta las facetas collection, owner, category, region,
subtype, published, approved, featured, favorite y la faceta geográfica
extent=minX,minY,maxX,maxY, además de texto, kind, estado y visibilidad. Las
lecturas públicas de colecciones exponen solo miembros públicos.
GET /api/layers/collections devuelve colecciones descubribles, mientras que
scope=mine devuelve las colecciones que el usuario actual puede gestionar. Ambos
endpoints de catálogo aceptan parámetros acotados limit y offset y devuelven
pagination.nextOffset; los clientes deben seguir esa continuación hasta que sea
null. Una colección pública acepta solo capas públicas; las colecciones privadas
aceptan capas que el propietario pueda gestionar. La membresía en una colección no
altera la visibilidad ni la política de eliminación de una capa.
Los registros de organización y grupo son principals de Meratyn. Los
administradores los crean y gestionan su membresía; los gestores de capa conceden
a los principals permisos independientes view, download, edit y manage. La
visibilidad pública implica view y download para consumidores anónimos. Las capas
unlisted son legibles a través de su ID estable o de un proyecto que las referencie,
pero se omiten de los resultados del catálogo.
POST /api/layers/:id/access intercambia un token autenticado de Meratyn por un
token de acceso de corta duración acotado a la capa. Devuelve
{ token, expiresAt, refreshAfter, services }. Las URLs directas de servicio que
devuelve llevan el token efímero; los proyectos persistidos deben conservar solo el
ID estable de capa y el ID de servicio. Los activos directos públicos no necesitan
sesión.
La pasarela de activos soporta GET, HEAD, Range, If-Range y revalidación
con ETag. Los rangos satisfacibles devuelven 206; los rangos inválidos devuelven
416. Los activos privados, de organización y de grupo devuelven 404 sin
propiedad, concesión o acceso válido mediante sesión de capa.
Los servicios canónicos de mapa, features y datos ráster siempre se devuelven como URLs de pasarela Meratyn, incluidas las capas públicas. La pasarela resuelve en el servidor un recurso y servicio almacenados; quien llama no puede suministrar un host del proveedor. Acepta únicamente operaciones WMS/WFS/WCS acotadas, de solo lectura y limitadas al recurso, y devuelve documentos de capabilities limitados al recurso que anuncian solo el ID estable de capa de Meratyn. Rechaza transacciones, solicitudes dirigidas a otra capa, parámetros no soportados, solicitudes demasiado grandes y respuestas demasiado grandes.
WFS GetFeature y GetPropertyValue respetan el parámetro estándar srsName y por
defecto usan EPSG:4326 cuando se omite. WMS soporta los parámetros estándar de
GetFeatureInfo, incluidos INFO_FORMAT y FEATURE_COUNT, de modo que un cliente
puede usar su flujo habitual de identificación. El renderizado de mapas requiere
View; las descargas de features, coberturas y archivos del proveedor requieren
Download. Los descriptores privados devueltos por POST /access llevan un token de
capa de corta duración que la pasarela valida en cada solicitud.
Las opciones de descarga del proveedor se anuncian en /downloads y se obtienen por
su ID opaco anunciado en /downloads/:downloadId. Meratyn re-resuelve ese ID contra
la lista vigente anunciada por el proveedor, restringe el destino a orígenes
confiables configurados y solo reenvía validadores de rango y caché seguros.
Los endpoints sociales son propiedad de Meratyn para que los comentarios, la valoración de un usuario y los favoritos tengan un contrato consistente incluso cuando el backend de publicación no ofrece esas escrituras. Las valoraciones agregadas y la visibilidad de comentarios siguen igualmente la política View de la capa. Las rutas de features aceptan features GeoJSON y traducen operaciones de creación, actualización y eliminación en el límite del proveedor; requieren permiso Edit.
Modelo central
Un resumen de capa contiene:
id,slug,title,descriptionkind: vector, raster, tiles, multidimensional, point-cloud o 3dformaty tipo de medio detectadovisibility: public, unlisted o privatestatus: draft, uploading, processing, published, failed o deleting- propietario y organización opcional
- extensión, CRS, tamaño, marcas de tiempo, palabras clave y miniatura
- resumen de capacidades del proveedor
PUT /api/layers/:id acepta los campos editables del resumen, incluido crs.
Los valores CRS se normalizan a un identificador EPSG:<code> o CRS:84 y se
sincronizan con el SRS declarado por el proveedor de publicación. Esto declara el
sistema de coordenadas de origen; no transforma coordenadas almacenadas.
Los descriptores de servicio contienen un tipo, una URL controlada por Meratyn, un tipo de medio, pistas opcionales para la fuente MapLibre y un requisito de acceso. Los clientes deben seleccionar en este orden cuando corresponda:
- formato cloud nativo (PMTiles, COG, FlatGeobuf, GeoParquet, Zarr, COPC)
- teselas vectoriales/ráster
- WMS
- WFS para acceso editable a features, o WCS para datos ráster
Los descriptores directos añaden:
representation: identificador estable de la representaciónaccess.mode:publicosessiondirect,preferredyrangeRequestssizeBytes,mediaTypey formato- opcionalmente
sourceLayery lavariableZarr
Los formatos directos actuales de objeto único son PMTiles, subidas COG con nombre
(*.cog.tif, *.cog.tiff o *.cog), FlatGeobuf, GeoParquet, objetos Zarr,
COPC/LAZ, payloads de 3D Tiles, glTF, GLB y Gaussian splats. Los almacenes Zarr de
múltiples objetos y las jerarquías 3D Tiles/glTF pueden enviar un arreglo JSON
relativePaths. La entrega de proyectos privados firma la URL raíz con una
capacidad de proyecto y conserva esa capacidad para los archivos relativos
validados solicitados por manifiestos. Se rechazan el path traversal, las rutas
absolutas, las rutas duplicadas y los archivos hermanos no declarados.
Las subidas crudas de MBTiles devuelven 415; conviértalas a PMTiles antes de la
publicación.
Los clientes deben hacer polling solo mientras la capa esté en uploading o
processing, y detenerse tras un estado terminal. La interfaz de gestión incluida y
el Catálogo usan un intervalo de tres segundos para esta actualización en vivo
acotada.
Capacidades del proveedor
El objeto de capacidades describe lo que la fachada Meratyn puede hacer, no la lista de funcionalidades de un backend concreto. Meratyn es dueño de su catálogo estable, concesiones, versiones retenidas de reemplazo, comentarios, valoraciones por usuario, favoritos, registros de capas relacionadas, historial de auditoría y respaldo local de presentación. Usa operaciones del proveedor para publicación, metadatos ricos, entrega de mapas, descargas, estilos, descubrimiento de atributos y transacciones de features cuando están disponibles. La UI nunca debe inferir el soporte a partir del nombre de un proveedor.
Los metadatos, la política de acceso, la presentación de tabla y las ediciones de estilos se retienen en Meratyn antes de la sincronización opcional con el proveedor. Por lo tanto, una caída del proveedor no descarta un cambio ordinario de gestión. La reconciliación registra internamente la sincronización pendiente o divergente y expone solo un resumen saneado de desviación neutral respecto al proveedor.
POST /api/layers/:id/reconcile?repair=true realiza una comparación real y repara
metadatos, permisos, propiedad, estado de flujo de trabajo, atributos, estilos, CRS
y extensión del proveedor usando las reglas de propiedad documentadas de Meratyn.
Un POST simple verifica sin reparar.
El catálogo del proveedor se importa de forma idempotente y se sincroniza cada cinco
minutos en el despliegue Node (GEONODE_CATALOGUE_SYNC_INTERVAL_MS controla el
intervalo). Los administradores también pueden ejecutar la sincronización
explícitamente. Las identidades de usuario/grupo de GeoNode son mapeos sombra con
contraseñas inutilizables; Meratyn sigue siendo la autoridad de inicio de sesión y
membresía.
La creación schema-first acepta un esquema de campos, restricciones, tipo de
geometría, CRS y features GeoJSON iniciales. Valida restricciones de obligatoriedad,
unicidad, tipo, rango numérico y patrón seguro antes de la publicación. El upsert
masivo reutiliza el esquema almacenado para la preflight GeoJSON, envía el contrato
nativo action=upsert de GeoNode y expone la ejecución asíncrona a través de
provider-jobs. Los informes de validación de GeoNode permanecen como activos de
recursos complementarios.
Los documentos de GeoNode usan su gestor de recursos de documento. Los activos complementarios, la importación de metadatos XML ISO, los enlaces de metadatos generados, la aprobación de publicación y el harvesting WMS/GeoNode/ArcGIS se exponen a través de la misma fachada Meratyn. La configuración y moderación del harvesting remoto requieren un administrador de Meratyn.
Una operación del proveedor no disponible devuelve una respuesta estructurada 501
con una clave de capacidad y una explicación legible. La
autenticación/autorización, la validación, el conflicto, la caída del proveedor y el
fallo de importación continúan siendo errores distintos.
Seguridad de subida
Los despliegues deben imponer tamaño de solicitud, ratio de expansión de archivos, cantidad de miembros, path traversal, concordancia entre firma y extensión de archivo, y cuota por cuenta. Los orígenes se almacenan provisionalmente bajo claves generadas; los nombres de archivo del usuario son metadatos, nunca rutas de sistema de archivos. Los despliegues de producción deberían añadir análisis de malware antes de que un worker de ingesta abra el archivo.
Las subidas multipart son adecuadas para la vertical local. El almacenamiento de objetos de producción debería añadir sesiones de subida reanudable y transferencia multipart directa para que los ráster grandes no pasen por un único proceso Node ni permanezcan en memoria.
Uso y auditoría
El almacenamiento directo se reserva atómicamente contra la cuota existente por usuario de Meratyn antes de escribir un objeto. Un almacenamiento fallido revierte la reserva, la eliminación la libera, y el recálculo de almacenamiento del administrador incluye los activos de capas alojadas.
GET /api/layers/:id/usage informa bytes de origen, derivados, versión y totales,
la cuota de la cuenta, el conteo de descargas y la hora del último acceso. GET /api/layers/:id/audit registra eventos de subida, publicación, metadatos,
permisos, atributos, estilos, sesión de acceso, descarga, actualización y
eliminación. La eliminación de una capa retiene el registro de auditoría con una
clave foránea de capa vaciada.