diff --git a/.gitignore b/.gitignore
index 9f75a0f579..4950c2b065 100644
--- a/.gitignore
+++ b/.gitignore
@@ -81,6 +81,9 @@ $RECYCLE.BIN/
!/.vscode/settings.recommended.json
!/.vscode/tasks.recommended.json
+venv/
+# Python virtual environments
+
# Dart stuff
/pubspec.lock
/.dart_tool/**/*
diff --git a/docs/src/architecture/08_concepts/signed_doc/diagrams/all.dot b/docs/src/architecture/08_concepts/signed_doc/diagrams/all.dot
index af9f30cf9e..b810e40dbb 100644
--- a/docs/src/architecture/08_concepts/signed_doc/diagrams/all.dot
+++ b/docs/src/architecture/08_concepts/signed_doc/diagrams/all.dot
@@ -121,16 +121,6 @@ digraph "All" {
-
-
-
-
- parameters |
- Brand Parameters |
-
-
- |
-
>
@@ -186,16 +176,6 @@ digraph "All" {
-
-
-
-
- parameters |
- Campaign Parameters |
-
-
- |
-
>
@@ -437,7 +417,7 @@ digraph "All" {
parameters |
- Brand Parameters Campaign Parameters Category Parameters |
+ Decision Parameters |
@@ -963,10 +943,8 @@ digraph "All" {
];
- "Campaign Parameters":"parameters":e -> "Brand Parameters":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
- "Category Parameters":"parameters":e -> "Campaign Parameters":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
"Comment Moderation Action":"ref":e -> "Proposal Comment":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
- "Decision Parameters":"parameters":e -> "Brand Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
+ "Decision Parameters":"parameters":e -> "Decision Parameters":"title":n [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
"Proposal":"template":e -> "Proposal Template":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
"Proposal":"parameters":e -> "Brand Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal Comment":"ref":e -> "Proposal":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
diff --git a/docs/src/architecture/08_concepts/signed_doc/diagrams/brand_parameters.dot b/docs/src/architecture/08_concepts/signed_doc/diagrams/brand_parameters.dot
index ec4702ddac..854ce68f55 100644
--- a/docs/src/architecture/08_concepts/signed_doc/diagrams/brand_parameters.dot
+++ b/docs/src/architecture/08_concepts/signed_doc/diagrams/brand_parameters.dot
@@ -72,38 +72,8 @@ Relationships"
>
];
-
- "Campaign Parameters" [
- id="Campaign Parameters";
- label=<
-
-
-
- Campaign Parameters
- |
-
-
-
- >
- ];
-
}
- "Decision Parameters" [
- id="Decision Parameters";
- label=<
-
-
-
- Decision Parameters
- |
-
-
-
- >
- ];
-
-
"Proposal" [
id="Proposal";
label=<
@@ -209,8 +179,6 @@ Relationships"
];
- "Campaign Parameters":"title":e -> "Brand Parameters":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
- "Decision Parameters":"title":e -> "Brand Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal":"title":e -> "Brand Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal Comment":"title":e -> "Brand Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal Comment Meta Template":"title":e -> "Brand Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
diff --git a/docs/src/architecture/08_concepts/signed_doc/diagrams/campaign_parameters.dot b/docs/src/architecture/08_concepts/signed_doc/diagrams/campaign_parameters.dot
index f21afdeadf..c6746ece95 100644
--- a/docs/src/architecture/08_concepts/signed_doc/diagrams/campaign_parameters.dot
+++ b/docs/src/architecture/08_concepts/signed_doc/diagrams/campaign_parameters.dot
@@ -18,21 +18,6 @@ Relationships"
color=blue
penwidth=20
- "Brand Parameters" [
- id="Brand Parameters";
- label=<
-
-
-
- Brand Parameters
- |
-
-
-
- >
- ];
-
-
"Campaign Parameters" [
id="Campaign Parameters";
label=<
@@ -82,31 +67,6 @@ Relationships"
-
-
-
-
- parameters |
- Brand Parameters |
-
-
- |
-
-
-
- >
- ];
-
-
- "Category Parameters" [
- id="Category Parameters";
- label=<
-
-
-
- Category Parameters
- |
-
>
@@ -114,21 +74,6 @@ Relationships"
}
- "Decision Parameters" [
- id="Decision Parameters";
- label=<
-
-
-
- Decision Parameters
- |
-
-
-
- >
- ];
-
-
"Proposal" [
id="Proposal";
label=<
@@ -234,9 +179,6 @@ Relationships"
];
- "Campaign Parameters":"parameters":e -> "Brand Parameters":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
- "Category Parameters":"title":e -> "Campaign Parameters":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
- "Decision Parameters":"title":e -> "Campaign Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal":"title":e -> "Campaign Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal Comment":"title":e -> "Campaign Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal Comment Meta Template":"title":e -> "Campaign Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
diff --git a/docs/src/architecture/08_concepts/signed_doc/diagrams/category_parameters.dot b/docs/src/architecture/08_concepts/signed_doc/diagrams/category_parameters.dot
index b6a2aa470a..ff1f5e4b40 100644
--- a/docs/src/architecture/08_concepts/signed_doc/diagrams/category_parameters.dot
+++ b/docs/src/architecture/08_concepts/signed_doc/diagrams/category_parameters.dot
@@ -18,21 +18,6 @@ Relationships"
color=blue
penwidth=20
- "Campaign Parameters" [
- id="Campaign Parameters";
- label=<
-
-
-
- Campaign Parameters
- |
-
-
-
- >
- ];
-
-
"Category Parameters" [
id="Category Parameters";
label=<
@@ -82,16 +67,6 @@ Relationships"
-
-
-
-
- parameters |
- Campaign Parameters |
-
-
- |
-
>
@@ -99,21 +74,6 @@ Relationships"
}
- "Decision Parameters" [
- id="Decision Parameters";
- label=<
-
-
-
- Decision Parameters
- |
-
-
-
- >
- ];
-
-
"Proposal" [
id="Proposal";
label=<
@@ -219,8 +179,6 @@ Relationships"
];
- "Category Parameters":"parameters":e -> "Campaign Parameters":"title":w [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
- "Decision Parameters":"title":e -> "Category Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal":"title":e -> "Category Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal Comment":"title":e -> "Category Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
"Proposal Comment Meta Template":"title":e -> "Category Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
diff --git a/docs/src/architecture/08_concepts/signed_doc/diagrams/decision_parameters.dot b/docs/src/architecture/08_concepts/signed_doc/diagrams/decision_parameters.dot
index ff41dcf0f6..eb5faa35e0 100644
--- a/docs/src/architecture/08_concepts/signed_doc/diagrams/decision_parameters.dot
+++ b/docs/src/architecture/08_concepts/signed_doc/diagrams/decision_parameters.dot
@@ -13,57 +13,6 @@ Relationships"
- subgraph cluster_system_parameters {
- label = "System Parameters";
- color=blue
- penwidth=20
-
- "Brand Parameters" [
- id="Brand Parameters";
- label=<
-
-
-
- Brand Parameters
- |
-
-
-
- >
- ];
-
-
- "Campaign Parameters" [
- id="Campaign Parameters";
- label=<
-
-
-
- Campaign Parameters
- |
-
-
-
- >
- ];
-
-
- "Category Parameters" [
- id="Category Parameters";
- label=<
-
-
-
- Category Parameters
- |
-
-
-
- >
- ];
-
- }
-
"Decision Parameters" [
id="Decision Parameters";
label=<
@@ -118,7 +67,7 @@ Relationships"
parameters |
- Brand Parameters Campaign Parameters Category Parameters |
+ Decision Parameters |
@@ -129,5 +78,5 @@ Relationships"
];
- "Decision Parameters":"parameters":e -> "Brand Parameters" [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*", lhead="cluster_system_parameters"]
+ "Decision Parameters":"parameters":e -> "Decision Parameters":"title":n [dir=forward, penwidth=6, color="#29235c", headlabel="1", taillabel="*"]
}
diff --git a/docs/src/architecture/08_concepts/signed_doc/docs/brand_parameters.md b/docs/src/architecture/08_concepts/signed_doc/docs/brand_parameters.md
index 8f2571f9e8..95cc328f55 100644
--- a/docs/src/architecture/08_concepts/signed_doc/docs/brand_parameters.md
+++ b/docs/src/architecture/08_concepts/signed_doc/docs/brand_parameters.md
@@ -2,7 +2,10 @@
## Description
-Parameters which define this brand within the system.
+This specification outlines the required definitions for the current features.
+The document will be incrementally improved in future iterations as more functionality
+and features are added.
+This section will be included and updated in future iterations.
@@ -118,9 +121,13 @@ New versions of this document may be published by:
### Changelog
-#### 0.01 (2025-04-04)
+#### v1 (2024-06-07)
+
+Initial version. Structure aligned with global metadata requirements.
+
+#### v2 (2025-04-04)
-* First Published Version
+Updated to include common definitions and examples.
[RFC9052-HeaderParameters]: https://www.rfc-editor.org/rfc/rfc8152#section-3.1
[CC-BY-4.0]: https://creativecommons.org/licenses/by/4.0/legalcode
diff --git a/docs/src/architecture/08_concepts/signed_doc/docs/campaign_parameters.md b/docs/src/architecture/08_concepts/signed_doc/docs/campaign_parameters.md
index 8836c1999a..b86067891b 100644
--- a/docs/src/architecture/08_concepts/signed_doc/docs/campaign_parameters.md
+++ b/docs/src/architecture/08_concepts/signed_doc/docs/campaign_parameters.md
@@ -2,7 +2,10 @@
## Description
-Parameters which define a Campaign within a Brand in the system.
+This specification outlines the required definitions for the current features.
+The document will be incrementally improved in future iterations as more functionality
+and features are added.
+This section will be included and updated in future iterations.
@@ -89,24 +92,6 @@ The first version of the document must set [`ver`](../metadata.md#ver) == [`id`]
The document version must always be >= the document ID.
-### [`parameters`](../metadata.md#parameters)
-
-
-| Parameter | Value |
-| --- | --- |
-| Required | yes |
-| Format | [Document Reference](../metadata.md#document-reference) |
-| Valid References | [Brand Parameters](brand_parameters.md) |
-
-A reference to the Parameters Document this document lies under.
-
-#### [`parameters`](../metadata.md#parameters) Validation
-
-In addition to the validation performed for [Document Reference](../metadata.md#document-reference) type fields:
-
-* Any linked referenced document that includes a [`parameters`](../metadata.md#parameters) metadata must match the
-[`parameters`](../metadata.md#parameters) of the referencing document.
-
## Payload
This specification outlines the required definitions for the current features.
@@ -136,13 +121,9 @@ New versions of this document may be published by:
### Changelog
-#### 0.01 (2025-04-04)
-
-* First Published Version
-
-#### 0.03 (2025-05-05)
+#### v1 (2024-06-07)
-* Use generalized parameters.
+Initial version. Structure aligned with global metadata requirements.
[RFC9052-HeaderParameters]: https://www.rfc-editor.org/rfc/rfc8152#section-3.1
[CC-BY-4.0]: https://creativecommons.org/licenses/by/4.0/legalcode
diff --git a/docs/src/architecture/08_concepts/signed_doc/docs/category_parameters.md b/docs/src/architecture/08_concepts/signed_doc/docs/category_parameters.md
index 7f123e98fc..339da8e194 100644
--- a/docs/src/architecture/08_concepts/signed_doc/docs/category_parameters.md
+++ b/docs/src/architecture/08_concepts/signed_doc/docs/category_parameters.md
@@ -2,7 +2,10 @@
## Description
-Parameters which define a Category withing a Campaign under a Brand in the system.
+This specification outlines the required definitions for the current features.
+The document will be incrementally improved in future iterations as more functionality
+and features are added.
+This section will be included and updated in future iterations.
@@ -89,24 +92,6 @@ The first version of the document must set [`ver`](../metadata.md#ver) == [`id`]
The document version must always be >= the document ID.
-### [`parameters`](../metadata.md#parameters)
-
-
-| Parameter | Value |
-| --- | --- |
-| Required | yes |
-| Format | [Document Reference](../metadata.md#document-reference) |
-| Valid References | [Campaign Parameters](campaign_parameters.md) |
-
-A reference to the Parameters Document this document lies under.
-
-#### [`parameters`](../metadata.md#parameters) Validation
-
-In addition to the validation performed for [Document Reference](../metadata.md#document-reference) type fields:
-
-* Any linked referenced document that includes a [`parameters`](../metadata.md#parameters) metadata must match the
-[`parameters`](../metadata.md#parameters) of the referencing document.
-
## Payload
This specification outlines the required definitions for the current features.
@@ -136,13 +121,9 @@ New versions of this document may be published by:
### Changelog
-#### 0.01 (2025-04-04)
-
-* First Published Version
-
-#### 0.03 (2025-05-05)
+#### v1 (2024-06-07)
-* Use generalized parameters.
+Initial version. Structure aligned with global metadata requirements.
[RFC9052-HeaderParameters]: https://www.rfc-editor.org/rfc/rfc8152#section-3.1
[CC-BY-4.0]: https://creativecommons.org/licenses/by/4.0/legalcode
diff --git a/docs/src/architecture/08_concepts/signed_doc/docs/decision_parameters.md b/docs/src/architecture/08_concepts/signed_doc/docs/decision_parameters.md
index dc128901ba..5e50e1dc92 100644
--- a/docs/src/architecture/08_concepts/signed_doc/docs/decision_parameters.md
+++ b/docs/src/architecture/08_concepts/signed_doc/docs/decision_parameters.md
@@ -2,7 +2,7 @@
## Description
-Parameters which define an individual voting event.
+ Parameters which define an individual voting event.
@@ -96,9 +96,7 @@ The document version must always be >= the document ID.
| --- | --- |
| Required | yes |
| Format | [Document Reference](../metadata.md#document-reference) |
-| Valid References | [Brand Parameters](brand_parameters.md) |
-| | [Campaign Parameters](campaign_parameters.md) |
-| | [Category Parameters](category_parameters.md) |
+| Valid References | [Decision Parameters](decision_parameters.md) |
A reference to the Parameters Document this document lies under.
@@ -111,10 +109,32 @@ In addition to the validation performed for [Document Reference](../metadata.md#
## Payload
-This specification outlines the required definitions for the current features.
-The document will be incrementally improved in future iterations as more functionality
-and features are added.
-This section will be included and updated in future iterations.
+Payload for Decision Parameters document.
+
+### Schema
+
+
+??? abstract
+
+ Payload for Decision Parameters document.
+
+ ```json
+ {}
+ ```
+
+
+
+### Example
+
+??? example "Example: Final Proposal Submission"
+
+ This document indicates the linked proposal is final and requested to proceed for further consideration.
+
+ ```json
+ {}
+ ```
+
+
## Signers
@@ -132,7 +152,7 @@ New versions of this document may be published by:
| --- | --- |
| License | This document is licensed under [CC-BY-4.0] |
| Created | 2024-12-27 |
-| Modified | 2025-05-30 |
+| Modified | 2025-06-06 |
| Authors | Alex Pozhylenkov |
| | Steven Johnson |
@@ -140,11 +160,15 @@ New versions of this document may be published by:
#### 0.01 (2025-04-04)
-* First Published Version
+ * First Published Version
#### 0.03 (2025-05-05)
-* Use generalized parameters.
+ * Use generalized parameters.
+
+#### 0.04 (2025-06-06)
+
+ * Added brand reference to decision parameters.
[RFC9052-HeaderParameters]: https://www.rfc-editor.org/rfc/rfc8152#section-3.1
[CC-BY-4.0]: https://creativecommons.org/licenses/by/4.0/legalcode
diff --git a/specs/gen_docs/main.py b/specs/gen_docs/main.py
index 521f49338f..eb344ccbde 100755
--- a/specs/gen_docs/main.py
+++ b/specs/gen_docs/main.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env -S uv run
+#!/usr/bin/env python3
"""Autogenerate Documentation Pages from the specification."""
import argparse
@@ -77,6 +77,10 @@ def main(args: argparse.Namespace) -> None:
good &= MetadataMd(args, spec).save_or_validate()
good &= IndividualDocMd.save_or_validate_all(args, spec)
+ # Add generation for Brand, Campaign, Category, and Decision documents
+ for doc_name in ["Brand Parameters", "Campaign Parameters", "Category Parameters", "Decision Parameters"]:
+ good &= IndividualDocMd(args, spec, doc_name).save_or_validate()
+
if not good:
rich.print("File Comparisons Failed, Documentation is not current.")
sys.exit(1)
diff --git a/specs/gen_docs/pyproject.toml b/specs/gen_docs/pyproject.toml
index 5ac71cbe38..4046227b91 100644
--- a/specs/gen_docs/pyproject.toml
+++ b/specs/gen_docs/pyproject.toml
@@ -3,7 +3,7 @@ name = "gen-docs"
version = "0.1.0"
description = "Generate Signed Document documentation files."
readme = "README.md"
-requires-python = ">=3.13"
+requires-python = ">=3.10"
dependencies = [
"jsonschema[format]>=4.23.0",
"pydantic>=2.11.4",
diff --git a/specs/signed_doc.json b/specs/signed_doc.json
index a5064f6d38..786ce25514 100644
--- a/specs/signed_doc.json
+++ b/specs/signed_doc.json
@@ -322,7 +322,6 @@
"docs": {
"Brand Parameters": {
"authors": {},
- "description": "Parameters which define this brand within the system.",
"headers": {
"content type": {
"coseLabel": 3,
@@ -429,15 +428,19 @@
],
"versions": [
{
- "changes": "* First Published Version",
+ "changes": "Initial version. Structure aligned with global metadata requirements.",
+ "modified": "2024-06-07",
+ "version": "v1"
+ },
+ {
+ "changes": "Updated to include common definitions and examples.",
"modified": "2025-04-04",
- "version": "0.01"
+ "version": "v2"
}
]
},
"Campaign Parameters": {
"authors": {},
- "description": "Parameters which define a Campaign within a Brand in the system.",
"headers": {
"content type": {
"coseLabel": 3,
@@ -475,10 +478,7 @@
"description": "A reference to the Parameters Document this document lies under.",
"exclusive": null,
"format": "Document Reference",
- "linked_refs": null,
- "multiple": false,
- "required": "yes",
- "type": "Brand Parameters",
+ "required": "excluded",
"validation": "In addition to the validation performed for `Document Reference` type fields: \n\n* Any linked referenced document that includes a `parameters` metadata must match the \n`parameters` of the referencing document."
},
"ref": {
@@ -547,20 +547,14 @@
],
"versions": [
{
- "changes": "* First Published Version",
- "modified": "2025-04-04",
- "version": "0.01"
- },
- {
- "changes": "* Use generalized parameters.",
- "modified": "2025-05-05",
- "version": "0.03"
+ "changes": "Initial version. Structure aligned with global metadata requirements.",
+ "modified": "2024-06-07",
+ "version": "v1"
}
]
},
"Category Parameters": {
"authors": {},
- "description": "Parameters which define a Category withing a Campaign under a Brand in the system.",
"headers": {
"content type": {
"coseLabel": 3,
@@ -598,10 +592,7 @@
"description": "A reference to the Parameters Document this document lies under.",
"exclusive": null,
"format": "Document Reference",
- "linked_refs": null,
- "multiple": false,
- "required": "yes",
- "type": "Campaign Parameters",
+ "required": "excluded",
"validation": "In addition to the validation performed for `Document Reference` type fields: \n\n* Any linked referenced document that includes a `parameters` metadata must match the \n`parameters` of the referencing document."
},
"ref": {
@@ -670,14 +661,9 @@
],
"versions": [
{
- "changes": "* First Published Version",
- "modified": "2025-04-04",
- "version": "0.01"
- },
- {
- "changes": "* Use generalized parameters.",
- "modified": "2025-05-05",
- "version": "0.03"
+ "changes": "Initial version. Structure aligned with global metadata requirements.",
+ "modified": "2024-06-07",
+ "version": "v1"
}
]
},
@@ -805,7 +791,7 @@
},
"Decision Parameters": {
"authors": {},
- "description": "Parameters which define an individual voting event.",
+ "description": "\tParameters which define an individual voting event.",
"headers": {
"content type": {
"coseLabel": 3,
@@ -846,11 +832,7 @@
"linked_refs": null,
"multiple": false,
"required": "yes",
- "type": [
- "Brand Parameters",
- "Campaign Parameters",
- "Category Parameters"
- ],
+ "type": "Decision Parameters",
"validation": "In addition to the validation performed for `Document Reference` type fields: \n\n* Any linked referenced document that includes a `parameters` metadata must match the \n`parameters` of the referencing document."
},
"ref": {
@@ -904,6 +886,17 @@
}
},
"notes": [],
+ "payload": {
+ "description": "Payload for Decision Parameters document.",
+ "examples": [
+ {
+ "description": "This document indicates the linked proposal is final and requested to proceed for further consideration.",
+ "example": {},
+ "title": "Final Proposal Submission"
+ }
+ ],
+ "schema": {}
+ },
"signers": {
"roles": {
"user": [
@@ -919,14 +912,19 @@
],
"versions": [
{
- "changes": "* First Published Version",
+ "changes": "\t* First Published Version",
"modified": "2025-04-04",
"version": "0.01"
},
{
- "changes": "* Use generalized parameters.",
+ "changes": "\t* Use generalized parameters.",
"modified": "2025-05-05",
"version": "0.03"
+ },
+ {
+ "changes": "\t* Added brand reference to decision parameters.",
+ "modified": "2025-06-06",
+ "version": "0.04"
}
]
},
diff --git a/specs/signed_docs/docs/brand_parameters.cue b/specs/signed_docs/docs/brand_parameters.cue
index 75deb70f29..eff82abe57 100644
--- a/specs/signed_docs/docs/brand_parameters.cue
+++ b/specs/signed_docs/docs/brand_parameters.cue
@@ -1,21 +1,28 @@
package signed_docs
-// Proposal Document Definition
+_common_defs: {} @embed(file="./payload_schemas/common_definitions.schema.json")
+
+// Brand Parameters Document Definition
docs: #DocumentDefinitions & {
"Brand Parameters": {
-
- description: """
- Parameters which define this brand within the system.
- """
-
+ metadata: {
+ ref: metadata.ref // Reference to the next highest document
+ template: metadata.template // Reference to a brand/campaign/etc template document
+ }
versions: [
{
- version: "0.01"
+ version: "v1"
+ modified: "2024-06-07"
+ changes: "Initial version. Structure aligned with global metadata requirements."
+ },
+ {
+ version: "v2"
modified: "2025-04-04"
- changes: """
- * First Published Version
- """
+ changes: "Updated to include common definitions and examples."
},
- ]}
+ ]
+ // Payload is fully templated and not defined here
+ }
+
}
diff --git a/specs/signed_docs/docs/campaign_parameters.cue b/specs/signed_docs/docs/campaign_parameters.cue
index 9cafb80ba5..6376c36af7 100644
--- a/specs/signed_docs/docs/campaign_parameters.cue
+++ b/specs/signed_docs/docs/campaign_parameters.cue
@@ -1,34 +1,22 @@
package signed_docs
-// Proposal Document Definition
+// Import common definitions JSON schema for use in embedded schemas
+_common_defs: {} @embed(file="./payload_schemas/common_definitions.schema.json")
+// Campaign Parameters Document Definition
docs: #DocumentDefinitions & {
"Campaign Parameters": {
- description: """
- Parameters which define a Campaign within a Brand in the system.
- """
-
metadata: {
- parameters: {
- required: "yes"
- type: "Brand Parameters"
- }
+ ref: metadata.ref
+ template: metadata.template
}
-
versions: [
{
- version: "0.01"
- modified: "2025-04-04"
- changes: """
- * First Published Version
- """
- },
- {
- version: "0.03"
- modified: "2025-05-05"
- changes: """
- * Use generalized parameters.
- """
+ version: "v1"
+ modified: "2024-06-07"
+ changes: "Initial version. Structure aligned with global metadata requirements."
},
- ]}
+ ]
+ // Payload is fully templated and not defined here
+ }
}
diff --git a/specs/signed_docs/docs/category_parameters.cue b/specs/signed_docs/docs/category_parameters.cue
index 7d8904f7db..8fe82f891e 100644
--- a/specs/signed_docs/docs/category_parameters.cue
+++ b/specs/signed_docs/docs/category_parameters.cue
@@ -1,35 +1,22 @@
package signed_docs
-// Proposal Document Definition
+// Import common definitions JSON schema for use in embedded schemas
+_common_defs: {} @embed(file="./payload_schemas/common_definitions.schema.json")
+// Category Parameters Document Definition
docs: #DocumentDefinitions & {
"Category Parameters": {
-
- description: """
- Parameters which define a Category withing a Campaign under a Brand in the system.
- """
-
metadata: {
- parameters: {
- required: "yes"
- type: "Campaign Parameters"
- }
+ ref: metadata.ref
+ template: metadata.template
}
-
versions: [
{
- version: "0.01"
- modified: "2025-04-04"
- changes: """
- * First Published Version
- """
- },
- {
- version: "0.03"
- modified: "2025-05-05"
- changes: """
- * Use generalized parameters.
- """
+ version: "v1"
+ modified: "2024-06-07"
+ changes: "Initial version. Structure aligned with global metadata requirements."
},
- ]}
+ ]
+ // Payload is fully templated and not defined here
+ }
}
diff --git a/specs/signed_docs/docs/decision_parameters.cue b/specs/signed_docs/docs/decision_parameters.cue
index 133d908d5e..53e333f500 100644
--- a/specs/signed_docs/docs/decision_parameters.cue
+++ b/specs/signed_docs/docs/decision_parameters.cue
@@ -1,34 +1,54 @@
package signed_docs
-// Proposal Document Definition
+// Import common definitions JSON schema for use in embedded schemas
+_common_defs: {} @embed(file="./payload_schemas/common_definitions.schema.json")
+// Decision Parameters Document Definition
docs: #DocumentDefinitions & {
"Decision Parameters": {
description: """
- Parameters which define an individual voting event.
+ Parameters which define an individual voting event.
"""
-
metadata: {
parameters: {
required: "yes"
- type: doc_clusters."System Parameters".docs
+ type: "Decision Parameters"
}
}
-
+ payload: {
+ description: "Payload for Decision Parameters document."
+ schema: {} @embed(file="./payload_schemas/decision_parameters.schema.json")
+ examples: [
+ {
+ title: "Final Proposal Submission"
+ description: """
+ This document indicates the linked proposal is final and requested to proceed for further consideration.
+ """
+ example: {} @embed(file="./payload_schemas/decision_parameter.example.json")
+ },
+ ]}
versions: [
{
version: "0.01"
modified: "2025-04-04"
changes: """
- * First Published Version
+ * First Published Version
"""
},
{
version: "0.03"
modified: "2025-05-05"
changes: """
- * Use generalized parameters.
+ * Use generalized parameters.
+ """
+ },
+ {
+ version: "0.04"
+ modified: "2025-06-06"
+ changes: """
+ * Added brand reference to decision parameters.
"""
},
- ]}
+ ]
+ }
}
diff --git a/specs/signed_docs/docs/payload_schemas/brand_parameter.example.json b/specs/signed_docs/docs/payload_schemas/brand_parameter.example.json
new file mode 100644
index 0000000000..a161fefafc
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/brand_parameter.example.json
@@ -0,0 +1,11 @@
+{
+ "directVotingPrivacyState": true,
+ "brandName": "Catalyst Foundation",
+ "minimumBudgetRequestPerProposal": 15000,
+ "maximumBudgetRequestPerProposal": "200000 (variable per challenge)",
+ "maximumProposalsPerProposer": 6,
+ "communityReviewerRegistration": "Open to all ADA holders",
+ "votingPowerThreshold": 1000000,
+ "tallyingOptimization": "majority",
+ "proposalAcceptanceThreshold": 60
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/brand_parameters.schema.json b/specs/signed_docs/docs/payload_schemas/brand_parameters.schema.json
new file mode 100644
index 0000000000..186efb70a9
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/brand_parameters.schema.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://raw.githubusercontent.com/input-output-hk/catalyst-libs/main/specs/signed_docs/docs/payload_schemas/brand_parameters.schema.json",
+ "title": "Brand Parameters",
+ "description": "Schema for defining Catalyst brand-level parameters, with UI/UX metadata and logical grouping.",
+ "type": "object",
+ "properties": {
+ "directVotingPrivacyState": {
+ "$ref": "#/definitions/booleanParameter",
+ "title": "Direct Voting Privacy State",
+ "description": "Whether direct voting privacy is enabled.",
+ "x-guidance": "Set to true if direct voting privacy is required."
+ },
+ "brandName": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Brand Name",
+ "description": "The name of the brand.",
+ "x-guidance": "Enter the official brand name."
+ },
+ "minimumBudgetRequestPerProposal": {
+ "$ref": "#/definitions/adaAmount",
+ "title": "Minimum Budget Request Per Proposal",
+ "description": "The minimum ADA amount that can be requested per proposal.",
+ "x-guidance": "Specify the minimum allowed budget per proposal in ADA."
+ },
+ "maximumBudgetRequestPerProposal": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Maximum Budget Request Per Proposal",
+ "description": "The maximum ADA amount (variable per challenge/category) that can be requested per proposal.",
+ "x-guidance": "Specify the maximum allowed budget per proposal."
+ },
+ "maximumProposalsPerProposer": {
+ "$ref": "#/definitions/integerParameter",
+ "title": "Maximum Proposals per Proposer/co-proposer",
+ "description": "The maximum number of proposals a proposer or co-proposer can submit.",
+ "x-guidance": "Set the limit for proposals per proposer/co-proposer."
+ },
+ "communityReviewerRegistration": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Community Reviewer Registration",
+ "description": "Information or rules about community reviewer registration.",
+ "x-guidance": "Describe the process or requirements for community reviewer registration."
+ },
+ "votingPowerThreshold": {
+ "$ref": "#/definitions/lovelaceAmount",
+ "title": "Voting Power Threshold",
+ "description": "The minimum Lovelace required to participate in voting.",
+ "x-guidance": "Specify the minimum voting power threshold in Lovelace."
+ },
+ "tallyingOptimization": {
+ "$ref": "#/definitions/ratioFormula",
+ "title": "Tallying Optimization",
+ "description": "The ratio or formula used for tallying optimization.",
+ "x-guidance": "Provide the formula or ratio for tallying optimization."
+ },
+ "proposalAcceptanceThreshold": {
+ "$ref": "#/definitions/percentageParameter",
+ "title": "Proposal Acceptance Threshold",
+ "description": "The percentage threshold for proposal acceptance.",
+ "x-guidance": "Set the acceptance threshold as a percentage."
+ }
+ },
+ "required": [
+ "directVotingPrivacyState",
+ "brandName",
+ "minimumBudgetRequestPerProposal",
+ "maximumBudgetRequestPerProposal",
+ "maximumProposalsPerProposer",
+ "communityReviewerRegistration",
+ "votingPowerThreshold",
+ "tallyingOptimization",
+ "proposalAcceptanceThreshold"
+ ],
+ "x-order": [
+ "directVotingPrivacyState",
+ "brandName",
+ "minimumBudgetRequestPerProposal",
+ "maximumBudgetRequestPerProposal",
+ "maximumProposalsPerProposer",
+ "communityReviewerRegistration",
+ "votingPowerThreshold",
+ "tallyingOptimization",
+ "proposalAcceptanceThreshold"
+ ]
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/campaign_parameter.example.json b/specs/signed_docs/docs/payload_schemas/campaign_parameter.example.json
new file mode 100644
index 0000000000..4407a3c620
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/campaign_parameter.example.json
@@ -0,0 +1,27 @@
+{
+ "fundName": "Fund 14",
+ "fundSize": 5000000,
+ "campaignTitle": "Cardano Open Innovation",
+ "campaignBudget": 1000000,
+ "proposalSubmissionFee": 100,
+ "compensationsDistributionDate": "2025-07-01",
+ "proposalsRegistrationOnChain": "2025-06-15",
+ "drepDeadlineDate": "2025-06-10",
+ "registrationDeadlineDate": "2025-06-20T23:59:59Z",
+ "votingPeriodStart": "2025-07-05T00:00:00Z",
+ "votingPeriodEnd": "2025-07-12T23:59:59Z",
+ "startOfTallying": "2025-07-13",
+ "endOfTallying": "2025-07-15",
+ "proposalFundingLogic": "top N by votes",
+ "voterCompensations": 2.5,
+ "communityReviewCompensations": 1.5,
+ "communityModeratorCompensations": 1.0,
+ "onboardingCompensations": 0.5,
+ "projectAccountabilityManagementComp": 0.25,
+ "currentInsightSharingStart": "2025-05-01",
+ "currentProposalSubmissionStart": "2025-05-10",
+ "currentRefineProposalsStart": "2025-05-20",
+ "currentFinalizeProposalsStart": "2025-05-30",
+ "currentProposalAssessment": "2025-06-01",
+ "currentAssessmentQaStart": "2025-06-05"
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/campaign_parameters.schema.json b/specs/signed_docs/docs/payload_schemas/campaign_parameters.schema.json
new file mode 100644
index 0000000000..e800be43d0
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/campaign_parameters.schema.json
@@ -0,0 +1,208 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://raw.githubusercontent.com/input-output-hk/catalyst-libs/main/specs/signed_docs/docs/payload_schemas/campaign_parameters.schema.json",
+ "title": "Campaign Parameters",
+ "description": "Schema for defining Catalyst campaign-level parameters, with UI/UX metadata and logical grouping.",
+ "type": "object",
+ "properties": {
+ "fundName": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Fund/Campaign Name"
+ },
+ "fundSize": {
+ "$ref": "#/definitions/adaAmount",
+ "title": "Fund/Campaign Size"
+ },
+ "campaignTitle": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Campaign (Challenge) Title"
+ },
+ "campaignBudget": {
+ "$ref": "#/definitions/adaAmount",
+ "title": "Campaign (Challenge) Budget"
+ },
+ "proposalSubmissionFee": {
+ "$ref": "#/definitions/currencyAmount",
+ "title": "Proposal Submission Fee"
+ },
+ "compensationsDistributionDate": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "Compensations and funds distribution target date"
+ },
+ "proposalsRegistrationOnChain": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "Proposals registration on the blockchain"
+ },
+ "drepDeadlineDate": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "Drep deadline date"
+ },
+ "registrationDeadlineDate": {
+ "$ref": "#/definitions/datetimeParameter",
+ "title": "Registration deadline date"
+ },
+ "votingPeriodStart": {
+ "$ref": "#/definitions/datetimeParameter",
+ "title": "Voting period start time"
+ },
+ "votingPeriodEnd": {
+ "$ref": "#/definitions/datetimeParameter",
+ "title": "Voting period end time"
+ },
+ "startOfTallying": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "Start of tallying"
+ },
+ "endOfTallying": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "End of tallying"
+ },
+ "proposalFundingLogic": {
+ "$ref": "#/definitions/stringRule",
+ "title": "Proposal Funding logic (winner selection)"
+ },
+ "voterCompensations": {
+ "$ref": "#/definitions/percentageOrAda",
+ "title": "Voter Compensations (Vrtotal)"
+ },
+ "communityReviewCompensations": {
+ "$ref": "#/definitions/percentageOrAda",
+ "title": "Community Review Compensations"
+ },
+ "communityModeratorCompensations": {
+ "$ref": "#/definitions/percentageOrAda",
+ "title": "Community Moderator Compensations (AArtotal)"
+ },
+ "onboardingCompensations": {
+ "$ref": "#/definitions/percentageOrAda",
+ "title": "Onboarding compensations (Cttotal)"
+ },
+ "projectAccountabilityManagementComp": {
+ "$ref": "#/definitions/percentageOrAda",
+ "title": "Project Accountability Management Comp."
+ },
+ "currentInsightSharingStart": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "current_insight_sharing_start"
+ },
+ "currentProposalSubmissionStart": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "current_proposal_submission_start"
+ },
+ "currentRefineProposalsStart": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "current_refine_proposals_start"
+ },
+ "currentFinalizeProposalsStart": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "current_finalize_proposals_start"
+ },
+ "currentProposalAssessment": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "current_proposal_assessment"
+ },
+ "currentAssessmentQaStart": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "current_assessment_qa_start"
+ }
+ },
+ "required": ["fundName", "fundSize", "campaignTitle", "campaignBudget"],
+ "x-order": [
+ "fundName",
+ "fundSize",
+ "campaignTitle",
+ "campaignBudget",
+ "proposalSubmissionFee",
+ "compensationsDistributionDate",
+ "proposalsRegistrationOnChain",
+ "drepDeadlineDate",
+ "registrationDeadlineDate",
+ "votingPeriodStart",
+ "votingPeriodEnd",
+ "startOfTallying",
+ "endOfTallying",
+ "proposalFundingLogic",
+ "voterCompensations",
+ "communityReviewCompensations",
+ "communityModeratorCompensations",
+ "onboardingCompensations",
+ "projectAccountabilityManagementComp",
+ "currentInsightSharingStart",
+ "currentProposalSubmissionStart",
+ "currentRefineProposalsStart",
+ "currentFinalizeProposalsStart",
+ "currentProposalAssessment",
+ "currentAssessmentQaStart"
+ ],
+ "definitions": {
+ "booleanParameter": {
+ "type": "boolean",
+ "title": "Boolean Parameter",
+ "x-note": "A true/false value."
+ },
+ "stringParameter": {
+ "type": "string",
+ "title": "String Parameter",
+ "x-note": "A plain text value."
+ },
+ "adaAmount": {
+ "type": "integer",
+ "title": "ADA Amount",
+ "x-note": "Amount in ADA."
+ },
+ "lovelaceAmount": {
+ "type": "integer",
+ "title": "Lovelace Amount",
+ "x-note": "Amount in Lovelace."
+ },
+ "integerParameter": {
+ "type": "integer",
+ "title": "Integer Parameter",
+ "x-note": "An integer value."
+ },
+ "dateParameter": {
+ "type": "string",
+ "format": "date",
+ "title": "Date Parameter",
+ "x-note": "A date value (YYYY-MM-DD)."
+ },
+ "datetimeParameter": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Datetime Parameter",
+ "x-note": "A datetime value (ISO 8601)."
+ },
+ "ratioFormula": {
+ "type": "string",
+ "title": "Ratio / Formula",
+ "x-note": "A ratio or formula expression."
+ },
+ "percentageParameter": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 100,
+ "title": "Percentage Parameter",
+ "x-note": "A percentage value (0-100)."
+ },
+ "currencyAmount": {
+ "type": ["string", "number"],
+ "title": "Currency Amount or String"
+ },
+ "stringRule": {
+ "type": "string",
+ "title": "String / Rule"
+ },
+ "percentageOrAda": {
+ "oneOf": [
+ { "$ref": "#/definitions/percentageParameter" },
+ { "$ref": "#/definitions/adaAmount" }
+ ],
+ "title": "Percentage or ADA Amount"
+ },
+ "listParameter": {
+ "type": "array",
+ "items": { "type": "string" },
+ "title": "List Parameter"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/category_parameter.example.json b/specs/signed_docs/docs/payload_schemas/category_parameter.example.json
new file mode 100644
index 0000000000..4aecdefd1d
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/category_parameter.example.json
@@ -0,0 +1,8 @@
+{
+ "campaignTitle": "Cardano Open Innovation",
+ "minimumBudgetRequestPerProposal": 15000,
+ "maximumBudgetRequestPerProposal": "200000 (variable per challenge)",
+ "proposalFundingLogic": "top N by votes",
+ "proposalAcceptanceThreshold": 60,
+ "votingOptions": ["Yes", "No", "Abstain"]
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/category_parameters.schema.json b/specs/signed_docs/docs/payload_schemas/category_parameters.schema.json
new file mode 100644
index 0000000000..a193c96a64
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/category_parameters.schema.json
@@ -0,0 +1,117 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://raw.githubusercontent.com/input-output-hk/catalyst-libs/main/specs/signed_docs/docs/payload_schemas/category_parameters.schema.json",
+ "title": "Category Parameters",
+ "description": "Schema for defining Catalyst category-level parameters, with UI/UX metadata and logical grouping.",
+ "type": "object",
+ "properties": {
+ "campaignTitle": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Campaign (Challenge) Title"
+ },
+ "minimumBudgetRequestPerProposal": {
+ "$ref": "#/definitions/adaAmount",
+ "title": "Minimum Budget Request Per Proposal"
+ },
+ "maximumBudgetRequestPerProposal": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Maximum Budget Request Per Proposal"
+ },
+ "proposalFundingLogic": {
+ "$ref": "#/definitions/stringRule",
+ "title": "Proposal Funding logic (winner selection)"
+ },
+ "proposalAcceptanceThreshold": {
+ "$ref": "#/definitions/percentageParameter",
+ "title": "Proposal acceptance threshold"
+ },
+ "votingOptions": {
+ "$ref": "#/definitions/listParameter",
+ "title": "Voting options"
+ }
+ },
+ "required": [
+ "campaignTitle",
+ "minimumBudgetRequestPerProposal",
+ "maximumBudgetRequestPerProposal"
+ ],
+ "x-order": [
+ "campaignTitle",
+ "minimumBudgetRequestPerProposal",
+ "maximumBudgetRequestPerProposal",
+ "proposalFundingLogic",
+ "proposalAcceptanceThreshold",
+ "votingOptions"
+ ],
+ "definitions": {
+ "booleanParameter": {
+ "type": "boolean",
+ "title": "Boolean Parameter",
+ "x-note": "A true/false value."
+ },
+ "stringParameter": {
+ "type": "string",
+ "title": "String Parameter",
+ "x-note": "A plain text value."
+ },
+ "adaAmount": {
+ "type": "integer",
+ "title": "ADA Amount",
+ "x-note": "Amount in ADA."
+ },
+ "lovelaceAmount": {
+ "type": "integer",
+ "title": "Lovelace Amount",
+ "x-note": "Amount in Lovelace."
+ },
+ "integerParameter": {
+ "type": "integer",
+ "title": "Integer Parameter",
+ "x-note": "An integer value."
+ },
+ "dateParameter": {
+ "type": "string",
+ "format": "date",
+ "title": "Date Parameter",
+ "x-note": "A date value (YYYY-MM-DD)."
+ },
+ "datetimeParameter": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Datetime Parameter",
+ "x-note": "A datetime value (ISO 8601)."
+ },
+ "ratioFormula": {
+ "type": "string",
+ "title": "Ratio / Formula",
+ "x-note": "A ratio or formula expression."
+ },
+ "percentageParameter": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 100,
+ "title": "Percentage Parameter",
+ "x-note": "A percentage value (0-100)."
+ },
+ "currencyAmount": {
+ "type": ["string", "number"],
+ "title": "Currency Amount or String"
+ },
+ "stringRule": {
+ "type": "string",
+ "title": "String / Rule"
+ },
+ "percentageOrAda": {
+ "oneOf": [
+ { "$ref": "#/definitions/percentageParameter" },
+ { "$ref": "#/definitions/adaAmount" }
+ ],
+ "title": "Percentage or ADA Amount"
+ },
+ "listParameter": {
+ "type": "array",
+ "items": { "type": "string" },
+ "title": "List Parameter"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/common_definitions.schema.json b/specs/signed_docs/docs/payload_schemas/common_definitions.schema.json
new file mode 100644
index 0000000000..e2b2ae1331
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/common_definitions.schema.json
@@ -0,0 +1,78 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://raw.githubusercontent.com/input-output-hk/catalyst-libs/main/specs/signed_docs/docs/payload_schemas/common_definitions.schema.json",
+ "title": "Common Definitions for Catalyst Schemas",
+ "description": "Reusable definitions for all Catalyst parameter schemas.",
+ "type": "object",
+ "definitions": {
+ "booleanParameter": {
+ "type": "boolean",
+ "title": "Boolean Parameter",
+ "x-note": "A true/false value."
+ },
+ "stringParameter": {
+ "type": "string",
+ "title": "String Parameter",
+ "x-note": "A plain text value."
+ },
+ "adaAmount": {
+ "type": "integer",
+ "title": "ADA Amount",
+ "x-note": "Amount in ADA."
+ },
+ "lovelaceAmount": {
+ "type": "integer",
+ "title": "Lovelace Amount",
+ "x-note": "Amount in Lovelace."
+ },
+ "integerParameter": {
+ "type": "integer",
+ "title": "Integer Parameter",
+ "x-note": "An integer value."
+ },
+ "dateParameter": {
+ "type": "string",
+ "format": "date",
+ "title": "Date Parameter",
+ "x-note": "A date value (YYYY-MM-DD)."
+ },
+ "datetimeParameter": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Datetime Parameter",
+ "x-note": "A datetime value (ISO 8601)."
+ },
+ "ratioFormula": {
+ "type": "string",
+ "title": "Ratio / Formula",
+ "x-note": "A ratio or formula expression."
+ },
+ "percentageParameter": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 100,
+ "title": "Percentage Parameter",
+ "x-note": "A percentage value (0-100)."
+ },
+ "currencyAmount": {
+ "type": ["string", "number"],
+ "title": "Currency Amount or String"
+ },
+ "stringRule": {
+ "type": "string",
+ "title": "String / Rule"
+ },
+ "percentageOrAda": {
+ "oneOf": [
+ { "$ref": "#/definitions/percentageParameter" },
+ { "$ref": "#/definitions/adaAmount" }
+ ],
+ "title": "Percentage or ADA Amount"
+ },
+ "listParameter": {
+ "type": "array",
+ "items": { "type": "string" },
+ "title": "List Parameter"
+ }
+ }
+}
diff --git a/specs/signed_docs/docs/payload_schemas/decision_parameter.example.json b/specs/signed_docs/docs/payload_schemas/decision_parameter.example.json
new file mode 100644
index 0000000000..08f3548d3f
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/decision_parameter.example.json
@@ -0,0 +1,4 @@
+{
+ "votingPeriodStart": "2025-07-05T00:00:00Z",
+ "votingOptions": ["Yes", "No", "Abstain"]
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/decision_parameters.schema.json b/specs/signed_docs/docs/payload_schemas/decision_parameters.schema.json
new file mode 100644
index 0000000000..bb12f3d07a
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/decision_parameters.schema.json
@@ -0,0 +1,112 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://raw.githubusercontent.com/input-output-hk/catalyst-libs/main/specs/signed_docs/docs/payload_schemas/decision_parameters.schema.json",
+ "title": "Decision Parameters",
+ "description": "Schema for defining Catalyst decision-level parameters, with UI/UX metadata and logical grouping.",
+ "type": "object",
+ "properties": {
+ "decisionTitle": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Decision Title"
+ },
+ "decisionType": {
+ "$ref": "#/definitions/stringParameter",
+ "title": "Decision Type"
+ },
+ "decisionDate": {
+ "$ref": "#/definitions/dateParameter",
+ "title": "Decision Date"
+ },
+ "votingOptions": {
+ "$ref": "#/definitions/listParameter",
+ "title": "Voting Options"
+ },
+ "acceptanceThreshold": {
+ "$ref": "#/definitions/percentageParameter",
+ "title": "Acceptance Threshold"
+ }
+ },
+ "required": [
+ "decisionTitle",
+ "decisionType",
+ "decisionDate"
+ ],
+ "x-order": [
+ "decisionTitle",
+ "decisionType",
+ "decisionDate",
+ "votingOptions",
+ "acceptanceThreshold"
+ ],
+ "definitions": {
+ "booleanParameter": {
+ "type": "boolean",
+ "title": "Boolean Parameter",
+ "x-note": "A true/false value."
+ },
+ "stringParameter": {
+ "type": "string",
+ "title": "String Parameter",
+ "x-note": "A plain text value."
+ },
+ "adaAmount": {
+ "type": "integer",
+ "title": "ADA Amount",
+ "x-note": "Amount in ADA."
+ },
+ "lovelaceAmount": {
+ "type": "integer",
+ "title": "Lovelace Amount",
+ "x-note": "Amount in Lovelace."
+ },
+ "integerParameter": {
+ "type": "integer",
+ "title": "Integer Parameter",
+ "x-note": "An integer value."
+ },
+ "dateParameter": {
+ "type": "string",
+ "format": "date",
+ "title": "Date Parameter",
+ "x-note": "A date value (YYYY-MM-DD)."
+ },
+ "datetimeParameter": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Datetime Parameter",
+ "x-note": "A datetime value (ISO 8601)."
+ },
+ "ratioFormula": {
+ "type": "string",
+ "title": "Ratio / Formula",
+ "x-note": "A ratio or formula expression."
+ },
+ "percentageParameter": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 100,
+ "title": "Percentage Parameter",
+ "x-note": "A percentage value (0-100)."
+ },
+ "currencyAmount": {
+ "type": ["string", "number"],
+ "title": "Currency Amount or String"
+ },
+ "stringRule": {
+ "type": "string",
+ "title": "String / Rule"
+ },
+ "percentageOrAda": {
+ "oneOf": [
+ { "$ref": "#/definitions/percentageParameter" },
+ { "$ref": "#/definitions/adaAmount" }
+ ],
+ "title": "Percentage or ADA Amount"
+ },
+ "listParameter": {
+ "type": "array",
+ "items": { "type": "string" },
+ "title": "List Parameter"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specs/signed_docs/docs/payload_schemas/parameters.md b/specs/signed_docs/docs/payload_schemas/parameters.md
new file mode 100644
index 0000000000..f631497861
--- /dev/null
+++ b/specs/signed_docs/docs/payload_schemas/parameters.md
@@ -0,0 +1,55 @@
+# Catalyst Signed Document Parameters
+
+## Brand Parameters
+
+- directVotingPrivacyState
+- brandName
+- minimumBudgetRequestPerProposal
+- maximumBudgetRequestPerProposal
+- maximumProposalsPerProposer
+- communityReviewerRegistration
+- votingPowerThreshold
+- tallyingOptimization
+- proposalAcceptanceThreshold
+
+## Campaign Parameters
+
+- fundName
+- fundSize
+- campaignTitle
+- campaignBudget
+- proposalSubmissionFee
+- compensationsDistributionDate
+- proposalsRegistrationOnChain
+- drepDeadlineDate
+- registrationDeadlineDate
+- votingPeriodStart
+- votingPeriodEnd
+- startOfTallying
+- endOfTallying
+- proposalFundingLogic
+- voterCompensations
+- communityReviewCompensations
+- communityModeratorCompensations
+- onboardingCompensations
+- projectAccountabilityManagementComp
+- currentInsightSharingStart
+- currentProposalSubmissionStart
+- currentRefineProposalsStart
+- currentFinalizeProposalsStart
+- currentProposalAssessment
+- currentAssessmentQaStart
+
+## Category Parameters
+
+- campaignTitle
+- minimumBudgetRequestPerProposal
+- maximumBudgetRequestPerProposal
+- proposalFundingLogic
+- proposalAcceptanceThreshold
+- votingOptions
+
+## Contest Parameters
+
+- votingPeriodStart
+- votingOptions
diff --git a/specs/signed_docs/docs/payload_schemas/proposal_submission_action.schema.json b/specs/signed_docs/docs/payload_schemas/proposal_submission_action.schema.json
index 965b66f37a..f7c7494c20 100644
--- a/specs/signed_docs/docs/payload_schemas/proposal_submission_action.schema.json
+++ b/specs/signed_docs/docs/payload_schemas/proposal_submission_action.schema.json
@@ -3,12 +3,10 @@
"$id": "https://raw.githubusercontent.com/input-output-hk/catalyst-libs/refs/heads/main/specs/signed_docs/docs/payload_schemas/proposal_submission_action.schema.json",
"title": "Proposal Submission Action Payload Schema",
"description": "Structure of the payload of a Proposal Submission Action.",
- "maintainers": [
- {
- "name": "Catalyst Team",
- "url": "https://projectcatalyst.io/"
- }
- ],
+ "maintainers": [{
+ "name": "Catalyst Team",
+ "url": "https://projectcatalyst.io/"
+ }],
"x-changelog": {
"2025-03-01": [
"First Version Created."