Data Model Reference - dlr-eoc/prosEO GitHub Wiki

Table of Content

Data Model Overview

  1. General Approach
  2. Data Model Aspects

Class Descriptions

  1. General Classes
  2. Mission Configuration
  3. Product Classes, Selection Rules and Products
  4. Processor Classes, Versions and Configurations
  5. Order Entry and Job Generation
  6. User Management

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.

Sources:
[1] https://science.nasa.gov/earth-science/earth-science-data/data-processing-levels-for-eosdis-data-products/
[2] https://cera-www.dkrz.de/docs/PostprocessingLevelDescriptions_for_CERA.pdf (based on [1])
[3] http://uregina.ca/piwowarj/Think/ProcessingLevels.html
[4] https://sentinel.esa.int/web/sentinel/sentinel-technical-guides

Attribute Description
L0 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:

  • covers entirely time interval interval [t0- dt0 , t1 + dt1]

  • has got the largest overlap.

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)

Table ‎3‑5: User management class detail

⚠️ **GitHub.com Fallback** ⚠️