Skip to content

Conversation

@HenrikHL
Copy link
Contributor

@HenrikHL HenrikHL commented Jan 26, 2026

User description

SD-2525: Add optional 'Inner packagings' inside Inner packagings

As bonus: aligned the capitalization and formatting on:

  • Inner Packaging
  • Overpacking
  • Outer Packaging

PR Type

Enhancement


Description

  • Add nested Inner Packagings support within Inner Packaging schema

  • Standardize capitalization and formatting of packaging terminology

  • Update documentation strings for consistency across all API specs


Diagram Walkthrough

flowchart LR
  IP["Inner Packaging"]
  NIP["Nested Inner Packagings"]
  IP -- "can now contain" --> NIP
  NIP -- "self-referential" --> IP
  OP["Outer Packaging/Overpack"]
  OP -- "contains" --> IP
  DOCS["Documentation Strings"]
  DOCS -- "standardized formatting" --> OP
  DOCS -- "standardized formatting" --> IP
Loading

File Walkthrough

Relevant files
Enhancement
EBL_v3.0.3.yaml
Add nested Inner Packaging and standardize terminology     

ebl/v3/EBL_v3.0.3.yaml

  • Added innerPackagings array field to InnerPackaging schema enabling
    nested packaging support
  • Standardized capitalization of Outer Packaging/Overpack, Overpacks,
    and Inner Packaging terminology
  • Updated all description fields to use backtick formatting for
    consistent terminology references
  • Changed Inner Packings to Inner Packagings for consistency
+19/-13 
BKG_v2.0.4.yaml
Add nested Inner Packaging and standardize terminology     

bkg/v2/BKG_v2.0.4.yaml

  • Added innerPackagings array field to InnerPackaging schema for nested
    packaging support
  • Standardized capitalization and backtick formatting for Outer
    Packaging/Overpack and Inner Packaging
  • Updated description strings to use consistent terminology references
  • Changed Inner Packings to Inner Packagings for consistency
+12/-6   
EBL_ISS_v3.0.3.yaml
Add nested Inner Packaging and standardize terminology     

ebl/v3/issuance/EBL_ISS_v3.0.3.yaml

  • Added innerPackagings array field to InnerPackaging schema enabling
    nested packaging
  • Standardized capitalization and backtick formatting for packaging
    terminology
  • Updated description strings for Outer Packaging/Overpack and Inner
    Packaging
  • Changed Inner Packings to Inner Packagings for consistency
+12/-6   
EBL_PINT_v3.0.0.yaml
Add nested Inner Packaging and standardize terminology     

pint/v3/EBL_PINT_v3.0.0.yaml

  • Added innerPackagings array field to InnerPackaging schema for nested
    packaging support
  • Standardized capitalization and backtick formatting for Outer
    Packaging/Overpack and Inner Packaging
  • Updated all description fields to use consistent terminology
    references
  • Changed Inner Packings to Inner Packagings for consistency
+12/-6   
Configuration changes
styleguide.json
Update styleguide configuration                                                   

.stoplight/styleguide.json

  • Configuration file modifications to support updated schema standards
+1/-1     

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 26, 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-2525
🟢 Add an optional nested innerPackagings field inside Inner Packaging to support a third
packaging level (inner packagings within inner packagings) for DG shipments.
Align/standardize terminology capitalization and formatting in the packaging-related
schema documentation (e.g., Outer Packaging/Overpack, Inner Packaging).
🔴 Ensure the nested “Next Inner Packaging” structure supports quantity (mandatory), material
(optional), description (mandatory), and an optional nested inner packagings container.
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:
Unbounded recursion risk: The newly added self-referential InnerPackaging.innerPackagings array introduces
potentially unbounded nesting without explicit schema limits (e.g., depth/maxItems), which
may enable resource-exhaustion payloads unless additional validation is enforced
elsewhere.

Referred Code
innerPackagings:
  type: array
  description: |
    A list of `Inner Packagings` contained inside this `Inner Packaging`.
  items:
    $ref: '#/components/schemas/InnerPackaging'

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

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 26, 2026

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Limit nested array size

Add a maxItems constraint to the innerPackagings array to prevent performance
issues from unbounded nesting.

ebl/v3/EBL_v3.0.3.yaml [7218-7223]

 innerPackagings:
   type: array
+  maxItems: 10
   description: |
     A list of `Inner Packagings` contained inside this `Inner Packaging`.
   items:
     $ref: '#/components/schemas/InnerPackaging'
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that the new recursive innerPackagings property lacks a size limit, and proposing maxItems is a good practice to improve API robustness and prevent potential DoS or performance issues.

Medium
General
Add default empty array

Add default: [] to the innerPackagings array to ensure it is always present for
clients, even if empty.

ebl/v3/EBL_v3.0.3.yaml [7218-7223]

 innerPackagings:
   type: array
+  default: []
   description: |
     A list of `Inner Packagings` contained inside this `Inner Packaging`.
   items:
     $ref: '#/components/schemas/InnerPackaging'
  • Apply / Chat
Suggestion importance[1-10]: 4

__

Why: Adding default: [] is a reasonable improvement for client convenience, ensuring the innerPackagings property is always present, but it is not a required change and has a minor impact.

Low
  • Update

@HenrikHL HenrikHL requested a review from Copilot January 26, 2026 09:00
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

This PR adds support for nested Inner Packagings within the Inner Packaging schema and standardizes terminology formatting across multiple OpenAPI specifications (BKG 2.0, EBL 3.0, and PINT 3.0).

Changes:

  • Added recursive innerPackagings array field to enable nested packaging structures within Inner Packaging schema
  • Standardized capitalization and backtick formatting for packaging terminology (Outer Packaging/Overpack, Overpacks, Inner Packaging)
  • Corrected "Inner Packings" to "Inner Packagings" for consistency

Reviewed changes

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

Show a summary per file
File Description
ebl/v3/EBL_v3.0.3.yaml Added nested packaging support and standardized terminology in EBL v3 specification
bkg/v2/BKG_v2.0.4.yaml Added nested packaging support and standardized terminology in BKG v2 specification
ebl/v3/issuance/EBL_ISS_v3.0.3.yaml Added nested packaging support and standardized terminology in EBL issuance v3 specification
pint/v3/EBL_PINT_v3.0.0.yaml Added nested packaging support and standardized terminology in PINT v3 specification
.stoplight/styleguide.json Minor configuration update to support schema standards

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

@HenrikHL HenrikHL requested a review from Copilot January 26, 2026 09:04
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

Copilot reviewed 4 out of 5 changed files in this pull request and generated 1 comment.


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

@HenrikHL HenrikHL merged commit 896b6c4 into master Jan 26, 2026
1 check passed
@HenrikHL HenrikHL deleted the SD-2525_Add-InnerPackaging branch January 26, 2026 10:52
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.

3 participants