Source: typedefs.js

/**
 * An error.
 * 
 * @typedef ApiError
 * @type {object}
 * @property {string} id 
 * @property {string} code 
 * @property {string} message 
 * @property {Array.<Link>} links 
 */

/**
 * Authentication Provider details.
 * 
 * @typedef AuthProviderMeta
 * @type {object}
 * @property {?string} id Provider identifier, may not be used for all authentication methods. 
 * @property {string} title Title for the authentication method.
 * @property {string} description Description for the authentication method.
 */

/**
 * Response for a HTTP request.
 * 
 * @typedef AxiosResponse
 * @type {object}
 * @property {*} data
 * @property {number} status
 * @property {string} statusText
 * @property {*} headers
 * @property {object.<string, *>} config
 * @property {*} request
 */

/**
 * @typedef BillingPlan
 * @type {object}
 * @property {string} name Name of the billing plan.
 * @property {string} description A description of the billing plan, may include CommonMark syntax.
 * @property {boolean} paid `true` if it is a paid plan, otherwise `false`.
 * @property {string} url A URL pointing to a page describing the billing plan.
 * @property {boolean} default `true` if it is the default plan of the back-end, otherwise `false`.
 */

/**
 * @typedef Collections
 * @type {object}
 * @property {Array.<Collection>} collections
 * @property {Array.<Link>} links
 * @property {Array.<string>} ["federation:missing"] A list of backends from the federation that are missing in the response data.
 */

/**
 * @typedef Collection
 * @type {object.<string, *>} 
 */

/**
 * @typedef FileTypesAPI
 * @type {object}
 * @property {object.<string, FileType>} input - File types supported to import
 * @property {object.<string, FileType>} output - File types supported to export
 */

/**
 * @typedef FileType
 * @type {object}
 * @property {string} title
 * @property {string} description
 * @property {Array.<string>} gis_data_types
 * @property {object.<string, *>} parameters
 * @property {Array.<Link>} links
 */

/**
 * Reference to a parameter.
 * 
 * @typedef FromNode
 * @type {object}
 * @property {string} from_node - The node identifier.
 */

/**
 * Reference to a parameter.
 * 
 * @typedef FromParameter
 * @type {object}
 * @property {string} from_parameter - The name of the parameter.
 */

/**
 * @typedef Item
 * @type {object.<string, *>} 
 */

/**
 * @typedef ItemCollection
 * @type {object}
 * @property {Array.<Item>} features - The items in the collection.
 * @property {?Array.<Link>} links - Additional links, e.g. for pagination.
 * @property {?string} timeStamp This property indicates the time and date when the response was generated.
 * @property {?number} numberMatched The number (integer) of features of the feature type that match the selection parameters.
 * @property {?number} numberReturned The number (integer) of features in the feature collection.
 */

/**
 * @typedef JobEstimate
 * @type {object}
 * @property {?number} costs
 * @property {string} duration
 * @property {number} size in bytes as integer
 * @property {?number} downloads_included integer
 * @property {string} expires
 */

/**
 * A link to another resource.
 * 
 * @typedef Link
 * @type {object}
 * @property {string} href The URL to the resource.
 * @property {?string} rel Relation type
 * @property {?string} type Media type
 * @property {?string} title Human-readable title
 * @property {?Array.<string>} roles A list of roles, if link is originating from an asset.
 */

/**
 * @typedef LogsAPI
 * @type {object}
 * @property {Array.<Log>} logs
 * @property {Array.<Link>} links
 */

/**
 * A log entry.
 * 
 * @typedef Log
 * @type {object}
 * @property {string} id 
 * @property {string} code 
 * @property {string} level
 * @property {string} message 
 * @property {*} data
 * @property {Array.<object.<string, ?string>>} path
 * @property {Array.<Link>} links 
 */

