Skip to content

BKG 2.0, EBL 3.0: SD-2843: Add eblPlatform to Shipper, Consignee and Endorsee#608

Merged
HenrikHL merged 2 commits intomasterfrom
SD-2843_Add-eblPlatform
Feb 6, 2026
Merged

BKG 2.0, EBL 3.0: SD-2843: Add eblPlatform to Shipper, Consignee and Endorsee#608
HenrikHL merged 2 commits intomasterfrom
SD-2843_Add-eblPlatform

Conversation

@HenrikHL
Copy link
Contributor

@HenrikHL HenrikHL commented Feb 6, 2026

User description

SD-2843: Add eblPlatform to Shipper, Consignee and Endorsee


PR Type

Enhancement


Description

  • Add eblPlatform field to party schemas across multiple API versions

  • Field supports 16 eBL platform identifiers with validation constraints

  • Includes pattern validation and 4-character maximum length requirement

  • Applied consistently to Shipper, Consignee, and Endorsee party types


Diagram Walkthrough

flowchart LR
  PartySchemas["Party Schemas<br/>Shipper, Consignee, Endorsee"]
  eblPlatformField["eblPlatform Field<br/>string, maxLength 4"]
  PlatformValues["16 Platform Values<br/>WAVE, CARX, IDT, BOLE, etc."]
  MultipleAPIs["Multiple API Versions<br/>EBL 3.0.3, BKG 2.0.4, PINT 3.0.0"]
  PartySchemas -- "adds" --> eblPlatformField
  eblPlatformField -- "validates" --> PlatformValues
  eblPlatformField -- "deployed in" --> MultipleAPIs
Loading

File Walkthrough

Relevant files
Enhancement
EBL_v3.0.3.yaml
Add eblPlatform to EBL v3 party schemas                                   

ebl/v3/EBL_v3.0.3.yaml

  • Added eblPlatform field to 6 party-related schemas
  • Field includes pattern validation ^\S+$ and maxLength of 4
  • Comprehensive description listing 16 supported eBL platforms
  • Example value set to BOLE for all occurrences
+144/-0 
EBL_ISS_v3.0.3.yaml
Add eblPlatform to EBL issuance party schemas                       

ebl/v3/issuance/EBL_ISS_v3.0.3.yaml

  • Added eblPlatform field to 3 party-related schemas
  • Identical field definition with pattern and length constraints
  • Supports same 16 eBL platform identifiers
  • Example value set to BOLE
+72/-0   
EBL_PINT_v3.0.0.yaml
Add eblPlatform to PINT v3 party schemas                                 

pint/v3/EBL_PINT_v3.0.0.yaml

  • Added eblPlatform field to 3 party-related schemas
  • Consistent implementation with pattern validation and maxLength 4
  • Supports all 16 eBL platform identifiers
  • Example value set to BOLE
+72/-0   
BKG_v2.0.4.yaml
Add eblPlatform to BKG v2 party schemas                                   

bkg/v2/BKG_v2.0.4.yaml

  • Added eblPlatform field to 2 party-related schemas
  • Field definition matches other API versions with validation
    constraints
  • Supports 16 eBL platform identifiers including deprecated ESSD
  • Example value set to BOLE
+48/-0   
Configuration changes
styleguide.json
Update styleguide configuration                                                   

.stoplight/styleguide.json

  • Configuration file modified as part of API specification updates
+1/-1     

@qodo-code-review
Copy link

qodo-code-review bot commented Feb 6, 2026

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🟢
🎫 #SD-2843
🟢 Add an optional `eblPlatform` attribute to `Shipper`.
Add an optional `eblPlatform` attribute to `Consignee`.
Add an optional `eblPlatform` attribute to `Endorsee`.
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

🔴
Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status:
Missing enum validation: The new eblPlatform field claims it "MUST be one of" a fixed set of platform
identifiers but the schema only enforces pattern: ^\S+$ and maxLength: 4 without an
explicit enum (or equivalent), allowing invalid values to pass validation.

Referred Code
eblPlatform:
  type: string
  pattern: ^\S+$
  maxLength: 4
  description: |
    The eBL platform of the party. The value **MUST** be one of:
    - `WAVE` (Wave)
    - `CARX` (CargoX)
    - `ESSD` (EssDOCS - This value has been **deprecated**. Please use `IDT`)
    - `IDT` (ICE Digital Trade)
    - `BOLE` (Bolero)
    - `EDOX` (EdoxOnline)
    - `IQAX` (IQAX)
    - `SECR` (Secro)
    - `TRGO` (TradeGO)
    - `ETEU` (eTEU)
    - `TRAC` (Enigio trace:original)
    - `BRIT` (BRITC eBL)
    - `COVA` (Covantis)
    - `ETIT` (e-title)
    - `KTNE` (KTNET)


 ... (clipped 3 lines)

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an eblPlatform field to party schemas (Shipper, Consignee, Endorsee) across BKG 2.0 and eBL 3.0/PINT 3.0 specs.

Changes:

  • Added eblPlatform string property to relevant Party schemas in PINT v3.
  • Added eblPlatform string property to relevant Party schemas in eBL v3 (core + issuance).
  • Added eblPlatform string property to relevant Party schemas in BKG v2.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 3 comments.

