ProductResource
Introduction
Product Resource.
Hosts APIs to manage products in workspaces:
Add/remove products to/from a workspace
Retrieve product lists, names, metadata, and details
Update product presentation fields (friendly name, style, description)
Upload products (with or without launcher ingestion)
All endpoints are under base path /product.
All endpoints require x-session-token.
Common Models
- PrimitiveResult:
IntValue, StringValue, DoubleValue, BoolValue
- ProductViewModel:
name, fileName, productFriendlyName, metadata, bandsGroups, metadataFileReference, metadataFileCreated, style, description
- GeorefProductViewModel (extends ProductViewModel):
bbox
- MetadataViewModel:
name, elements (array of MetadataViewModel), attributes (array of AttributeViewModel)
APIs
GET /product/addtows
Description: Adds a product file already present on node filesystem to a workspace.
Query params: name (required), workspace (required)
Success: 200 OK, body: PrimitiveResult
Notes: if product is already linked to workspace, returns
BoolValue=true; returns null on invalid session/permission failures.
GET /product/byname
Description: Returns one product by file name in a workspace.
Query params: name (required), workspace (required)
Success: 200 OK, body: GeorefProductViewModel
Notes: returns null on invalid session, no access, or not found.
GET /product/metadatabyname
Description: Returns metadata for a product.
Query params: name (required), workspace (required)
Success: 200 OK, body: MetadataViewModel
- Notes:
If metadata file is not available and was never generated, the API triggers a
READMETADATAlauncher process and returns a minimal metadata model withname = Generating Metadata, try later.Returns null on invalid session/access or errors.
GET /product/byws
Description: Returns full product list for a workspace.
Query params: workspace (required)
Success: 200 OK, body: array of GeorefProductViewModel
Notes: enriches output with bbox, style, description; metadata is cleared in returned list entries for lighter payload.
GET /product/bywslight
Description: Returns light product list for a workspace (used for initial editor listing).
Query params: workspace (required)
Success: 200 OK, body: array of GeorefProductViewModel
Notes: includes bbox and name/friendly name only.
GET /product/namesbyws
Description: Returns only product file names for a workspace.
Query params: workspace (required)
Success: 200 OK, body: array of string
POST /product/update
Description: Updates editable product fields in a workspace.
Query params: workspace (required)
Body: ProductViewModel
Success: 200 OK
Return codes: 200, 401, 403, 500
- Notes:
Update scope is effectively friendly name, style, and description.
If style changes, the service attempts to update associated published layers in GeoServer.
POST /product/uploadfile
Description: Uploads a file and triggers ingestion (launcher
INGESToperation).Consumes:
multipart/form-dataForm field: file
Query params: workspace (required), name (optional), style (optional), platform (optional)
Success: 200 OK
Return codes: 200, 400, 401, 403, 500
- Notes:
Includes path-injection guard on
nameandworkspace.If
nameis empty, a random default name is generated.
POST /product/uploadfilebylib
Description: Uploads a file without triggering ingestion (library-oriented endpoint).
Consumes:
multipart/form-dataForm field: file
Query params: workspace (required), name (optional)
Success: 200 OK
Return codes: 200, 400, 401, 403, 500
Notes: includes path-injection guard on
nameandworkspace.
GET /product/delete
Description: Deletes a product from a workspace; can also delete disk files and published layers.
Query params: name (required), workspace (required), deletefile (optional bool, default true), deletelayer (optional bool, default true)
Success: 200 OK, body: PrimitiveResult
- Notes:
Handles associated sidecar data for known formats (for example
.dim/.data,.gribindexes, shapefile sidecars).Updates workspace storage size after file deletion.
Sends asynchronous delete notification on RabbitMQ.
POST /product/deletelist
Description: Starts asynchronous deletion of multiple products.
Consumes:
application/jsonQuery params: workspace (required), deletefile (optional), deletelayer (optional)
Body: array of product names
Success: 200 OK, body: PrimitiveResult
- Notes:
Uses background worker (
DeleteProductWorker) and returns immediately.Returns
BoolValue=true, IntValue=200when worker is started; returnsBoolValue=false, IntValue=500on validation/failure.