/**
 * Default OpenID Connect Client as returned by the API.
 * 
 * @typedef OidcClient
 * @type {object}
 * @property {string} id Client ID
 * @property {Array.<string>} grant_types Supported Grant Types
 * @property {Array.<string>} redirect_urls Allowed Redirect URLs
 */

/**
 * OpenID Connect Provider details as returned by the API.
 * 
 * @augments AuthProviderMeta
 * @typedef OidcProviderMeta
 * @type {object}
 * @property {string} id Provider identifier.
 * @property {string} title Title for the authentication method.
 * @property {string} description Description for the authentication method.
 * @property {string} issuer The OpenID Connect issuer location (authority).
 * @property {Array.<string>} scopes OpenID Connect Scopes
 * @property {Array.<OidcClient>} default_clients Default OpenID Connect Clients
 * @property {Array.<Link>} links Links
 */

/**
 * Connection options.
 * 
 * @typedef Options
 * @type {object}
 * @property {boolean} addNamespaceToProcess Add a namespace property to processes if set to `true`. Defaults to `false`.
 */

/**
 * @typedef Processes
 * @type {object}
 * @property {Array.<Process>} processes
 * @property {Array.<Link>} links
 * @property {?Array.<string>} namespaces EXPERIMENTAL!
 * @property {Array.<string>} ["federation:missing"] A list of backends from the federation that are missing in the response data.
 */

/**
 * An openEO processing chain.
 * 
 * @typedef Process
 * @type {object.<string, *>} 
 */

/**
 * An array of backends in the federation.
 * 
 * @typedef FederationBackend
 * @type {object}
 * @property {string} url URL to the versioned API endpoint of the back-end.
 * @property {string} title Name of the back-end.
 * @property {string} description A description of the back-end and its specifics.
 * @property {string} status Current status of the back-ends (online or offline).
 * @property {string} last_status_check The time at which the status of the back-end was checked last, formatted as a RFC 3339 date-time.
 * @property {string} last_successful_check If the `status` is `offline`: The time at which the back-end was checked and available the last time. Otherwise, this is equal to the property `last_status_check`. Formatted as a RFC 3339 date-time.
 * @property {boolean} experimental Declares the back-end to be experimental.
 * @property {boolean} deprecated Declares the back-end to be deprecated.
 */

/**
 * An array, but enriched with additional details from an openEO API response.
 * 
 * Adds two properties: `links` and `federation:missing`.
 * 
 * @typedef ResponseArray
 * @augments Array
 * @type {Array.<*>}
 * @property {Array.<Link>} links A list of related links.
 * @property {Array.<string>} ["federation:missing"] A list of backends from the federation that are missing in the response data.
 */

/**
 * @typedef ServiceType
 * @type {object.<string, *>}
 */

/**
 * @typedef SyncResult
 * @type {object}
 * @property {Stream.Readable|Blob} data The data as `Stream` in NodeJS environments or as `Blob` in browsers.
 * @property {?number} costs The costs for the request in the currency exposed by the back-end.
 * @property {?string} type The content media type returned by the back-end.
 * @property {Array.<Log>} logs Array of log entries as specified in the API.
 */

/**
 * @typedef UdfRuntime
 * @type {object.<string, *>}
 */

/**
 * @typedef UserAccountStorage
 * @type {object}
 * @property {number} free in bytes as integer
 * @property {number} quota in bytes as integer
 */

/**
 * @typedef UserAccount
 * @type {object}
 * @property {string} user_id
 * @property {?string} name
 * @property {?string} default_plan
 * @property {?UserAccountStorage} storage
 * @property {?number} budget
 * @property {?Array.<Link>} links
 */

/**
 * An array, but enriched with additional details from an openEO API response.
 * 
 * Adds the property `federation:backends`.
 * 
 * @typedef ValidationResult
 * @augments Array
 * @type {Array.<ApiError>}
 * @property {Array.<string>} ["federation:backends"] The back-ends that support / do not support the process.
 */