File Description
pint/v3/EBL_PINT_v3.0.0.yaml Adds eblPlatform to PINT party schemas.
ebl/v3/issuance/EBL_ISS_v3.0.3.yaml Adds eblPlatform to issuance party schemas.
ebl/v3/EBL_v3.0.3.yaml Adds eblPlatform to core eBL party schemas.
bkg/v2/BKG_v2.0.4.yaml Adds eblPlatform to booking party schemas.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@qodo-code-review
Copy link

qodo-code-review bot commented Feb 6, 2026

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
Define eblPlatform schema centrally

The eblPlatform field definition is duplicated in over a dozen locations. To
improve maintainability and prevent future inconsistencies, define this schema
once as a reusable component and reference it using $ref.

Examples:

ebl/v3/EBL_v3.0.3.yaml [4600-4623]
        eblPlatform:
          type: string
          pattern: ^\S+$
          maxLength: 4
          description: |
            The eBL platform of the party. The value **MUST** be one of:
            - `WAVE` (Wave)
            - `CARX` (CargoX)
            - `ESSD` (EssDOCS - This value has been **deprecated**. Please use `IDT`)
            - `IDT` (ICE Digital Trade)

 ... (clipped 14 lines)
bkg/v2/BKG_v2.0.4.yaml [4549-4572]
        eblPlatform:
          type: string
          pattern: ^\S+$
          maxLength: 4
          description: |
            The eBL platform of the party. The value **MUST** be one of:
            - `WAVE` (Wave)
            - `CARX` (CargoX)
            - `ESSD` (EssDOCS - This value has been **deprecated**. Please use `IDT`)
            - `IDT` (ICE Digital Trade)

 ... (clipped 14 lines)

Solution Walkthrough:

Before:

# In ebl/v3/EBL_v3.0.3.yaml and other files
components:
  schemas:
    SomePartySchema:
      properties:
        partyName:
          ...
        eblPlatform:
          type: string
          pattern: ^\S+$
          maxLength: 4
          description: |
            The eBL platform of the party. The value **MUST** be one of:
            - `WAVE` (Wave)
            ... (and 15 more lines)
          example: BOLE
        # ... This 20+ line block is repeated in 13 other schemas

After:

# In ebl/v3/EBL_v3.0.3.yaml and other files
components:
  schemas:
    eblPlatform: # New reusable component
      type: string
      pattern: ^\S+$
      maxLength: 4
      description: |
        The eBL platform of the party. The value **MUST** be one of:
        - `WAVE` (Wave)
        ... (and 15 more lines)
      example: BOLE

    SomePartySchema:
      properties:
        partyName:
          ...
        eblPlatform:
          $ref: '#/components/schemas/eblPlatform' # Use reference
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies massive schema duplication across 14 locations, and proposing a reusable component is a critical improvement for long-term maintainability and consistency.

High
Possible issue
Use enum for stricter validation

Replace the pattern and maxLength validation for the eblPlatform field with an
enum to strictly enforce the list of allowed values.

ebl/v3/EBL_v3.0.3.yaml [4600-4623]

 eblPlatform:
   type: string
-  pattern: ^\S+$
-  maxLength: 4
   description: |
-    The eBL platform of the party. The value **MUST** be one of:
-    - `WAVE` (Wave)
-    - `CARX` (CargoX)
-    - `ESSD` (EssDOCS - This value has been **deprecated**. Please use `IDT`)
-    - `IDT` (ICE Digital Trade)
-    - `BOLE` (Bolero)
-    - `EDOX` (EdoxOnline)
-    - `IQAX` (IQAX)
-    - `SECR` (Secro)
-    - `TRGO` (TradeGO)
-    - `ETEU` (eTEU)
-    - `TRAC` (Enigio trace:original)
-    - `BRIT` (BRITC eBL)
-    - `COVA` (Covantis)
-    - `ETIT` (e-title)
-    - `KTNE` (KTNET)
-    - `CRED` (Credore)
-    - `BLOC` (BlockPeer Technologies)
+    The eBL platform of the party. The value `ESSD` (EssDOCS) has been **deprecated**, please use `IDT` instead.
   example: BOLE
+  enum:
+    - WAVE
+    - CARX
+    - ESSD
+    - IDT
+    - BOLE
+    - EDOX
+    - IQAX
+    - SECR
+    - TRGO
+    - ETEU
+    - TRAC
+    - BRIT
+    - COVA
+    - ETIT
+    - KTNE
+    - CRED
+    - BLOC
  • Apply / Chat
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies that using pattern and maxLength is insufficient for validation and proposes using enum, which is the standard and more robust way to enforce a list of allowed values in an OpenAPI schema.

Medium
Quote the regex pattern

Add quotes around the pattern regex ^\S+$ to ensure it is parsed as a string.

ebl/v3/EBL_v3.0.3.yaml [4600-4603]

 eblPlatform:
   type: string
-  pattern: ^\S+$
+  pattern: '^\S+$'
   maxLength: 4
  • Apply / Chat
Suggestion importance[1-10]: 2

__

Why: While quoting special strings in YAML is a good practice for clarity and to prevent potential parsing issues, the specific pattern ^\S+$ is unlikely to be misinterpreted by most parsers, making this a minor style improvement.

Low
  • Update

@HenrikHL HenrikHL merged commit 70f9227 into master Feb 6, 2026
1 check passed
@HenrikHL HenrikHL deleted the SD-2843_Add-eblPlatform branch February 6, 2026 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants