oapi-profile-builder 3.4.0__tar.gz → 3.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. {oapi_profile_builder-3.4.0/src/oapi_profile_builder.egg-info → oapi_profile_builder-3.4.1}/PKG-INFO +49 -2
  2. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/README.md +48 -1
  3. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/pyproject.toml +1 -1
  4. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1/src/oapi_profile_builder.egg-info}/PKG-INFO +49 -2
  5. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/LICENSE +0 -0
  6. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/setup.cfg +0 -0
  7. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/__init__.py +0 -0
  8. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/cite.py +0 -0
  9. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/cite_features.py +0 -0
  10. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/cli.py +0 -0
  11. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/compile.py +0 -0
  12. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/cover.py +0 -0
  13. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/generate.py +0 -0
  14. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/models.py +0 -0
  15. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder/server_validation.py +0 -0
  16. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder.egg-info/SOURCES.txt +0 -0
  17. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder.egg-info/dependency_links.txt +0 -0
  18. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder.egg-info/entry_points.txt +0 -0
  19. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder.egg-info/requires.txt +0 -0
  20. {oapi_profile_builder-3.4.0 → oapi_profile_builder-3.4.1}/src/oapi_profile_builder.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oapi-profile-builder
3
- Version: 3.4.0
3
+ Version: 3.4.1
4
4
  Summary: Authoritative tooling for creating OGC API Service Profiles (EDR, Features)
5
5
  Author-email: Shane Mill <shane.mill@noaa.gov>
6
6
  License: Apache License
@@ -239,15 +239,21 @@ Everything about the document — cover, title-page metadata, legal page, footer
239
239
  | PDF colours (titles, tables, cover, backgrounds) | `document_metadata.colors` | `:presentation-metadata-color-*:` |
240
240
  | Page-ii legal text (copyright / license / notice) | `document_metadata.boilerplate` | `:boilerplate-authority:` |
241
241
  | Footer organisation name | `document_metadata.copyright_holder` | `:copyright-holder:` |
242
+ | Cover layout (logo size/position, tagline/title size, bold edition) | `document_metadata.cover.{logo_width, logo_y, tagline_font_size, title_font_size, bold_edition}` | Generated cover image |
243
+ | Cover date | `document_metadata.doc_pub_date` | Long-format date on the generated cover + `:published-date:` |
242
244
  | Remove the OGC logo from the legal page | `document_metadata.suppress_flavor_logo` | targeted `:pdf-stylesheet-override:` |
243
245
  | Remove OGC design (crossing lines, circled numbers, rules, navy divider pages) | `document_metadata.suppress_design_elements` (or the individual `suppress_crossing_lines` / `plain_section_numbers` / `suppress_title_underlines`) | `:pdf-stylesheet-override:` + colour attributes |
246
+ | Remove the standalone section-divider pages | `document_metadata.suppress_section_divider_pages` | `:pdf-stylesheet-override:` |
247
+ | Inline section headings (`1 Scope` in one line, no circle) | `document_metadata.inline_section_headers` | `:pdf-stylesheet-override:` |
248
+ | Flatten reference hanging indent (title under authors) | `document_metadata.suppress_bibliography_indent` | `:pdf-stylesheet-override:` |
244
249
  | Every-page DRAFT-style watermark (over content) | `document_metadata.page_watermark` | `:pdf-stylesheet-override:` (footer overlay) |
245
250
  | Requirement / conformance identifier namespace | `spec_uri_base` | derives `req_uri` / `conf_uri` |
246
251
  | Submitter table, notice paragraph, normative refs, extra terms | `document_metadata.{submitters, notice, normative_references, terms}` | Metanorma attributes / sections |
252
+ | Features `/items` paging (`limit` parameter) | `paging.{enabled, default_limit, max_limit}` | OpenAPI query parameter |
247
253
 
248
254
  Custom branding requires Pillow for the cover image: `pip install 'oapi-profile-builder[pdf]'`. Field-by-field detail is in the [`document_metadata`](#document_metadata) reference below; [`examples/nwp_radar.yaml`](examples/nwp_radar.yaml) is a complete DGIWG-branded example. Omit all of these fields and the output keeps the standard OGC house style.
249
255
 
250
- > The `suppress_flavor_logo`, `suppress_design_elements`/`suppress_*`, and `page_watermark` overrides reach into the OGC Metanorma flavor's XSL templates (e.g. `insertLogoPreface`, `insertCrossingLines`, `insertSectionNumInCircle`, `insertFooter`) and are coupled to that flavor. Everything else uses documented Metanorma attributes. mn2pdf merges our same-named templates over the flavor's at equal precedence (via `merge_override.xsl`), which is what makes these work; a future metanorma-ogc release could require refreshing the template names. For long-term SDO adoption, a dedicated Metanorma "taste"/flavor is the most durable path.
256
+ > The `suppress_flavor_logo`, `suppress_design_elements`/`suppress_*`, `suppress_section_divider_pages`, `inline_section_headers`, `suppress_bibliography_indent`, and `page_watermark` overrides reach into the OGC Metanorma flavor's XSL templates (e.g. `insertLogoPreface`, `insertCrossingLines`, `insertSectionNumInCircle`, `insertFooter`, the `sections` mode, `fmt-title`, and `bibitem-normative-style`) and are coupled to that flavor. Everything else uses documented Metanorma attributes. mn2pdf merges our same-named templates over the flavor's at equal precedence (via `merge_override.xsl`), which is what makes these work; a future metanorma-ogc release could require refreshing the template names. For long-term SDO adoption, a dedicated Metanorma "taste"/flavor is the most durable path.
251
257
 
252
258
  ---
253
259
 
@@ -341,6 +347,7 @@ abstract_tests: []
341
347
  | `abstract_tests` | list | no | Conformance tests — each must reference a valid requirement `id` |
342
348
  | `pubsub` | object | no | OGC API - EDR Part 2 PubSub config — generates `asyncapi.yaml` |
343
349
  | `collection_examples` | object | no | `{collectionId: {instanceId: "..."}}` — used by `validate-server` |
350
+ | `paging` | object | no | Features `/items` paging — adds a validated `limit` query parameter to the generated OpenAPI (see below) |
344
351
  | `document_metadata` | object | no | Metanorma PDF header — doc number/type/subtype, status, editors, submitters, dates, notice, normative references (see below) |
345
352
 
346
353
  ---
@@ -624,6 +631,21 @@ Generates: `/processes/compute-difference`, `/processes/compute-difference/execu
624
631
 
625
632
  ---
626
633
 
634
+ ### `paging`
635
+
636
+ Controls Features `/items` paging in the generated OpenAPI. When enabled (the default), a validated `limit` query parameter is added to every `/items` endpoint (collection-level and instance-level).
637
+
638
+ ```yaml
639
+ paging:
640
+ enabled: true # default true; set false to omit the limit parameter
641
+ default_limit: 10 # OpenAPI schema default for limit (default 10)
642
+ max_limit: 100 # OpenAPI schema maximum for limit (default 10000)
643
+ ```
644
+
645
+ The emitted parameter is `limit` (`in: query`, `type: integer`, `minimum: 1`, `maximum: <max_limit>`, `default: <default_limit>`).
646
+
647
+ ---
648
+
627
649
  ### `pubsub`
628
650
 
629
651
  When present, generates `asyncapi.yaml` alongside `openapi.yaml`.
@@ -669,6 +691,8 @@ document_metadata:
669
691
  submission_date: "2026-05-01" # → :received-date:
670
692
  approval_date: "2026-06-15" # → :issued-date:
671
693
  publication_date: "2026-07-01" # → :published-date:
694
+ doc_pub_date: "2026-07-16" # optional; overrides publication_date for the cover
695
+ # (long-format "16 July 2026") and :published-date:
672
696
  # Custom notice paragraph rendered in the front matter. Note: the OGC cover-page
673
697
  # legal notice itself is generated by Metanorma from doc_type/status.
674
698
  notice: >
@@ -707,6 +731,12 @@ document_metadata:
707
731
  font_bold: "Source Sans Pro" # optional bold face; derived from font_regular when unset
708
732
  font_italic: "Source Sans Pro" # optional italic face for the tagline
709
733
  watermark: "DRAFT" # optional diagonal watermark stamped on the cover
734
+ # --- cover layout (all optional) ---
735
+ logo_width: 200 # target logo width in px (default 420)
736
+ logo_y: 100 # logo vertical offset from top in px (default 180)
737
+ tagline_font_size: 20 # tagline point size (default 30)
738
+ title_font_size: 40 # title point size (default 54)
739
+ bold_edition: true # render the "Edition X" line in bold (default false)
710
740
  colors:
711
741
  text: "#000000" # body text
712
742
  cover_text: "#1F3864" # cover text / section numbers / ToC
@@ -763,6 +793,23 @@ With `cover` + `colors` + `copyright_holder` + `boilerplate` + `suppress_flavor_
763
793
 
764
794
  > These design-element overrides (and the `page_watermark` footer overlay) reach into the OGC Metanorma flavor's XSL template names and are coupled to that flavor; a future metanorma-ogc release could require refreshing them.
765
795
 
796
+ #### Structural layout changes (divider pages, inline headers, references)
797
+
798
+ `suppress_design_elements` only changes *decorative* styling — it keeps the document's structure (standalone section-divider pages, the standard heading layout, and the reference hanging indent) intact. The following are **independent, opt-in** structural changes, so the default OGC output is unaffected unless you set them:
799
+
800
+ - **`suppress_section_divider_pages: true`** — removes the standalone full-page section dividers, so each section's content follows its heading directly.
801
+ - **`inline_section_headers: true`** — renders Level 1/2 headings inline with the title (e.g. `1 Scope`, `i Abstract`) rather than the OGC circled-number layout.
802
+ - **`suppress_bibliography_indent: true`** — flattens both the Normative References and the Bibliography so each entry is a single flush paragraph, removing the hanging indent that placed the title under the authors.
803
+
804
+ ```yaml
805
+ document_metadata:
806
+ suppress_section_divider_pages: true
807
+ inline_section_headers: true
808
+ suppress_bibliography_indent: true
809
+ ```
810
+
811
+ Additionally, when `copyright_holder` is set to a non-OGC organisation, the flavor's auto-generated "Submitting Organizations" sentence ("…submitted this Document to the Open Geospatial Consortium (OGC)") is rebranded to name that organisation instead, so no residual OGC text remains in the preface.
812
+
766
813
  #### Extending Terms and Definitions
767
814
 
768
815
  Add profile-specific terms (e.g. EDR Part 3 or Pub/Sub terms) appended after the base terms in the Terms and Definitions section:
@@ -192,15 +192,21 @@ Everything about the document — cover, title-page metadata, legal page, footer
192
192
  | PDF colours (titles, tables, cover, backgrounds) | `document_metadata.colors` | `:presentation-metadata-color-*:` |
193
193
  | Page-ii legal text (copyright / license / notice) | `document_metadata.boilerplate` | `:boilerplate-authority:` |
194
194
  | Footer organisation name | `document_metadata.copyright_holder` | `:copyright-holder:` |
195
+ | Cover layout (logo size/position, tagline/title size, bold edition) | `document_metadata.cover.{logo_width, logo_y, tagline_font_size, title_font_size, bold_edition}` | Generated cover image |
196
+ | Cover date | `document_metadata.doc_pub_date` | Long-format date on the generated cover + `:published-date:` |
195
197
  | Remove the OGC logo from the legal page | `document_metadata.suppress_flavor_logo` | targeted `:pdf-stylesheet-override:` |
196
198
  | Remove OGC design (crossing lines, circled numbers, rules, navy divider pages) | `document_metadata.suppress_design_elements` (or the individual `suppress_crossing_lines` / `plain_section_numbers` / `suppress_title_underlines`) | `:pdf-stylesheet-override:` + colour attributes |
199
+ | Remove the standalone section-divider pages | `document_metadata.suppress_section_divider_pages` | `:pdf-stylesheet-override:` |
200
+ | Inline section headings (`1 Scope` in one line, no circle) | `document_metadata.inline_section_headers` | `:pdf-stylesheet-override:` |
201
+ | Flatten reference hanging indent (title under authors) | `document_metadata.suppress_bibliography_indent` | `:pdf-stylesheet-override:` |
197
202
  | Every-page DRAFT-style watermark (over content) | `document_metadata.page_watermark` | `:pdf-stylesheet-override:` (footer overlay) |
198
203
  | Requirement / conformance identifier namespace | `spec_uri_base` | derives `req_uri` / `conf_uri` |
199
204
  | Submitter table, notice paragraph, normative refs, extra terms | `document_metadata.{submitters, notice, normative_references, terms}` | Metanorma attributes / sections |
205
+ | Features `/items` paging (`limit` parameter) | `paging.{enabled, default_limit, max_limit}` | OpenAPI query parameter |
200
206
 
201
207
  Custom branding requires Pillow for the cover image: `pip install 'oapi-profile-builder[pdf]'`. Field-by-field detail is in the [`document_metadata`](#document_metadata) reference below; [`examples/nwp_radar.yaml`](examples/nwp_radar.yaml) is a complete DGIWG-branded example. Omit all of these fields and the output keeps the standard OGC house style.
202
208
 
203
- > The `suppress_flavor_logo`, `suppress_design_elements`/`suppress_*`, and `page_watermark` overrides reach into the OGC Metanorma flavor's XSL templates (e.g. `insertLogoPreface`, `insertCrossingLines`, `insertSectionNumInCircle`, `insertFooter`) and are coupled to that flavor. Everything else uses documented Metanorma attributes. mn2pdf merges our same-named templates over the flavor's at equal precedence (via `merge_override.xsl`), which is what makes these work; a future metanorma-ogc release could require refreshing the template names. For long-term SDO adoption, a dedicated Metanorma "taste"/flavor is the most durable path.
209
+ > The `suppress_flavor_logo`, `suppress_design_elements`/`suppress_*`, `suppress_section_divider_pages`, `inline_section_headers`, `suppress_bibliography_indent`, and `page_watermark` overrides reach into the OGC Metanorma flavor's XSL templates (e.g. `insertLogoPreface`, `insertCrossingLines`, `insertSectionNumInCircle`, `insertFooter`, the `sections` mode, `fmt-title`, and `bibitem-normative-style`) and are coupled to that flavor. Everything else uses documented Metanorma attributes. mn2pdf merges our same-named templates over the flavor's at equal precedence (via `merge_override.xsl`), which is what makes these work; a future metanorma-ogc release could require refreshing the template names. For long-term SDO adoption, a dedicated Metanorma "taste"/flavor is the most durable path.
204
210
 
205
211
  ---
206
212
 
@@ -294,6 +300,7 @@ abstract_tests: []
294
300
  | `abstract_tests` | list | no | Conformance tests — each must reference a valid requirement `id` |
295
301
  | `pubsub` | object | no | OGC API - EDR Part 2 PubSub config — generates `asyncapi.yaml` |
296
302
  | `collection_examples` | object | no | `{collectionId: {instanceId: "..."}}` — used by `validate-server` |
303
+ | `paging` | object | no | Features `/items` paging — adds a validated `limit` query parameter to the generated OpenAPI (see below) |
297
304
  | `document_metadata` | object | no | Metanorma PDF header — doc number/type/subtype, status, editors, submitters, dates, notice, normative references (see below) |
298
305
 
299
306
  ---
@@ -577,6 +584,21 @@ Generates: `/processes/compute-difference`, `/processes/compute-difference/execu
577
584
 
578
585
  ---
579
586
 
587
+ ### `paging`
588
+
589
+ Controls Features `/items` paging in the generated OpenAPI. When enabled (the default), a validated `limit` query parameter is added to every `/items` endpoint (collection-level and instance-level).
590
+
591
+ ```yaml
592
+ paging:
593
+ enabled: true # default true; set false to omit the limit parameter
594
+ default_limit: 10 # OpenAPI schema default for limit (default 10)
595
+ max_limit: 100 # OpenAPI schema maximum for limit (default 10000)
596
+ ```
597
+
598
+ The emitted parameter is `limit` (`in: query`, `type: integer`, `minimum: 1`, `maximum: <max_limit>`, `default: <default_limit>`).
599
+
600
+ ---
601
+
580
602
  ### `pubsub`
581
603
 
582
604
  When present, generates `asyncapi.yaml` alongside `openapi.yaml`.
@@ -622,6 +644,8 @@ document_metadata:
622
644
  submission_date: "2026-05-01" # → :received-date:
623
645
  approval_date: "2026-06-15" # → :issued-date:
624
646
  publication_date: "2026-07-01" # → :published-date:
647
+ doc_pub_date: "2026-07-16" # optional; overrides publication_date for the cover
648
+ # (long-format "16 July 2026") and :published-date:
625
649
  # Custom notice paragraph rendered in the front matter. Note: the OGC cover-page
626
650
  # legal notice itself is generated by Metanorma from doc_type/status.
627
651
  notice: >
@@ -660,6 +684,12 @@ document_metadata:
660
684
  font_bold: "Source Sans Pro" # optional bold face; derived from font_regular when unset
661
685
  font_italic: "Source Sans Pro" # optional italic face for the tagline
662
686
  watermark: "DRAFT" # optional diagonal watermark stamped on the cover
687
+ # --- cover layout (all optional) ---
688
+ logo_width: 200 # target logo width in px (default 420)
689
+ logo_y: 100 # logo vertical offset from top in px (default 180)
690
+ tagline_font_size: 20 # tagline point size (default 30)
691
+ title_font_size: 40 # title point size (default 54)
692
+ bold_edition: true # render the "Edition X" line in bold (default false)
663
693
  colors:
664
694
  text: "#000000" # body text
665
695
  cover_text: "#1F3864" # cover text / section numbers / ToC
@@ -716,6 +746,23 @@ With `cover` + `colors` + `copyright_holder` + `boilerplate` + `suppress_flavor_
716
746
 
717
747
  > These design-element overrides (and the `page_watermark` footer overlay) reach into the OGC Metanorma flavor's XSL template names and are coupled to that flavor; a future metanorma-ogc release could require refreshing them.
718
748
 
749
+ #### Structural layout changes (divider pages, inline headers, references)
750
+
751
+ `suppress_design_elements` only changes *decorative* styling — it keeps the document's structure (standalone section-divider pages, the standard heading layout, and the reference hanging indent) intact. The following are **independent, opt-in** structural changes, so the default OGC output is unaffected unless you set them:
752
+
753
+ - **`suppress_section_divider_pages: true`** — removes the standalone full-page section dividers, so each section's content follows its heading directly.
754
+ - **`inline_section_headers: true`** — renders Level 1/2 headings inline with the title (e.g. `1 Scope`, `i Abstract`) rather than the OGC circled-number layout.
755
+ - **`suppress_bibliography_indent: true`** — flattens both the Normative References and the Bibliography so each entry is a single flush paragraph, removing the hanging indent that placed the title under the authors.
756
+
757
+ ```yaml
758
+ document_metadata:
759
+ suppress_section_divider_pages: true
760
+ inline_section_headers: true
761
+ suppress_bibliography_indent: true
762
+ ```
763
+
764
+ Additionally, when `copyright_holder` is set to a non-OGC organisation, the flavor's auto-generated "Submitting Organizations" sentence ("…submitted this Document to the Open Geospatial Consortium (OGC)") is rebranded to name that organisation instead, so no residual OGC text remains in the preface.
765
+
719
766
  #### Extending Terms and Definitions
720
767
 
721
768
  Add profile-specific terms (e.g. EDR Part 3 or Pub/Sub terms) appended after the base terms in the Terms and Definitions section:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "oapi-profile-builder"
7
- version = "3.4.0"
7
+ version = "3.4.1"
8
8
  description = "Authoritative tooling for creating OGC API Service Profiles (EDR, Features)"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oapi-profile-builder
3
- Version: 3.4.0
3
+ Version: 3.4.1
4
4
  Summary: Authoritative tooling for creating OGC API Service Profiles (EDR, Features)
5
5
  Author-email: Shane Mill <shane.mill@noaa.gov>
6
6
  License: Apache License
@@ -239,15 +239,21 @@ Everything about the document — cover, title-page metadata, legal page, footer
239
239
  | PDF colours (titles, tables, cover, backgrounds) | `document_metadata.colors` | `:presentation-metadata-color-*:` |
240
240
  | Page-ii legal text (copyright / license / notice) | `document_metadata.boilerplate` | `:boilerplate-authority:` |
241
241
  | Footer organisation name | `document_metadata.copyright_holder` | `:copyright-holder:` |
242
+ | Cover layout (logo size/position, tagline/title size, bold edition) | `document_metadata.cover.{logo_width, logo_y, tagline_font_size, title_font_size, bold_edition}` | Generated cover image |
243
+ | Cover date | `document_metadata.doc_pub_date` | Long-format date on the generated cover + `:published-date:` |
242
244
  | Remove the OGC logo from the legal page | `document_metadata.suppress_flavor_logo` | targeted `:pdf-stylesheet-override:` |
243
245
  | Remove OGC design (crossing lines, circled numbers, rules, navy divider pages) | `document_metadata.suppress_design_elements` (or the individual `suppress_crossing_lines` / `plain_section_numbers` / `suppress_title_underlines`) | `:pdf-stylesheet-override:` + colour attributes |
246
+ | Remove the standalone section-divider pages | `document_metadata.suppress_section_divider_pages` | `:pdf-stylesheet-override:` |
247
+ | Inline section headings (`1 Scope` in one line, no circle) | `document_metadata.inline_section_headers` | `:pdf-stylesheet-override:` |
248
+ | Flatten reference hanging indent (title under authors) | `document_metadata.suppress_bibliography_indent` | `:pdf-stylesheet-override:` |
244
249
  | Every-page DRAFT-style watermark (over content) | `document_metadata.page_watermark` | `:pdf-stylesheet-override:` (footer overlay) |
245
250
  | Requirement / conformance identifier namespace | `spec_uri_base` | derives `req_uri` / `conf_uri` |
246
251
  | Submitter table, notice paragraph, normative refs, extra terms | `document_metadata.{submitters, notice, normative_references, terms}` | Metanorma attributes / sections |
252
+ | Features `/items` paging (`limit` parameter) | `paging.{enabled, default_limit, max_limit}` | OpenAPI query parameter |
247
253
 
248
254
  Custom branding requires Pillow for the cover image: `pip install 'oapi-profile-builder[pdf]'`. Field-by-field detail is in the [`document_metadata`](#document_metadata) reference below; [`examples/nwp_radar.yaml`](examples/nwp_radar.yaml) is a complete DGIWG-branded example. Omit all of these fields and the output keeps the standard OGC house style.
249
255
 
250
- > The `suppress_flavor_logo`, `suppress_design_elements`/`suppress_*`, and `page_watermark` overrides reach into the OGC Metanorma flavor's XSL templates (e.g. `insertLogoPreface`, `insertCrossingLines`, `insertSectionNumInCircle`, `insertFooter`) and are coupled to that flavor. Everything else uses documented Metanorma attributes. mn2pdf merges our same-named templates over the flavor's at equal precedence (via `merge_override.xsl`), which is what makes these work; a future metanorma-ogc release could require refreshing the template names. For long-term SDO adoption, a dedicated Metanorma "taste"/flavor is the most durable path.
256
+ > The `suppress_flavor_logo`, `suppress_design_elements`/`suppress_*`, `suppress_section_divider_pages`, `inline_section_headers`, `suppress_bibliography_indent`, and `page_watermark` overrides reach into the OGC Metanorma flavor's XSL templates (e.g. `insertLogoPreface`, `insertCrossingLines`, `insertSectionNumInCircle`, `insertFooter`, the `sections` mode, `fmt-title`, and `bibitem-normative-style`) and are coupled to that flavor. Everything else uses documented Metanorma attributes. mn2pdf merges our same-named templates over the flavor's at equal precedence (via `merge_override.xsl`), which is what makes these work; a future metanorma-ogc release could require refreshing the template names. For long-term SDO adoption, a dedicated Metanorma "taste"/flavor is the most durable path.
251
257
 
252
258
  ---
253
259
 
@@ -341,6 +347,7 @@ abstract_tests: []
341
347
  | `abstract_tests` | list | no | Conformance tests — each must reference a valid requirement `id` |
342
348
  | `pubsub` | object | no | OGC API - EDR Part 2 PubSub config — generates `asyncapi.yaml` |
343
349
  | `collection_examples` | object | no | `{collectionId: {instanceId: "..."}}` — used by `validate-server` |
350
+ | `paging` | object | no | Features `/items` paging — adds a validated `limit` query parameter to the generated OpenAPI (see below) |
344
351
  | `document_metadata` | object | no | Metanorma PDF header — doc number/type/subtype, status, editors, submitters, dates, notice, normative references (see below) |
345
352
 
346
353
  ---
@@ -624,6 +631,21 @@ Generates: `/processes/compute-difference`, `/processes/compute-difference/execu
624
631
 
625
632
  ---
626
633
 
634
+ ### `paging`
635
+
636
+ Controls Features `/items` paging in the generated OpenAPI. When enabled (the default), a validated `limit` query parameter is added to every `/items` endpoint (collection-level and instance-level).
637
+
638
+ ```yaml
639
+ paging:
640
+ enabled: true # default true; set false to omit the limit parameter
641
+ default_limit: 10 # OpenAPI schema default for limit (default 10)
642
+ max_limit: 100 # OpenAPI schema maximum for limit (default 10000)
643
+ ```
644
+
645
+ The emitted parameter is `limit` (`in: query`, `type: integer`, `minimum: 1`, `maximum: <max_limit>`, `default: <default_limit>`).
646
+
647
+ ---
648
+
627
649
  ### `pubsub`
628
650
 
629
651
  When present, generates `asyncapi.yaml` alongside `openapi.yaml`.
@@ -669,6 +691,8 @@ document_metadata:
669
691
  submission_date: "2026-05-01" # → :received-date:
670
692
  approval_date: "2026-06-15" # → :issued-date:
671
693
  publication_date: "2026-07-01" # → :published-date:
694
+ doc_pub_date: "2026-07-16" # optional; overrides publication_date for the cover
695
+ # (long-format "16 July 2026") and :published-date:
672
696
  # Custom notice paragraph rendered in the front matter. Note: the OGC cover-page
673
697
  # legal notice itself is generated by Metanorma from doc_type/status.
674
698
  notice: >
@@ -707,6 +731,12 @@ document_metadata:
707
731
  font_bold: "Source Sans Pro" # optional bold face; derived from font_regular when unset
708
732
  font_italic: "Source Sans Pro" # optional italic face for the tagline
709
733
  watermark: "DRAFT" # optional diagonal watermark stamped on the cover
734
+ # --- cover layout (all optional) ---
735
+ logo_width: 200 # target logo width in px (default 420)
736
+ logo_y: 100 # logo vertical offset from top in px (default 180)
737
+ tagline_font_size: 20 # tagline point size (default 30)
738
+ title_font_size: 40 # title point size (default 54)
739
+ bold_edition: true # render the "Edition X" line in bold (default false)
710
740
  colors:
711
741
  text: "#000000" # body text
712
742
  cover_text: "#1F3864" # cover text / section numbers / ToC
@@ -763,6 +793,23 @@ With `cover` + `colors` + `copyright_holder` + `boilerplate` + `suppress_flavor_
763
793
 
764
794
  > These design-element overrides (and the `page_watermark` footer overlay) reach into the OGC Metanorma flavor's XSL template names and are coupled to that flavor; a future metanorma-ogc release could require refreshing them.
765
795
 
796
+ #### Structural layout changes (divider pages, inline headers, references)
797
+
798
+ `suppress_design_elements` only changes *decorative* styling — it keeps the document's structure (standalone section-divider pages, the standard heading layout, and the reference hanging indent) intact. The following are **independent, opt-in** structural changes, so the default OGC output is unaffected unless you set them:
799
+
800
+ - **`suppress_section_divider_pages: true`** — removes the standalone full-page section dividers, so each section's content follows its heading directly.
801
+ - **`inline_section_headers: true`** — renders Level 1/2 headings inline with the title (e.g. `1 Scope`, `i Abstract`) rather than the OGC circled-number layout.
802
+ - **`suppress_bibliography_indent: true`** — flattens both the Normative References and the Bibliography so each entry is a single flush paragraph, removing the hanging indent that placed the title under the authors.
803
+
804
+ ```yaml
805
+ document_metadata:
806
+ suppress_section_divider_pages: true
807
+ inline_section_headers: true
808
+ suppress_bibliography_indent: true
809
+ ```
810
+
811
+ Additionally, when `copyright_holder` is set to a non-OGC organisation, the flavor's auto-generated "Submitting Organizations" sentence ("…submitted this Document to the Open Geospatial Consortium (OGC)") is rebranded to name that organisation instead, so no residual OGC text remains in the preface.
812
+
766
813
  #### Extending Terms and Definitions
767
814
 
768
815
  Add profile-specific terms (e.g. EDR Part 3 or Pub/Sub terms) appended after the base terms in the Terms and Definitions section: