Last updated: 2025-01-28 (document version 1.7, valid for prosEO V1.1.0)
Data Model Overview
General Approach
The prosEO Metadata Database holds all knowledge about products,
processors, processor configurations, orders and jobs in the processing
system. An overview diagram is given in Figure 2‑1 below.
Figure 2‑1: Product,
processor, order and job metadata database
The table below describes the purpose of the entities contained in the
Metadata Database:
Entity (Class)
Description
Configuration
A specific processor configuration, tied to a specific ConfiguredProcessor object. It mainly consists of a set of configuration files and template information for creating Job Order files for the associated processor.
ConfiguredProcessor
A specific version of a Processor combined with a specific Configuration object (i. e. a specific set of configuration data for the given processor version). A ConfiguredProcessor is what must be specified for the generation of the products of a prosEO order.
Job
A collection of job steps required to fulfil an order for a specific period of time (e. g. one orbit).
Note: As a future extension a selection by geographical area in addition to or instead of a period of time is envisioned.
JobStep
A single processor execution to produce a defined output product based on a defined set of required input product (modelled as ProductQuery objects). A JobStep can be executed as soon as all its ProductQuerys are satisfied.
Orbit
The description of an orbit identified by its start and stop times (e. g. the "spacecraft midnight" events of the Sentinel-5P satellite). There must be no time gap between subsequent orbits of the same spacecraft.
Orbit times (and all derived times in prosEO) are given in UTC-STS (leap seconds spread evenly over the last 1000 seconds of the day) and to a microsecond precision. The public static variable orbitTimeFormatter gives a standard format for parsing and formatting orbit times.
OrderTimer
A timer for the generation of new processing orders from OrderTemplates, e. g. for the creation of background products.
PersistentObject
The root class of all persistent objects. It provides an ID, a version and a set of mission-specific parameters for the object.
ProcessingOrder
A customer order to process a specific set of ProductClasses for a specific period of time using a specific set of ConfiguredProcessors. An order may have properties like a product quality indicator (test vs operational), specific product delivery endpoints, specific (potentially mission-dependent) product generation attributes (e. g. a Copernicus collection number) etc.
Processor
A specific version of a ProcessorClass. Each permissible combination of a specific Processor with a specific Configuration is modelled as a ConfiguredProcessor. A Processor can consist of multiple tasks (note: for Sentinel-5P only one task per Processor is expected).
ProcessorClass
A type of processor capable of generating products of a specific set of ProductClasses. There can be only one ProcessorClass capable of generating products of any one ProductClass.
Product
An instantiation of a ProductClass for a specific period of time (e. g. one orbit) and of a specific version. It is allowed to generate multiple products for the same ProductClass and time period, since equality of products is defined based on their attribute values.
Products are considered equal if either of the following alternatives holds:
The database IDs are equal (inherited from PersistentObject)
The UUIDs are equal or at least one of the UUIDs is null (i.e. they do not have different UUIDs)
All of the following attributes are equal:
Product class
Configured processor
Sensing start/stop times
Processing mode
File class
Product quality
Production type
All product parameters present in both products (additional parameters on either product will be ignored)
Note that the generation time is not considered relevant for product equality, because two processings with the same set of attributes as listed above are expected to produce the same output.
If a product is associated to an orbit, its validity period may still differ from the orbit times, but its validity end time must not extend further than into the following orbit (e. g. a near-realtime time slice beginning in one orbit, but also including some data from the subsequent orbit).
ProductClass
A class of products pertaining to a specific Mission, e. g. the L2_O3 products of Sentinel-5P. A ProductClass can describe final (deliverable) products as well as intermediate products. For a ProductClass its dependency on base products can be described using SelectionRules. Alternatively a ProductClass may be composed of other product classes (e. g. the S5P NPP products consist of three separate single-band NPP sub-products).
ProductQuery
A ProductQuery models the need of a JobStep to use a Product of a certain ProductClass for a specific time period. The time period can be defined by conditions, and a Product is said to satisfy a ProductQuery, if it matches the given conditions. A JobStep can be executed as soon as all its ProductQuerys are satisfied.
SimplePolicy
A product retrieval policy consisting of a retrieval mode and a time interval with delta times as defined in Annex B of ESA's Generic IPF Interface Specifications.
Note: As a future extension selection policies based on spatial coverage are envisioned.
SimpleSelectionRule
A rule defining the required input ProductTypes for a certain output ProductType using an ordered list of SelectionPolicys. When selecting applicable Products for a JobStep the matching SelectionPolicy defines whether a Product satisfies a ProductQuery. Simple Selection Rules may be restricted to be applicable for only a well-defined set of Configured Processors.
Task
A single, separately adressable execution step of a Processor. Tasks may be flagged as "external", in which case the input data products are forwarded to an external entity for processing, and the output products are retrieved from that external entity. (Level 4 "Task" from Generic IPF Interface Specifications, sec. 4.1.3)
Workflow
A Workflow is a template for a processing order. For On-demand processing it allows to select a suitable ConfiguredProcessor based on a given input product type (and possibly also an output product type). For Systematic Production it supports automatic generation of processing orders based on incoming lower-level products. Within a given mission, the combination of workflow name and version must be unique.
This class must not be confused with the generic concept of a "workflow" in the sense of chained processing steps, since such a concept does not exist in prosEO. The class name is derived from ESA's On-Demand Production Interface Delivery Point (ODPRIP) API.
Table 2‑1: Metadata
database classes
The processing system is capable to serve multiple missions. Therefore,
a mission metadata model has been designed for the configuration of
individual missions operating one or more spacecrafts each:
Figure 2‑2: Data model
extension for multi-mission configuration
The table below details the classes for the multi-mission configuration
extension:
Entity (Class)
Description
ArchiveType
Interface protocol to use for a Product Archive
Mission
An Earth Observation mission (currently only Sentinel-5P).
Orbit
The description of an orbit identified by its start and stop times (e. g. the "spacecraft midnight" events of the Sentinel-5P satellite). There must be no time gap between subsequent orbits of the same spacecraft.
Orbit times (and all derived times in prosEO) are given in UTC-STS (leap seconds spread evenly over the last 1000 seconds of the day) and to a microsecond precision. The public static variable orbitTimeFormatter gives a standard format for parsing and formatting orbit times.
Payload
The payload of a spacecraft, e. g. the TROPOMI instrument of Sentinel-5P. A spacecraft may have multiple payloads.
ProcessingOrder
A customer order to process a specific set of ProductClasses for a specific period of time using a specific set of ConfiguredProcessors. An order may have properties like a product quality indicator (test vs operational), specific product delivery endpoints, specific (potentially mission-dependent) product generation attributes (e. g. a Copernicus collection number) etc.
ProcessorClass
A type of processor capable of generating products of a specific set of ProductClasses. There can be only one ProcessorClass capable of generating products of any one ProductClass.
ProductArchive
Available archive locations for input products or auxiliary files. Product archives are by design mission-neutral, but the credentials may actually restrict an archive to a specific mission. In such a case, if the same endpoint shall be used for multiple missions, the product archives must be differentiated in their short codes.
ProductClass
A class of products pertaining to a specific Mission, e. g. the L2_O3 products of Sentinel-5P. A ProductClass can describe final (deliverable) products as well as intermediate products. For a ProductClass its dependency on base products can be described using SelectionRules. Alternatively a ProductClass may be composed of other product classes (e. g. the S5P NPP products consist of three separate single-band NPP sub-products).
Spacecraft
A spacecraft used for a specific Mission. A Mission may operate more than one spacecraft.
Table 2‑2: Multi-mission
configuration classes
Data Model Aspects
Several aspects of the data model are shown in greater detail in the
following diagrams.
Figure 2‑3: Data model
for product classes and products
Figure 2‑4: Data model
for processor classes, processors and configurations
Figure 2‑5: Data model
for order entry and job generation
Figure 2‑6: Data model
for user management
Class Descriptions
The tables below describe each of the classes for the prosEO Metadata
Database (note that attribute multiplicities are not shown due to the
way this document is generated):
General Classes
Entity (Class)
Description
PersistentObject
The root class of all persistent objects. It provides an ID, a version and a set of mission-specific parameters for the object.
Attribute
Type
Description
id
long
The persistent database ID of the object (an "assigned identifier" according to JPA)
version
int
A version identifier to track updates to the object (especially to detect concurrent update attempts).
Parameter
This class allows to add mission-specific parameters to any persistent object. A parameter consists of a type (of the enum ParameterType) and a value with a class that corresponds to the type.
Example: Parameters for S5P include "collectionNumber", "revision" etc.
Attribute
Type
Description
parameterClob
String
A string parameter value of more than 255 characters (takes precedence over any value in the parameterValue attribute).
parameterName
String
The parameter name
parameterType
ParameterType
The type of the parameter
parameterValue
Object
The parameter value (unless it is a string of more than 255 characters, in which case the parameter value is stored in parameterClob).
ParameterType
The Java data type of the parameter
Attribute
Description
BOOLEAN
A boolean value ("true" or "false")
DOUBLE
A double-precision floating-point number (Java Double)
INSTANT
A point in time (Java Instant)
INTEGER
An integer number
STRING
A Java string
Mission Configuration
Entity (Class)
Description
Mission
An Earth Observation mission (currently only Sentinel-5P).
Attribute
Type
Description
code
String
The mission code (e. g. S5P)
fileClasses
String
Allowed file classes for this mission (Ground Segment File Format Standard, sec. 4.1.2)
name
String
The mission name (e. g. Sentinel-5 Precursor)
orderRetentionPeriod
Duration
The default period of time for keeping orders after their completion. If not set for the mission, automatic order deletion will not take place. If set, must not be greater than productRetentionPeriod, otherwise products cannot be deleted, when reaching their eviction time. Order deletion will only take place for orders with productionType SYSTEMATIC_PRODUCTION.
processingCentre
String
An identifying string for the processing centre (organisation) operating this prosEO instance according to mission-specific conventions
processingModes
String
Processing mode tags as agreed for this mission (level 7 "Mode" from Generic IPF Interface Specifications, sec. 4.1.3).
The tag names can be chosen according to the processing operational needs and configuration. Examples of name operationally used in existing Processing Facilities are herewith provided:
NRT: near real time orders
SYSTEMATIC: routine production orders
REPROCESSING: Batch reprocessing (with new auxiliary files) of previously executed orders
SUBS: “slice” orders, that is, orders dedicated to extract a sub- portion from a previously generate product
productFileTemplate
String
Template for the generation of product files, indicating variable parts using Spring Expression Language, e. g. "S5P_${fileClass}_${productClass.missionType}_${T(java.time.format.DateTimeFormatter).ofPattern(\"uuuuMMdd'T'HHmmss\").withZone(T(java.time.ZoneId).of(\"UTC\")).format(sensingStartTime)}_${T(java.time.format.DateTimeFormatter).ofPattern(\"uuuuMMdd'T'HHmmss\").withZone(T(java.time.ZoneId).of(\"UTC\")).format(sensingStopTime)}_${(new java.text.DecimalFormat(\"00000\")).format(orbit.orbitNumber)}_${parameters.get(\"copernicusCollection\").getParameterValue()}_${configuredProcessor.processor.processorVersion.replaceAll(\"\\.\", \"\")}_${T(java.time.format.DateTimeFormatter).ofPattern(\"uuuuMMdd'T'HHmmss\").withZone(T(java.time.ZoneId).of(\"UTC\")).format(generationTime)}.nc" (based on the Sentinel-5P file naming convention). May be overriden at ProductClass level.
productRetentionPeriod
Duration
The default period of time for keeping products after their generation. If not set for the mission or a processing order, automatic product deletion will not take place. If set, must not be less than orderRetentionPeriod, otherwise products cannot be deleted, when reaching their eviction time.
Spacecraft
A spacecraft used for a specific Mission. A Mission may operate more than one spacecraft.
Attribute
Type
Description
code
String
The short code for the spacecraft (e. g. TDX1), unique within a mission
name
String
The spacecraft name (e. g. TanDEM-X)
Payload
The payload of a spacecraft, e. g. the TROPOMI instrument of Sentinel-5P. A spacecraft may have multiple payloads.
Attribute
Type
Description
description
String
The payload description
name
String
The payload name (instrument short name), e. g. "TROPOMI".
Orbit
The description of an orbit identified by its start and stop times (e. g. the "spacecraft midnight" events of the Sentinel-5P satellite). There must be no time gap between subsequent orbits of the same spacecraft.
Orbit times (and all derived times in prosEO) are given in UTC-STS (leap seconds spread evenly over the last 1000 seconds of the day) and to a microsecond precision. The public static variable orbitTimeFormatter gives a standard format for parsing and formatting orbit times.
Attribute
Type
Description
orbitNumber
Integer
The orbit number (usually starting at 1 at launch); unique for a spacecraft and usually gapless
startTime
Instant
The start time of the orbit (e. g. using a Spacecraft Midnight Crossing [SMX] event)
stopTime
Instant
The stop time of the orbit (e. g. using a Spacecraft Midnight Crossing [SMX] event); usually the stop time of one orbit is the start time of the subsequent orbit
ProductArchive
Available archive locations for input products or auxiliary files. Product archives are by design mission-neutral, but the credentials may actually restrict an archive to a specific mission. In such a case, if the same endpoint shall be used for multiple missions, the product archives must be differentiated in their short codes.
Attribute
Type
Description
archiveType
ArchiveType
Interface protocol for this archive
baseUri
String
Base URI to access the archive (of the form "http[s]://<hostname>[:<port>]", no trailing slash)
clientId
String
Client-ID for OpenID-based token requests
clientSecret
String
Client secret for OpenID-based token requests
code
String
Short code for the archive
context
String
The context path of the archive service endpoint
name
String
Descriptive name for the archive
password
String
Password for Basic Authentication (CAUTION: Clear text)
sendAuthInBody
boolean
Flag indicating whether credentials for OpenID-based token requests shall be sent in request body
tokenRequired
boolean
Flag indicating whether token-based authentication shall be used
tokenUri
String
The full URI for token requests (may be routed to a different host from the archive service itself)
username
String
The username for Basic Authentication (either for a token request or for a service request, if token-based authentication is not used)
ArchiveType
Interface protocol to use for a Product Archive
Attribute
Description
AIP
Archive Interface Point (see "Copernicus Space Component – Long Term Archive Interface Control Document", ESA-EOPG-EOPGC-IF-2)
AUXIP
Auxiliary Data Interface Point (see "Copernicus Space Component – Auxiliary Data Interface Delivery Point Specification", ESA-EOPG-EOPGC-IF-10)
PODIP
Precise Orbit Determination Interface Delivery Point (see AUXIP for reference)
PRIP
Production Service Interface Point (see "Copernicus Space Component – Production Interface Delivery Point Specification", ESA-EOPG-EOPGC-IF-3)
SIMPLEAIP
Long Term Archive with restricted AIP implementation. Searches will rely on the product type being part of the file name, and product detail data (expanded attributes) will be read in a separate AIP request.
CAUTION: This approach may not work for all missions, esp. if the product type is not part of the file name, as may be the case for auxiliary files, which do not adhere to mission file naming conventions.
Table 3‑1: Mission
configuration class detail
Product Classes, Selection Rules and Products
Entity (Class)
Description
ProductClass
A class of products pertaining to a specific Mission, e. g. the L2_O3 products of Sentinel-5P. A ProductClass can describe final (deliverable) products as well as intermediate products. For a ProductClass its dependency on base products can be described using SelectionRules. Alternatively a ProductClass may be composed of other product classes (e. g. the S5P NPP products consist of three separate single-band NPP sub-products).
Attribute
Type
Description
defaultSliceDuration
Duration
The default slice length to be applied; mandatory if the default slicing type is "TIME_SLICE"
defaultSlicingType
OrderSliceType
A default slicing method to apply for the generation of products of this type. This allows for the generation of products of varying validity interval lengths with a single order. If it is not set, then the slicing type given for the order or (if this is an intermediate product) for the products further down in the processing chain will be applied.
description
String
A short description of the product type to display as informational text on the user interface
processingLevel
ProcessingLevel
The level of processing required for this product class (roughly equivalent to the number of processing steps required to produce data of this product class from unprocessed [level 0] data).
Note: If the processing level is not set, products of this product class will not be reported by the monitoring component.
productFileTemplate
String
Template for the generation of product files, indicating variable parts using Spring Expression Language; overrides file naming convention set in the Mission object.
productType
String
The product type as it is agreed in the mission specification documents (e. g. L2_CLOUD___); unique within a mission
visibility
ProductVisibility
Visibility of products of this class to external users (internally all products are visible at all times)
ProductVisibility
Visibility of products to external users (internally all products are visible at all times)
Attribute
Description
INTERNAL
Products of this class are not visible on external APIs
PUBLIC
Products of this class are visible to all users on external APIs
RESTRICTED
Products of this class are only visible to specially authorized users on external APIs
ProcessingLevel
Processing level, usually indicating the number of processing steps required to create a product of this class from unprocessed ("level 0") data. The enumeration values have been derived from a number of sources (listed below).
Justification: Informational attribute requested in ESA's Sentinel-5P Product Unit Definition and Metadata ICD (ESA-EOPG-EOPGC-SP-4, issue 1.4; a similar attribute will probably be requested for other Sentinel missions). In the framework of the Sentinel missions at least the following processing levels are used: L0, L1, L1A, L1B, L1C, L2, L2A, L2C. Processing of L3 products is planned for Sentinel-5P.
Level zero: Reconstructed, unprocessed instrument and payload data at full resolution, with any and all communications artifacts
L1
Level one: Data derived from level 0 at the instrument’s full time/space resolution, including supplemental information needed for further processing; the generic level L1 shall only be used, if none of the more specific levels L1A, L1B, L1C is applicable
L1A
Level 1A: Reconstructed, unprocessed instrument data at full resolution, time-referenced, and annotated with ancillary information, including radiometric and geometric calibration coefficients and georeferencing parameters
L1B
Level 1B: Level 1A data that have been processed to sensor units
L1C
Level 1C: Further processed data at sensor units (e. g. orthorectified data)
L2
Level 2: Data derived from Level 1 data that have been processed to geophysical quantities of interest, e.g. wave height, cloud fraction, aerosol optical depth or radiation at the top of atmosphere, possibly including uncertainty or quality estimates; the generic level L2 shall only be used, if none of the more specific levels L2A, L2B, L2C is applicable
L2A
Level 2A: Level 2 data in a first or intermediate processing stage
L2B
Level 2B: Further processed level 2(A) data
L2C
Level 2C: Sometimes referred to as “level 2 cumulative”, i. e. aggregation of level 2 data over a larger time frame
L3
Level 3: Variables mapped on uniform space-time grid scales (resampling), usually with some completeness and consistency; some sources (e. g. [3]) differentiate further into levels 3A, 3B etc.
L4
Level 4: Further derived products, e.g. climate indices, obtained from analysis of multiple lower-level products
SimpleSelectionRule
A rule defining the required input ProductTypes for a certain output ProductType using an ordered list of SelectionPolicys. When selecting applicable Products for a JobStep the matching SelectionPolicy defines whether a Product satisfies a ProductQuery. Simple Selection Rules may be restricted to be applicable for only a well-defined set of Configured Processors.
Attribute
Type
Description
filterConditions
Map<String, Parameter>
Parameter values to filter the selected products (triple of parameter key, parameter type and parameter value); checked against product parameter values by equality.
isMandatory
Boolean
Indicates whether the required source product is mandatory for the production of the target product (level 7 "Mandatory" from Generic IPF Interface Specifications, sec. 4.1.3)
minimumCoverage
Short
Minimum percentage of coverage of the desired validity period for fulfilment of this rule (default 0)
mode
String
Processing mode, for which this selection rule is valid (level 7 "Mode" from Generic IPF Interface Specifications, sec. 4.1.3); the attribute is optional, its values are restricted by the processing modes defined for the mission. If Selection Rules both without a mode and with a specific processing mode exist for a given source product class and configured processor combination, the rule for the specific processing mode prevails.
SimplePolicy
A product retrieval policy consisting of a retrieval mode and a time interval with delta times as defined in Annex B of ESA's Generic IPF Interface Specifications.
Note: As a future extension selection policies based on spatial coverage are envisioned.
Attribute
Type
Description
deltaTimes
DeltaTime
The delta time to apply to the start (index 0) and end (index 1) of the selection period. Note that delta times always enlarge the selection period, they cannot be negative (i. e. reduce the interval).
policyType
PolicyType
The policy type to use
DeltaTime
Class representing a single overlapping time period
Attribute
Type
Description
duration
long
The duration of the time period in time units
unit
TimeUnit
The time unit applicable for this time period
PolicyType
Available policy types as defined in ESA's Generic IPF Interface Specifications.
Note: For Sentinel-5P only the policies LatestValCover, LatestValIntersect, ValIntersect, LatestValidityClosest, LatestValidity are used.
Attribute
Description
BestCenteredCover
This mode gets the latest file which covers entirely time interval [t0 – dt0 , t1 + dt1], and for which is maximized the minimum distance of his extremes from the time interval borders. That is, if we name A and B the left and right endpoint of the file validity interval, the selected file is the one corresponding to maxi(min(Ai – (t0 – dt0 ), Bi – (t1 + dt1 )).
ClosestStartValidity
Product with start validity closest to selection interval start (t0-dt0), if multiple such products exist, select the one with the latest generation time (Sentinel-1/3 specific).
ClosestStopValidity
Product with start validity closest to selection interval end (t1+dt1), if multiple such products exist, select the one with the latest generation time (Sentinel-1/3 specific).
LargestOverlap
This mode gets the file (only one) that satisfies both the following conditions:
Basically the outcomes of this mode is the same as the following sequence is applied:
Get files with “ValCover” mode
Among the returned files select the one with the largest overlap.
If there are several products with the same overlap (e.g. full coverage), the product with the start time that is closest to t0 - dt0 is chosen. Note that in the full coverage case the result is identical to "ValCoverClosest".
LargestOverlap85
This mode is the same as LargestOverlap but only products with at least 85% coverage of the query interval are selected.
LastCreated
Product with latest (newest) generation time (Sentinel-1/3 specific)
LatestStartValidity
Alias for LatestValidity (Sentinel-1/3 specific)
LatestStopValidity
Latest product by validity stop time, which intersects with the selection time interval; if multiple such products exist, select the one with the latest generation time (Sentinel-1/3 specific)
LatestValCover
This mode gets the latest file that covers entirely time interval [t0 – dt0 , t1 + dt1]. The latest record is the one with the more recent Generation Date.
LatestValCoverClosest
This mode gets the file that:
covers entirely time interval interval [t0 - dt0 , t1 + dt1] and
has got the start time closest to t0-dt0.
Basically the outcomes of this mode is the same as the following sequence is applied:
Get files with “ValCover” mode
Among the returned files select the one with start time closest to t0-dt0.
LatestValCoverNewestValidity
This mode applies first “LatestValCover”. If no file is returned then it applies "Latest Validity"
LatestValidity
This mode gets a product with the latest Validity Start Time.
LatestValidityClosest
This mode gets the latest file which is nearest to ((t0–dt0)+( t1+dt1))/2.
LatestValIntersect
This mode gets the latest file that covers partly time interval [t0 – dt0 , t1 + dt1]. The latest record is the one with the more recent Generation Date.
ValCover
This mode gets all files that cover entirely time interval [t0 – dt0 , t1 + dt1].
ValIntersect
This mode gets all files that cover partly time interval [t0 – dt0 , t1 + dt1].
ValIntersectWithoutDuplicates
Alias for ValIntersect (Sentinel-1/3 specific)
Product
An instantiation of a ProductClass for a specific period of time (e. g. one orbit) and of a specific version. It is allowed to generate multiple products for the same ProductClass and time period, since equality of products is defined based on their attribute values.
Products are considered equal if either of the following alternatives holds:
The database IDs are equal (inherited from PersistentObject)
The UUIDs are equal or at least one of the UUIDs is null (i.e. they do not have different UUIDs)
All of the following attributes are equal:
Product class
Configured processor
Sensing start/stop times
Processing mode
File class
Product quality
Production type
All product parameters present in both products (additional parameters on either product will be ignored)
Note that the generation time is not considered relevant for product equality, because two processings with the same set of attributes as listed above are expected to produce the same output.
If a product is associated to an orbit, its validity period may still differ from the orbit times, but its validity end time must not extend further than into the following orbit (e. g. a near-realtime time slice beginning in one orbit, but also including some data from the subsequent orbit).
Attribute
Type
Description
evictionTime
Instant
The time from which on this product including its product files will be deleted from prosEO, unless other consistency constraints (e. g. existing processing orders) prevent it. Computed as the product generation time plus the product retention period from the generating processing order or from the mission. If the eviction time is not set and cannot be computed, then no automatic product deletion takes place.
fileClass
String
One of the file classes defined for the mission (Ground Segment File Format Standard, sec. 4.1.2)
generationTime
Instant
Product generation time
mode
String
Processing modes as defined for the enclosing mission
productClass
ProductClass
A reference to the ProductClass this Product realizes.
productionType
ProductionType
Type of production process generating this product.
productQuality
ProductQuality
Indicator for the suitability of this product for general use
publicationTime
Instant
Earliest time, at which a product file for this product was ingested; this timestamp will be preserved even after the deletion of all related product files
rawDataAvailabilityTime
Instant
The latest point in time, at which the input satellite raw data (e. g. CADU chunks) for this product or any of its input products became available for processing. This timestamp is primarily used to control timeliness requirements in systematic processing.
requestedStartTime
Instant
Product (validity) start time as requested during order planning; used by Production Planner to prevent double processing of the same product. Initially same as sensingStartTime.
requestedStopTime
Instant
Product (validity) stop time as requested during order planning; used by Production Planner to prevent double processing of the same product. Initially same as sensingStopTime.
sensingStartTime
Instant
Sensing start time; initially same as requestedStartTime, but may be updated after processing to reflect the actual product sensing times
sensingStopTime
Instant
Sensing stop time; initially same as requestedStopTime, but may be updated after processing to reflect the actual product sensing times
uuid
UUID
Universally unique product identifier (Production Interface Delivery Point Specification, sec. 3.1)
ProductQuality
Quality annotation for products (determined by processor configuration)
Attribute
Description
EXPERIMENTAL
Products created with an experimental configuration, possibly not suitable for general use
NOMINAL
Products with nominal (production, operational) quality
SYSTEMATIC
Products with nominal (production, operational) quality, generated from systematic processing.
TEST
Products generated for test use only, usually not suited for general use
ProductionType
Production context for the generation of a product (from the ESA PRIP API specification, ESA-EOPG-EOPGC-IF-3, issue 1.4, sec. 3.2)
Attribute
Description
ON_DEMAND_DEFAULT
The production is the result of an on-demand processing request with default workflow options applied.
ON_DEMAND_NON_DEFAULT
The production is the result of an on-demand processing request with non-default workflow options applied.
SYSTEMATIC
Standard systematic production has been applied.
DownloadHistory
History of product downloads; while originially bound to a ProductFile, the entry persists even after deletion of the ProductFile to give a full history of the Product downloads
Attribute
Type
Description
dateTime
Instant
The time of the download
productFileName
String
The file name of the downloaded ProductFile (persisted even after a possible deletion of the ProductFile)
productFileSize
Long
The product file size in bytes (persisted from ProductFile)
username
String
The user who initiated the download
ProductFile
The data file and pertinent auxiliary files for a product at a given processing facility. Each product has at most one data file representation at each of the processing facilities.
Attribute
Type
Description
auxFileNames
String
Names of auxiliary files being part of the product
checksum
string
Checksum value for the primary product file (computed by MD5 algorithm)
checksumTime
Instant
Checksum generation time
filePath
String
The path to the product files (POSIX file path, S3 bucket etc.)
fileSize
long
The size of the primary product file in bytes
productFileName
String
File name of the main product file
storageType
StorageType
Type of the storage location
zipChecksum
string
The MD5 checksum for the ZIP archive
zipChecksumTime
Instant
ZIP archive checksum generation time
zipFileName
string
The file name of the ZIP archive containing all product and auxiliary files intended for distribution
zipFileSize
long
The file size of the ZIP archive in bytes
StorageType
The available storage types
Attribute
Description
OTHER
Other, undefined storage type
POSIX
Plain file system storage conforming to the POSIX standard
S3
Storage conforming to Amazon Web Services S3 protocol
Table 3‑2: Product
class, selection rule and product class detail
Processor Classes, Versions and Configurations
Entity (Class)
Description
ProcessorClass
A type of processor capable of generating products of a specific set of ProductClasses. There can be only one ProcessorClass capable of generating products of any one ProductClass.
Attribute
Type
Description
processorName
String
User-defined processor class name (Processor_Name from Generic IPF Interface Specifications, sec. 4.1.3), unique within a mission
Processor
A specific version of a ProcessorClass. Each permissible combination of a specific Processor with a specific Configuration is modelled as a ConfiguredProcessor. A Processor can consist of multiple tasks (note: for Sentinel-5P only one task per Processor is expected).
Attribute
Type
Description
dockerImage
String
The name of the docker image (without registry address, to be configured externally!)
dockerRunParameters
Map<String, String>
Parameters to add to the "docker run" command
isTest
boolean
Indicates a test version of the processor ("Test" from Generic IPF Interface Specifications, sec. 4.1.3)
jobOrderVersion
JobOrderVersion
The Job Order file specification version to apply when generating Job Order files
maxTime
Integer
Execution time limit in seconds (default 0 means no limit; "Max_Time" from Generic IPF Interface Specifications, sec. 4.1.3)
minDiskSpace
Integer
Minimum disk space in MB, worst case estimate plus safety margin ("Min_Disk_Space" from Generic IPF Interface Specifications, sec. 4.1.3)
processorClass
ProcessorClass
The processor class this processor (version) belongs to
processorVersion
string
Version identification of the processor executable (Docker image; level 1 "Version" from Generic IPF Interface Specifications, sec. 4.1.3); a "newer" version is denoted by a lexicographically higher version string.
sensingTimeFlag
Boolean
Indicates whether the processor uses a sensing time interval as main processing parameter; if "true" a start/stop time is to be inserted into the "Sensing_Time" tag of the Job Order File ("Sensing_Time_flag" from Generic IPF Interface Specifications, sec. 4.1.3; deviating from the specification the default value is "true", because prosEO aims primarily at time-based processing)
useInputFileTimeIntervals
boolean
Indicates whether for input files in the Job Order file time intervals shall be given (this element is optional in the Job Order file).
Task
A single, separately adressable execution step of a Processor. Tasks may be flagged as "external", in which case the input data products are forwarded to an external entity for processing, and the output products are retrieved from that external entity. (Level 4 "Task" from Generic IPF Interface Specifications, sec. 4.1.3)
Attribute
Type
Description
breakpointFileNames
String
Intermediate output files for testing/evaluation purposes (level 5 "List_of_Breakpoints" from Generic IPF Interface Specifications, sec. 4.1.3)
criticalityLevel
Integer
Used in case of Pools composed by more than one task. If a critical task with a criticality level of "n" fails it will cause the kill of all the tasks in the pool having criticality level less than or equal to "n". The tasks with a criticality level higher than "n" will complete their execution before the whole processor is interrupted and marked as "failed". (level 5 "Criticality_Level" from Generic IPF Interface Specifications, sec. 4.1.3)
isCritical
Boolean
Indicates whether a failure of the task results in a failure of the whole processor (level 5 "Critical" from Generic IPF Interface Specifications, sec. 4.1.3)
minMemory
Integer
Minimum memory (RAM) requirement for this task in GiB (used by the Production Planner to request memory resources on a Kubernetes worker node when scheduling a task; if not set, no specific request will be made)
numberOfCpus
Integer
The number of CPUs used by the task (level 5 "Number_of_CPUs" from Generic IPF Interface Specifications, sec. 4.1.3; used by the Production Planner to request CPU resources on a Kubernetes worker node when scheduling a job step; if not set, no specific request will be made)
taskName
String
The task name (unique for the Processor, but no further restrictions; level 5 "Name" from Generic IPF Interface Specifications, sec. 4.1.3)
taskVersion
String
A version identifier for the task (level 5 "Version" from Generic IPF Interface Specifications, sec. 4.1.3)
Configuration
A specific processor configuration, tied to a specific ConfiguredProcessor object. It mainly consists of a set of configuration files and template information for creating Job Order files for the associated processor.
Attribute
Type
Description
configurationVersion
string
Version identification of the configuration environment (level 1 "Version" from Generic IPF Interface Specifications, sec. 4.1.3; but may be different from Processor version); a "newer" version is denoted by a lexicographically higher version string.
dockerRunParameters
Map<String, String>
Specific parameter for "docker run" valid for this configuration
dynProcParameters
Map<String, Parameter>
Dynamic processing parameters, the values denoting default values, which may be changed by the Job Order File generator ("List_of_Dyn_ProcParam" from Generic IPF Interface Specifications, sec. 4.1.3).
mode
String
The processing mode, for which this configuration is valid; optional attribute, if set, it must match one of the processing modes for the mission. If not set, this configuration is valid for all processing modes; if for any individual planning case both a configuration without a mode and a configuration with a mode matching the requested processing mode exists, the more specific configuration prevails.
Note that this does not make the "Processing_Mode" dynamic parameter obsolete: Since this parameter is mission-specific, no generic approach can ensure that it is set properly (or at all).
processorClass
ProcessorClass
The processor class this configuration version belongs to
productQuality
ProductQuality
Indicates the suitability for general use of products generated with this configuration
ConfigurationFile
A processor configuration file; configuration files must be provided statically to the processor container and will not be stored in the Storage Manager
Attribute
Type
Description
fileName
String
The POSIX file path for the configuration file (absolute according to the interface specification or relative to the processor working directory; level 3 "File_Name" from Generic IPF Interface Specifications, sec. 4.1.3)
fileVersion
String
A configuration file version identifier (level 3 "Version" from Generic IPF Interface Specifications, sec. 4.1.3)
InputFile
Input files for inclusion in generated Job Order Files; these files will be stored in the Storage Manager and provided from there, if they have the file name type "Physical".
Attribute
Type
Description
fileNames
String
A list of legal and valid filenames
fileNameType
String
Type of the file names (one of { "Physical", "Logical", "Stem", "Regexp", "Directory" }; Generic IPF Interface Specification, sec. 4.2.3); case-insensitive (will be forwarded to Job Order File as written)
fileType
String
File type according to processor-specific ICD or "LOG" (Generic IPF Interface Specification, sec. 4.2.3)
ConfiguredProcessor
A specific version of a Processor combined with a specific Configuration object (i. e. a specific set of configuration data for the given processor version). A ConfiguredProcessor is what must be specified for the generation of the products of a prosEO order.
Attribute
Type
Description
enabled
boolean
A job step using this configured processor for the generation of its output product can only be started, if the processor is enabled
identifier
String
User-defined identifier for this processor configuration (recommended to be derived from ProcessorClass::processorName and the version information of the associated Processor and Configuration objects), unique within the mission
uuid
UUID
A universally unique identifier (UUID) for this configured processor to identify it as "workflow" on ESA's ODPRIP API.
Workflow
A Workflow is a template for a processing order. For On-demand processing it allows to select a suitable ConfiguredProcessor based on a given input product type (and possibly also an output product type). For Systematic Production it supports automatic generation of processing orders based on incoming lower-level products. Within a given mission, the combination of workflow name and version must be unique.
This class must not be confused with the generic concept of a "workflow" in the sense of chained processing steps, since such a concept does not exist in prosEO. The class name is derived from ESA's On-Demand Production Interface Delivery Point (ODPRIP) API.
Attribute
Type
Description
description
String
Textual description of the workflow, including details of the processor version and configuration applicable; default value is an empty string.
enabled
boolean
Flag indicating whether this workflow is available for use (disabled workflows are not visible on the ODIP)
name
String
A short name for the workflow
outputFileClass
String
The file class of the generated output products (from the list of allowed file classes agreed for the mission)
outputParameters
Parameter
Parameters to set for the generated products
processingMode
String
The processing mode to run the processor(s) in (one of the modes specified for the mission)
sliceDuration
Duration
Duration of a time slice for slicing type TIME_SLICE
sliceOverlap
Duration
Overlap between adjacent time slices, half of the overlap is added at each end of the slice time interval
slicingType
OrderSlicingType
Method for slicing the orbit time interval into jobs for product generation (default "NONE" for automatically generated orders)
uuid
UUID
The unique identifier of the workflow
workflowVersion
String
Version number applicable to the workflow
WorkflowOption
Description of possible options, which can be set as "Dynamic Processing Parameters" in Job Orders created using the embedding Workflow
Attribute
Type
Description
defaultValue
String
The default value of the option (if a value range is given, then the default value must be contained in that range)
description
String
Textual description of the option, defaults to an empty string
name
String
Short name of the option
type
WorkflowOptionType
Data type of the option
valueRange
String
List of all possible values of the option (if any are given, the list is considered exhaustive)
WorkflowOptionType
Allowed types for workflow options
Attribute
Description
datenumber
Assumption is that this type means the day of year, i. e. it must be an integer number in the range 1..366
number
The option value must be numeric, but may integer or rational
string
The option value may be any string
Table 3‑3: Processor
class, version and configuration class detail (for InputFIlter and
ClassOutputParameter see sec. 3.5)
Order Entry and Job Generation
Entity (Class)
Description
ProcessingOrder
A customer order to process a specific set of ProductClasses for a specific period of time using a specific set of ConfiguredProcessors. An order may have properties like a product quality indicator (test vs operational), specific product delivery endpoints, specific (potentially mission-dependent) product generation attributes (e. g. a Copernicus collection number) etc.
Attribute
Type
Description
actualCompletionTime
Instant
Date and time when the output product(s) was/were available for download from the (OD)PRIP (mandatory for ProcessingOrders created via the ODIP, once they are in state "COMPLETED"; "CompletedDate" in ODPRIP ICD)
dynamicProcessingParameters
Parameter
Processing option settings (for on-demand processing called "WorkflowOptions" in the ICD); these options will be passed to the data processors in the "Dynamic Processing Parameter" section of the Job Order file.
If derived from a WorkflowOptions object, then the "Type" value given in that object will be mapped to parameterType as follows (this mapping will be reversed when creating the Job Order file):
"string" --> "STRING"
"number" --> if parameterValue is a valid integer then "INTEGER" else "DOUBLE"
"datenumber" --> "INTEGER"
estimatedCompletionTime
Instant
Estimated date and time when the output product(s) will be available for download from the (OD)PRIP (mandatory for ProcessingOrders created via the ODIP; "EstimatedDate" in ODPRIP ICD)
evictionTime
Instant
Time for automatic order deletion, if an orderRetentionPeriod is set for the mission and the productionType is SYSTEMATIC_PRODUCTION.
executionTime
Instant
Expected execution time (optional, used for scheduling)
hasFailedJobSteps
Boolean
Indicates whether at least one of the job steps for this order is in state FAILED
identifier
String
User-defined order identifier (unique within the mission)
orderSource
OrderSource
Source application for the processing order
orderState
OrderState
State of the processing order
outputFileClass
String
The file class of the generated output products (from the list of allowed file classes agreed for the mission)
outputParameters
Parameter
Parameters to set for the generated products.
Note: For Sentinel-5P at least the parameters "copernicusCollection" and "revision" are required
priority
Integer
Priority of the ProcessingOrder (lower number means lower priority; value range 1..100 is defined for the ODIP, but other values are allowed outside On-Demand Production, including negative numbers). Default value is 50.
processingMode
String
The processing mode to run the processor(s) in (one of the modes specified for the mission)
productionType
ProductionType
Production type context, in which the order is running
productRetentionPeriod
Duration
Period between product generation time and product eviction time for all products generated by job steps of this processing order (not just those of the output product classes). If the eviction period is not set, it will be taken from the mission default value; if that is not present either, no eviction time will be computed for the products.
releaseTime
Instant
Date and time at which the releasing of the ProcessingOrder was completed (used during priority calculation by the Production Planner)
sliceDuration
Duration
Duration of a time slice for slicing type TIME_SLICE
sliceOverlap
Duration
Overlap between adjacent time slices, half of the overlap is added at each end of the slice time interval.
slicingType
OrderSlicingType
Method for slicing the orbit time interval into jobs for product generation
startTime
Instant
The start time of the time interval to process. If a range of orbit numbers is given, this time is set to the earliest start time of the selected orbits.
stateMessage
String
Explanatory message describing the reason for the latest state change ("StatusMessage" in ODPRIP ICD), mandatory for ProcessingOrders created via the ODIP
stopTime
Instant
The end time of the time interval to process. If a range of orbit numbers is given, this time is set to the latest stop time of the selected orbits.
submissionTime
Instant
Date and time at which the ProcessingOrder was received (mandatory for ProcessingOrders created via the ODIP; "SubmissionDate" in ODPRIP ICD)
uuid
UUID
The universally unique identifier (UUID) for this order
InputFilter
Filter conditions to apply to an input product of a specific product class in addition to filter conditions contained in the applicable selection rule
Attribute
Type
Description
filterConditions
Parameter
Input filter conditions consisting of a key (a product attribute or parameter name) and a value, which must be matched
ClassOutputParameter
Set of parameters to apply to a generated product of the referenced product class replacing the general output parameters
Attribute
Type
Description
outputParameters
Parameter
Output parameters consisting of a key (attribute or parameter name) and a value to set on a generated product
InputProductReference
Identification of the input product to use for On-Demand Production; its intention is to be unambiguous (as per ODPRIP ICD), however this is not guaranteed given the limited number of specification options (uniqueness may be guaranteed when specifying a file name, but it is not, when only specifying a sensing time range). The input product will be retrieved from some LTA, if it is not readily available in prosEO.
If only the "ContentDate" is given and multiple products fulfilling the criteria are found in the LTA or in prosEO, the product with the most recent generation time will be used. In the (unlikely) case of several products having the same generation time, the product with the greatest file name (alphanumeric string comparison) will be used. Duplicate file names are not allowed on any LTA or PRIP (and hence not in prosEO).
At least either the input file name or the sensing time interval must be specified.
Attribute
Type
Description
inputFileName
String
The file name of the input product to retrieve
sensingStartTime
Instant
Sensing start time of the input product
sensingStopTime
Instant
Sensing stop time of the input product
NotificationEndpoint
The endpoint to send order completion notifications to
Attribute
Type
Description
password
String
The password to authenticate with (using Basic Authentication), mandatory if username is given
uri
String
The URI used to notify the ProcessingOrder originator of the order completion (allowed protocols are "http:", "https:", "mailto:", "http:" only if no authentication is required)
username
String
The username to authenticate with (using Basic Authentication)
OrderState
Possible states for a processing order; recommended state transitions:
INITIAL -> APPROVED: Customer approved order parameters and/or committed budget
APPROVED -> PLANNED: Jobs for the processing order have been generated
APPROVED/PLANNED -> INITIAL: Reset order to initial state, deleting all existing jobs and job steps
PLANNED -> RELEASED: The order is released for running as planned
RELEASED -> RUNNING: The first jobs have started, further jobs can be started
RUNNING -> SUSPENDING: Order execution halted, no further jobs will be started (started jobs will be completed, if they are not halted themselves)
SUSPENDING -> PLANNED: All jobs for the order are either completed or halted (after suspending the order)
RUNNING -> COMPLETED: All jobs have been completed successfully
RUNNING -> FAILED: All jobs have been completed, but at least one of them failed
PLANNED -> FAILED: The order was cancelled by the operator
COMPLETED/FAILED ->; CLOSED: Delivery/failure has been acknowledged by customer and/or order fee has been paid
Attribute
Description
APPROVED
The order parameters have been approved by the customer
CLOSED
The operator has acknowledged (successful or unsuccessful) order completion by closing it
COMPLETED
All job steps for the order have been completed successfully
FAILED
All job steps of the order are finished, but at least one job step has failed, or the order has been cancelled.
INITIAL
The order has been created (or reset) and is open for modification.
PLANNED
The order has been planned by the Production Planner
PLANNING
ProcessingOrder planning has been started, but is not yet completed
RELEASED
The planning result for the order has been approved by the prosEO operator
RELEASING
ProcessingOrder has been released, but the release process is not yet completed for all jobs and job steps
RUNNING
The first job step for the order has started execution
SUSPENDING
A "suspend" command was issued on the order, but there are still job steps running
OrderSlicingType
Possible methods for partitioning the order time period into individual job time periods for product generation
Attribute
Description
CALENDAR_DAY
Create jobs by calendar day (in such a way that the first job starts no later than the beginning of the order time interval and the last job ends no earlier than the end of the time interval)
CALENDAR_MONTH
Create jobs by calendar month (in such a way that the first job starts no later than the beginning of the order time interval and the last job ends no earlier than the end of the time interval)
CALENDAR_YEAR
Create jobs by calendar year (in such a way that the first job starts no later than the beginning of the order time interval and the last job ends no earlier than the end of the time interval)
NONE
Do not attempt to create slices, but create a single job spanning exactly the time interval from startTime to stopTime.
ORBIT
Create jobs by orbit (preferably a list of orbits is then given for the order, if no such lists exists, generate jobs orbit-wise so that the time interval is fully covered, i. e. with the first orbit starting no later than the beginning of the time interval and the last orbit ending no earlier than the end of the time interval; jobs will be linked to their respective orbits)
TIME_SLICE
Create jobs in fixed time slices, starting with the start time of the order time interval and ending no earlier than the end of the time interval
Job
A collection of job steps required to fulfil an order for a specific period of time (e. g. one orbit).
Note: As a future extension a selection by geographical area in addition to or instead of a period of time is envisioned.
Attribute
Type
Description
hasFailedJobSteps
Boolean
Indicates whether at least one of the job steps for this job is in state FAILED
jobState
JobState
Status of the whole job; jobs in status INITIAL or ON_HOLD need to be released to reach status STARTED, jobs in status STARTED can be set to ON_HOLD, meaning that all qualifying dependent job steps are returned to status INITIAL (i. e. except those in status RUNNING, COMPLETED and FAILED).
priority
Integer
A processing priority (lower numbers indicate lower priority, higher numbers higher priority; the default value is 50 in accordance with the default for ProcessingOrder).
startTime
Instant
The start time of the time interval, for which products shall be generated. If the job is orbit-related, this time is copied from the start time of the orbit.
stopTime
Instant
The end time of the time interval, for which products shall be generated. If the job is orbit-related, this time is copied from the stopt time of the orbit.
JobState
Enumeration describing possible job states.
Attribute
Description
CLOSED
The owning ProcessingOrder has been closed.
COMPLETED
All job steps of this job terminated successfully
FAILED
All job steps of this jobs terminated, but at least one job step failed
INITIAL
The job has been created, but the associated order has not yet been released
ON_HOLD
The associated order has been suspended, and no new job steps may be started (job steps already running will finish, unless they are cancelled manually)
PLANNED
RELEASED
The order associated with this job has been released, and its job steps may start running
STARTED
At least one job step of this job has started execution
JobStep
A single processor execution to produce a defined output product based on a defined set of required input product (modelled as ProductQuery objects). A JobStep can be executed as soon as all its ProductQuerys are satisfied.
Attribute
Type
Description
isFailed
Boolean
Indicates, whether the job step failed (is set, when the job step enters FAILED state and remains set in CLOSED state, is reset when a retry is issued on the job step)
jobOrderFilename
String
The filename of the Job Order file in the associated processing facility
jobStepState
JobStepState
The currenet status of the job step; job steps in status INITIAL need to be released to advance to WAITING_INPUT status, job steps in status WAITING_INPUT and READY can be returned to INITIAL status. All other status transitions are automatic depending on processing progress.
outputParameters
Parameter
Additional parameters to set in the output product (derived from processing order)
priority
Integer
A processing priority (lower numbers indicate lower priority, higher numbers higher priority; propagated from Job)
processingCompletionTime
Instant
The completion time of the processing job
processingMode
String
The processing mode to run the processor(s) in (one of the modes specified for the mission)
processingStartTime
Instant
The start time of the processing job
processingStdErr
String
The standard error output of the processing job
processingStdOut
String
The standard output of the processing job
stderrLogLevel
StdLogLevel
Logging level for the processor’s error output.
stdoutLogLevel
StdLogLevel
Logging level for the processor’s standard output.
JobStepState
The possible processing states for a job step
Attribute
Description
CLOSED
The owning ProcessingOrder has been closed.
COMPLETED
The job step completed successfully
FAILED
The job step terminated unsuccessfully or has been cancelled
PLANNED
The job step has been created, but the associated order has not yet been released
READY
The job step is ready for execution and can be forwarded to a processing facility
RUNNING
The job step has started execution on some processing facility
WAITING_INPUT
The order associated with this job step has been released, but the expected input for the job step as defined by its product queries is not yet available
ProductQuery
A ProductQuery models the need of a JobStep to use a Product of a certain ProductClass for a specific time period. The time period can be defined by conditions, and a Product is said to satisfy a ProductQuery, if it matches the given conditions. A JobStep can be executed as soon as all its ProductQuerys are satisfied.
Attribute
Type
Description
filterConditions
Map<String, Parameter>
Additional filter conditions to apply to the selected products (derived from processing order)
inDownload
boolean
Indicates whether possible satisfying products are in download.
isSatisfied
boolean
Indicates whether this query is fully satisfied by the satisfying products.
jpqlQueryCondition
String
The product query as a JPQL (Java Persistence Query Language) query condition (if set, sqlQueryCondition must not be set)
requestedProductClass
ProductClass
The product class requested by the selection rule
sqlQueryCondition
String
The product query as a native SQL query condition (if set, jpqlQueryCondition must not be set)
ProcessingFacility
A processing facility for running prosEO jobs and storing prosEO product files, e. g. at a cloud service provider.
Attribute
Type
Description
defaultStorageType
StorageType
The default storage type (S3, POSIX, ...) to use in this facility.
description
String
A short description of the processing facility
externalStorageManagerUrl
String
The URL to access this facility's storage manager from an external client (via PRIP API)
facilityState
FacilityState
The run state the facility currently is in
localStorageManagerUrl
string
URL of the locally accessible Storage Manager instance on a specific processing node (to be used by the Processing Engine).
maxJobsPerNode
Integer
Maximum number of jobs, which may on average be scheduled per processing node on this processing facility (on a Kubernetes cluster with n worker nodes the Production Planner will never schedule more than n * maxJobsPerNode job steps).
name
String
The facility name (unique key)
processingEngineToken
string
Authentication token for connecting to this facility's processing engine (Kubernetes instance)
processingEngineUrl
String
The URL to access this facility's processing engine (Kubernetes instance)
storageManagerPassword
string
Password for connecting to the Storage Manager (locally and from external services)
storageManagerUrl
String
The URL to access this facility's storage manager from the control instance
storageManagerUser
string
User name for connecting to the Storage Manager (locally and from external services)
FacilityState
For the user as well as for planning and product access purposes it is important to know, whether a processing facility is operational or not. To this end the enumeration FacilityState provides the following values:
DISABLED
STOPPED
STARTING
RUNNING
STOPPING
Allowed state transitions are DISABLED <--> STOPPED --> STARTING --> RUNNING --> STOPPING --> STOPPED.
Justification: Processing facilities may be taken down for maintenance, and processing facilities may be defined before they actually become available in the Cloud. Introducing a facility state prevents failing requests to unavailable facilities and creates transparency for the user.
Attribute
Description
DISABLED
The processing facility must not be used. All requests concerning a facility in this state shall return the HTTP code 400 (Bad Request)
RUNNING
The processing facility is fully available. All requests are allowed.
STARTING
The processing facility is in the run-up process. The facility is available for order planning, job step starting may be initiated, but may time out, all other requests shall return the HTTP code 503 (Temporarily Unavailable) either immediately or after a reasonable time out period.
STOPPED
The processing facility is temporarily halted. The facility is available for order planning, but no job steps shall be started, and requests for product ingestion or download shall return the HTTP code 503 (Temporarily Unavailable) immediately.
STOPPING
The processing facility is in the process of being stopped. No new job steps shall be started, but running job steps are allowed to finish and can be queried. All other requests shall return the HTTP code 503 (Temporarily Unavailable) immediately.
Table 3‑4: Order entry
and job generation class detail
User Management
Entity (Class)
Description
User
A prosEO user (actually the user's credentials).
Attribute
Type
Description
enabled
boolean
Flag indicating whether the user account is enabled.
expirationDate
Date
The expiration date for the user account
password
string
The user's password (BCrypt encoded).
passwordExpirationDate
Date
The expiration date of the password
quota
Quota
Data download quota for this user (if not set, no quota applies)
username
string
The (unique) user name, consisting of the mission code, a hyphen ("-") and the actual user name (which is intended to be used across missions).
Authority
An authority (also called a "privilege") is an atomic entitlement for a user to access a prosEO method or domain object.
Attribute
Type
Description
authority
string
The authority identifier (may be prefixed by "ROLE_" to indicate a user role, or by other common prefixes). An authority identifier may occur at most once for each user.
Group
A group of users
Attribute
Type
Description
groupName
string
The (unique) name of the group, consisting of the mission code, a hyphen ("-") and the actual group name (which may be used across missions to denote equivalent functional groups).
id
long
Database generated ID value for the group.
GroupAuthority
A group authority (also called a "privilege") is an atomic entitlement for a group of users to access a prosEO method or domain object.
Attribute
Type
Description
authority
string
The identifier of the authority. A group authority may occur at most once for each group.
UserRole
Low-level user roles, which can be bundled for user groups.
In Spring Security, the user role values are prefixed with "ROLE_" to create authority strings for the Authority and GroupAuthority classes.
Attribute
Description
ARCHIVE_MGR
Create, update and delete access to product archive endpoints
ARCHIVE_READER
Read access to product archive endpoints
CLI_USER
User with command line access
CONFIGURATION_MGR
Create, update and delete access to configurations and configured processors
FACILITY_MGR
Create, update and delete access to processing facilities
FACILITY_MONITOR
Read access to facility monitoring data
FACILITY_READER
Read access to processing facilities
GUI_USER
User with GUI access
JOBSTEP_PROCESSOR
Notify of job step completion
MISSION_MGR
Update access to missions, spacecrafts and orbits
MISSION_READER
Read access to missions, spacecrafts and orbits
ORDER_APPROVER
Approve orders
ORDER_MGR
Create, update, close and delete orders
ORDER_MONITOR
Read access to order monitoring data
ORDER_PLANNER
Plan, release, suspend, cancel and retry orders, jobs and job steps
ORDER_READER
Read access to processing order, jobs and job steps
PRIP_USER
User with PRIP API access
PROCESSOR_READER
Read access to processor classes, processors, configurations, configured processors and any sub-objects of them
PROCESSORCLASS_MGR
Create, update and delete access to processor classes, processors and tasks
PRODUCT_GENERATOR
Upload products from internal source
PRODUCT_INGESTOR
Upload products from external source
PRODUCT_MGR
Update and delete products and product files
PRODUCT_READER
Query and download public products
PRODUCT_READER_ALL
Query and download all products
PRODUCT_READER_RESTRICTED
Query and download public and restricted products
PRODUCTCLASS_MGR
Create, update and delete access to product classes and selection rules
PRODUCTCLASS_READER
Read access to product classes and selection rules
ROOT
Root user, intended for mission creation/deletion and for creating the first user of a mission
USERMGR
A user role intended for managing users and groups and assigning authorities to them
WORKFLOW_MGR
Create, update and delete access to workflows
Quota
Monthly data volume granted to and actually used by a user
Attribute
Type
Description
assigned
Long
Monthly data volume allowance in Bytes
lastAccessDate
Date
Date of last recorded download (determines calendar month, for which the "used" volume count is valid)
used
Long
Data volume in Bytes used in the last recorded calendar month (will be reset, when an access in another calendar month than recorded in "lastAccessDate" happens)