3.3.11.4. MDD Embedded Files API

Software Architecture: MDD Embedded Files API arch~sovd-api-mdd-embedded-files
status: draft

Note

This is a SOVD-API extension.

Motivation

When an additional private SOVD-Server is tasked with providing functionality that replaces classic offboard-tester functionality, additional data from the single-ecu-jobs embedded in the original pdx-file can be required.

The odx-converter offers an option to include code-files from the pdx, as well as partial contents from those files. This API allows the retrieval of these files.

Embedded Content Retrieval

The API to retrieve embedded files utilizes a bulk-data endpoint, as defined in Bulk Data

Endpoints within /components/{ecuName}:

MDD embedded files endpoints

Method

Path

Description

GET

/x-sovd2uds-bulk-data/mdd-embedded-files

Returns a list of items which represent the files and their metadata

GET

/x-sovd2uds-bulk-data/mdd-embedded-files/{id}

Returns an item, which is the data that was embedded

Other methods are not allowed (e.g. data can’t be modified), and will return an HTTP 405 error code.

' SPDX-FileCopyrightText: 2026 Copyright (c) Contributors to the Eclipse Foundation
'
' See the NOTICE file(s) distributed with this work for additional
' information regarding copyright ownership.
'
' This program and the accompanying materials are made available under the
' terms of the Apache License Version 2.0 which is available at
' https://www.apache.org/licenses/LICENSE-2.0
'
' SPDX-License-Identifier: Apache-2.0

@startuml
title MDD Embedded Files

participant Client
participant "HTTP Server\n(Axum)" as HTTP
participant "Security\nMiddleware" as SEC
participant "Embedded Files\nHandler" as HANDLER
participant "File Manager" as FM

== List embedded files ==

Client -> HTTP : GET /components/{ecu}/x-sovd2uds-bulk-data/mdd-embedded-files
activate HTTP

HTTP -> SEC : authenticate & authorize
activate SEC
SEC -> HTTP : OK
deactivate SEC

HTTP -> HANDLER : route to embedded files handler
activate HANDLER

HANDLER -> FM : list()
activate FM
FM -> HANDLER : HashMap<id, ChunkMetaData>
deactivate FM

HANDLER -> HTTP : JSON body
deactivate HANDLER

HTTP -> Client : HTTP 200 OK\n{ "items": [ { "id": "...", ... }, ... ] }
deactivate HTTP

== Download embedded file ==

Client -> HTTP : GET /components/{ecu}/x-sovd2uds-bulk-data/mdd-embedded-files/{id}
activate HTTP

HTTP -> SEC : authenticate & authorize
activate SEC
SEC -> HTTP : OK
deactivate SEC

HTTP -> HANDLER : route to embedded files handler
activate HANDLER

HANDLER -> FM : get(id)
activate FM
FM -> FM : lazily load payload\nfrom MDD file
FM -> HANDLER : (ChunkMetaData, binary data)
deactivate FM

HANDLER -> HTTP : binary response
deactivate HANDLER

HTTP -> Client : HTTP 200 OK\nContent-Type: <mime-type>\n<binary data>
deactivate HTTP

@enduml