[User] Provide a JSON object that satisfies the schema "GeoJSON". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

GeoJSON

GeoJSON Point

GeoJSON LineString

GeoJSON Polygon

GeoJSON MultiPoint

GeoJSON MultiLineString

GeoJSON MultiPolygon

GeoJSON GeometryCollection

GeoJSON Point

GeoJSON LineString

GeoJSON Polygon

GeoJSON MultiPoint

GeoJSON MultiLineString

GeoJSON MultiPolygon

GeoJSON Feature

GeoJSON Point

GeoJSON LineString

GeoJSON Polygon

GeoJSON MultiPoint

GeoJSON MultiLineString

GeoJSON MultiPolygon

GeoJSON GeometryCollection

GeoJSON Point

GeoJSON LineString

GeoJSON Polygon

GeoJSON MultiPoint

GeoJSON MultiLineString

GeoJSON MultiPolygon

GeoJSON FeatureCollection

GeoJSON Feature

GeoJSON Point

GeoJSON LineString

GeoJSON Polygon

GeoJSON MultiPoint

GeoJSON MultiLineString

GeoJSON MultiPolygon

GeoJSON GeometryCollection

GeoJSON Point

GeoJSON LineString

GeoJSON Polygon

GeoJSON MultiPoint

GeoJSON MultiLineString

GeoJSON MultiPolygon

Provide a JSON object that satisfies the schema "GeoJSON". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://gitversion.net/schemas/6.0/GitVersion.configuration.json","title":"GitVersion Configuration (6.0)","description":"GitVersion configuration schema (6.0)","type":"object","properties":{"assembly-file-versioning-format":{"description":"Specifies the format of AssemblyFileVersion and overwrites the value of assembly-file-versioning-scheme.","type":"string"},"assembly-file-versioning-scheme":{"description":"The scheme to use when setting AssemblyFileVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.","default":"MajorMinorPatch","enum":["MajorMinorPatchTag","MajorMinorPatch","MajorMinor","Major","None"]},"assembly-informational-format":{"description":"Specifies the format of AssemblyInformationalVersion. Defaults to '{InformationalVersion}'.","default":"'{InformationalVersion}'","type":"string"},"assembly-versioning-format":{"description":"Specifies the format of AssemblyVersion and overwrites the value of assembly-versioning-scheme.","type":"string"},"assembly-versioning-scheme":{"description":"The scheme to use when setting AssemblyVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.","default":"MajorMinorPatch","enum":["MajorMinorPatchTag","MajorMinorPatch","MajorMinor","Major","None"]},"branches":{"description":"The header for all the individual branch configuration.","type":"object","additionalProperties":{"$ref":"#/$defs/branchConfiguration"}},"commit-date-format":{"description":"The format to use when calculating the commit date. Defaults to 'yyyy-MM-dd'. See [Standard Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [Custom Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings).","default":"yyyy-MM-dd","type":"string"},"commit-message-incrementing":{"$ref":"#/$defs/nullableOfCommitMessageIncrementMode"},"mode":{"$ref":"#/$defs/nullableOfDeploymentMode"},"ignore":{"description":"The header property for the ignore configuration.","type":"object","properties":{"commits-before":{"$ref":"#/$defs/string3"},"sha":{"$ref":"#/$defs/hashSetOfString2"}}},"increment":{"$ref":"#/$defs/incrementStrategy"},"is-main-branch":{"$ref":"#/$defs/nullableOfBoolean"},"is-release-branch":{"$ref":"#/$defs/nullableOfBoolean1"},"is-source-branch-for":{"$ref":"#/$defs/hashSetOfString"},"label":{"$ref":"#/$defs/string"},"label-number-pattern":{"$ref":"#/$defs/string1"},"major-version-bump-message":{"format":"regex","description":"The regular expression to match commit messages with to perform a major version increment. Defaults to '\\+semver:\\s?(breaking|major)'","default":"\\+semver:\\s?(breaking|major)","type":"string"},"merge-message-formats":{"description":"Custom merge message formats to enable identification of merge messages that do not follow the built-in conventions.","type":"object","additionalProperties":{"type":"string"}},"minor-version-bump-message":{"format":"regex","description":"The regular expression to match commit messages with to perform a minor version increment. Defaults to '\\+semver:\\s?(feature|minor)'","default":"\\+semver:\\s?(feature|minor)","type":"string"},"next-version":{"description":"Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes","type":"string"},"no-bump-message":{"format":"regex","description":"Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '\\+semver:\\s?(none|skip)'","default":"\\+semver:\\s?(none|skip)","type":"string"},"patch-version-bump-message":{"format":"regex","description":"The regular expression to match commit messages with to perform a patch version increment. Defaults to '\\+semver:\\s?(fix|patch)'","default":"\\+semver:\\s?(fix|patch)","type":"string"},"pre-release-weight":{"$ref":"#/$defs/nullableOfInt32"},"prevent-increment":{"$ref":"#/$defs/preventIncrementConfiguration"},"regex":{"$ref":"#/$defs/string2"},"semantic-version-format":{"description":"Specifies the semantic version format that is used when parsing the string. Can be 'Strict' or 'Loose'. Defaults to 'Strict'.","default":"Strict","enum":["Strict","Loose"]},"source-branches":{"$ref":"#/$defs/hashSetOfString1"},"tag-prefix":{"format":"regex","description":"A regular expression which is used to trim Git tags before processing. Defaults to '[vV]?'","default":"[vV]?","type":"string"},"tag-pre-release-weight":{"description":"The pre-release weight in case of tagged commits. Defaults to 60000.","type":["integer","null"]},"track-merge-message":{"$ref":"#/$defs/nullableOfBoolean4"},"track-merge-target":{"$ref":"#/$defs/nullableOfBoolean5"},"tracks-release-branches":{"$ref":"#/$defs/nullableOfBoolean6"},"update-build-number":{"description":"Whether to update the build number in the project file. Defaults to true.","default":"true","type":"boolean"},"version-in-branch-pattern":{"format":"regex","description":"A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '(?<version>[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*'.","default":"(?<version>[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*","type":"string"},"strategies":{"description":"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.","type":"array","items":{"description":"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.","enum":["None","Fallback","ConfiguredNextVersion","MergeMessage","TaggedCommit","TrackReleaseBranches","VersionInBranchName","Mainline"]}},"workflow":{"description":"The base template of the configuration to use. Possible values are: 'GitFlow/v1' or 'GitHubFlow/v1'","type":"string"}},"$defs":{"branchConfiguration":{"type":"object","properties":{"commit-message-incrementing":{"$ref":"#/$defs/nullableOfCommitMessageIncrementMode"},"mode":{"$ref":"#/$defs/nullableOfDeploymentMode"},"increment":{"$ref":"#/$defs/incrementStrategy"},"is-main-branch":{"$ref":"#/$defs/nullableOfBoolean"},"is-release-branch":{"$ref":"#/$defs/nullableOfBoolean1"},"is-source-branch-for":{"$ref":"#/$defs/hashSetOfString"},"label":{"$ref":"#/$defs/string"},"label-number-pattern":{"$ref":"#/$defs/string1"},"pre-release-weight":{"$ref":"#/$defs/nullableOfInt32"},"prevent-increment":{"$ref":"#/$defs/preventIncrementConfiguration"},"regex":{"$ref":"#/$defs/string2"},"source-branches":{"$ref":"#/$defs/hashSetOfString1"},"track-merge-message":{"$ref":"#/$defs/nullableOfBoolean4"},"track-merge-target":{"$ref":"#/$defs/nullableOfBoolean5"},"tracks-release-branches":{"$ref":"#/$defs/nullableOfBoolean6"}}},"nullableOfCommitMessageIncrementMode":{"description":"Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.","enum":["Enabled","Disabled","MergeMessageOnly"]},"nullableOfDeploymentMode":{"description":"The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.","enum":["ManualDeployment","ContinuousDelivery","ContinuousDeployment"]},"incrementStrategy":{"description":"The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.","enum":["None","Major","Minor","Patch","Inherit"]},"nullableOfBoolean":{"description":"When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.","type":["boolean","null"]},"nullableOfBoolean1":{"description":"Indicates this branch configuration represents a release branch in GitFlow.","type":["boolean","null"]},"hashSetOfString":{"description":"The branches that this branch is a source branch.","type":"array","items":{"description":"The branches that this branch is a source branch.","type":"string"}},"string":{"description":"The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).","type":"string"},"string1":{"format":"regex","description":"The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?<number>\\d+)'.","default":"[/-](?<number>\\d+)","type":"string"},"nullableOfInt32":{"description":"Provides a way to translate the PreReleaseLabel to a number.","type":["integer","null"]},"preventIncrementConfiguration":{"description":"The prevent increment configuration section.","type":"object","properties":{"of-merged-branch":{"$ref":"#/$defs/nullableOfBoolean2"},"when-branch-merged":{"$ref":"#/$defs/nullableOfBoolean2"},"when-current-commit-tagged":{"$ref":"#/$defs/nullableOfBoolean3"}}},"nullableOfBoolean2":{"description":"Prevent increment when branch merged.","type":["boolean","null"]},"nullableOfBoolean3":{"description":"This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.","type":["boolean","null"]},"string2":{"format":"regex","description":"The regular expression pattern to use to match this branch.","type":"string"},"hashSetOfString1":{"description":"The source branches for this branch.","type":"array","items":{"description":"The source branches for this branch.","type":"string"}},"nullableOfBoolean4":{"description":"This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.","type":["boolean","null"]},"nullableOfBoolean5":{"description":"Strategy which will look for tagged merge commits directly off the current branch.","type":["boolean","null"]},"nullableOfBoolean6":{"description":"Indicates this branch configuration represents develop in GitFlow.","type":["boolean","null"]},"string3":{"format":"date-time","description":"Commits before this date will be ignored. Format: yyyy-MM-ddTHH:mm:ss.","type":"string"},"hashSetOfString2":{"description":"A sequence of SHAs to be excluded from the version calculations.","type":"array","items":{"description":"A sequence of SHAs to be excluded from the version calculations.","type":"string"}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "GitVersion Configuration (6.0)". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

GitVersion Configuration (6.0)

GitVersion configuration schema (6.0)

Specifies the format of AssemblyFileVersion and overwrites the value of assembly-file-versioning-scheme.

The scheme to use when setting AssemblyFileVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.

MajorMinorPatchTag MajorMinorPatch MajorMinor Major None

Specifies the format of AssemblyInformationalVersion. Defaults to '{InformationalVersion}'.

Specifies the format of AssemblyVersion and overwrites the value of assembly-versioning-scheme.

The scheme to use when setting AssemblyVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.

The header for all the individual branch configuration.

The format to use when calculating the commit date. Defaults to 'yyyy-MM-dd'. See [Standard Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [Custom Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings).

The header property for the ignore configuration.

The regular expression to match commit messages with to perform a major version increment. Defaults to '\+semver:\s?(breaking|major)'

Custom merge message formats to enable identification of merge messages that do not follow the built-in conventions.

The regular expression to match commit messages with to perform a minor version increment. Defaults to '\+semver:\s?(feature|minor)'

Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes

Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '\+semver:\s?(none|skip)'

The regular expression to match commit messages with to perform a patch version increment. Defaults to '\+semver:\s?(fix|patch)'

Specifies the semantic version format that is used when parsing the string. Can be 'Strict' or 'Loose'. Defaults to 'Strict'.

A regular expression which is used to trim Git tags before processing. Defaults to '[vV]?'

The pre-release weight in case of tagged commits. Defaults to 60000.

Whether to update the build number in the project file. Defaults to true.

A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '(?<version>[vV]?\d+(\.\d+)?(\.\d+)?).*'.

Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.

None Fallback ConfiguredNextVersion MergeMessage TaggedCommit TrackReleaseBranches VersionInBranchName Mainline

The base template of the configuration to use. Possible values are: 'GitFlow/v1' or 'GitHubFlow/v1'

Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.

The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.

The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.

When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.

Indicates this branch configuration represents a release branch in GitFlow.

The branches that this branch is a source branch.

The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).

The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?<number>\d+)'.

Provides a way to translate the PreReleaseLabel to a number.

The prevent increment configuration section.

Prevent increment when branch merged.

This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.

The regular expression pattern to use to match this branch.

The source branches for this branch.

The source branches for this branch.

This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.

Strategy which will look for tagged merge commits directly off the current branch.

Indicates this branch configuration represents develop in GitFlow.

Commits before this date will be ignored. Format: yyyy-MM-ddTHH:mm:ss.

A sequence of SHAs to be excluded from the version calculations.

Provide a JSON object that satisfies the schema "GitVersion Configuration (6.0)". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","title":"Add-on Version Checker file","description":"A KSP-AVC version file's content","type":"object","properties":{"NAME":{"description":"The display name for the add-on","type":"string"},"URL":{"description":"Location of a remote version file for update checking","type":"string","format":"uri"},"DOWNLOAD":{"description":"Web address where the latest version can be downloaded","type":"string","format":"uri"},"CHANGE_LOG":{"description":"The complete or incremental change log for the add-on","type":"string"},"CHANGE_LOG_URL":{"description":"Populates the CHANGE_LOG field using the file at this url","type":"string","format":"uri"},"GITHUB":{"description":"Allows KSP-AVC to do release checks with GitHub including setting a download location if one is not specified. If the latest release version is not equal to the version in the file, an update notification will not appear.","type":"object","properties":{"USERNAME ":{"description":"Your GitHub username","type":"string"},"REPOSITORY ":{"description":"The name of the source repository","type":"string"},"ALLOW_PRE_RELEASE ":{"description":"Include pre-releases in the latest release search","type":"boolean"}},"required":["USERNAME","REPOSITORY"]},"KERBAL_STUFF_URL":{"description":"URL to this mod's page on KerbalStuff","type":"string","format":"uri"},"VERSION":{"description":"The version of the add-on","$ref":"#/definitions/version"},"KSP_VERSION":{"description":"Version of KSP that the add-on was made to support","$ref":"#/definitions/version"},"KSP_VERSION_MIN":{"description":"Minimum version of KSP that the add-on supports","$ref":"#/definitions/version"},"KSP_VERSION_MAX":{"description":"Maximum version of KSP that the add-on supports","$ref":"#/definitions/version"},"DISALLOW_VERSION_OVERRIDE":{"type":"boolean","description":"If true, don't trust KSP-AVC's idea of which game versions are compatible with which other game versions, based on user configuration"},"ASSEMBLY_NAME":{"type":"string","description":"DO NOT USE, won't work with CKAN; name of a DLL to check for VERSION on the fly"},"KSP_VERSION_INCLUDE":{"description":"DO NOT USE, won't work with CKAN; a list of versions with which this mod is compatible","type":"array","items":{"$ref":"#/definitions/version"},"uniqueItems":true},"KSP_VERSION_EXCLUDE":{"description":"DO NOT USE, won't work with CKAN; a list of versions with which this mod is incompatible","type":"array","items":{"$ref":"#/definitions/version"},"uniqueItems":true},"LOCAL_HAS_PRIORITY":{"type":"boolean","description":"DO NOT USE, won't work with CKAN; if true, don't override properties using the remote version file"},"REMOTE_HAS_PRIORITY":{"type":"boolean","description":"DO NOT USE, won't work with CKAN; if false, don't override properties using the remote version file"},"INSTALL_LOC|INSTALL_LOC*":{"description":"Stanza to define file location to check, used by MADLAD","$ref":"#/definitions/install_loc"}},"required":["NAME","VERSION"],"definitions":{"version":{"description":"A semantic(?) version","anyOf":[{"type":"string","pattern":"^(any|[0-9]+\\.[0-9]+(\\.[0-9]+)?)$"},{"type":"object","properties":{"MAJOR":{"description":"Change major version when you make incompatible API changes","type":"integer"},"MINOR":{"description":"Change minor version when you add functionality in a backwards-compatible manner","type":"integer"},"PATCH":{"description":"Change patch version when you make backwards-compatible bug fixes","type":"integer"},"BUILD":{"description":"Build informaion","type":"integer"}},"required":["MAJOR"]}]},"install_loc":{"description":"definition of the install_loc fields","NAME":{"type":"string","description":"Name of the mod, If not specified, uses the Modname from the .version file"},"PATH":{"type":"string","description":"Path to the directory, begins below the GameData.  Must be there, but will be empty in most cases"},"DIRECTORY":{"type":"string","description":"Directory where file is"},"FILE":{"type":"string","description":"filename to be checked.  If not specified, then it checks for the directory only"},"required":["PATH","DIRECTORY"]}}}
</schema>

[User] Provide a JSON object that satisfies the schema "Add-on Version Checker file". Here are the required top‑level fields: NAME, VERSION. Return only the valid JSON object.

Add-on Version Checker file

A KSP-AVC version file's content

The display name for the add-on

Location of a remote version file for update checking

Web address where the latest version can be downloaded

The complete or incremental change log for the add-on

Populates the CHANGE_LOG field using the file at this url

Allows KSP-AVC to do release checks with GitHub including setting a download location if one is not specified. If the latest release version is not equal to the version in the file, an update notification will not appear.

Your GitHub username

The name of the source repository

Include pre-releases in the latest release search

URL to this mod's page on KerbalStuff

The version of the add-on

Version of KSP that the add-on was made to support

Minimum version of KSP that the add-on supports

Maximum version of KSP that the add-on supports

If true, don't trust KSP-AVC's idea of which game versions are compatible with which other game versions, based on user configuration

DO NOT USE, won't work with CKAN; name of a DLL to check for VERSION on the fly

DO NOT USE, won't work with CKAN; a list of versions with which this mod is compatible

DO NOT USE, won't work with CKAN; a list of versions with which this mod is incompatible

DO NOT USE, won't work with CKAN; if true, don't override properties using the remote version file

DO NOT USE, won't work with CKAN; if false, don't override properties using the remote version file

Stanza to define file location to check, used by MADLAD

A semantic(?) version

Change major version when you make incompatible API changes

Change minor version when you add functionality in a backwards-compatible manner

Change patch version when you make backwards-compatible bug fixes

Build informaion

definition of the install_loc fields

Name of the mod, If not specified, uses the Modname from the .version file

Path to the directory, begins below the GameData.  Must be there, but will be empty in most cases

Directory where file is

filename to be checked.  If not specified, then it checks for the directory only

Provide a JSON object that satisfies the schema "Add-on Version Checker file". Here are the required top‑level fields: NAME, VERSION. Return only the valid JSON object.


[User] Provide a JSON object that satisfies the schema "NetKAN JSON Schema". Here are the required top‑level fields: identifier. Return only the valid JSON object.

NetKAN JSON Schema

Schema for validating NetKAN files

Indicates that data should be filled in from an external service provider

Indicates that data should be fetched from SpaceDock

Deprecated format, no longer supported

Indicates that data should be fetched from the GitHub user and repo provided

Indicates that data should be fetched from the GitLab the user and repo provided

Indicates that data should be fetched from SourceForge using the repo provided

Indicates that data should be fetched from a Jenkins CI server using the joburl provided

Indicates data should be fetched from an HTTP server, using the URL provided

Indicates that data should be fetched from a KSP-AVC .version file at the URL provided

Indicates that data should be fetched from the .netkan file at the given URL

Indicates that version data should be filled in from an external service provider

Version information should be retrieved from an embedded KSP-AVC .version file inside the downloaded file

Version information should be retrieved from an embedded SpaceWarp swinfo.json file inside the downloaded file

If true (and $vref is set), set the version property to the VERSION specified in the .version file

Specifies a minimum epoch number manually in the version field

If true, then this module allows a freshly released version to have a version number smaller than previously existing releases

If true, then a v is prepended to the version field if not already present

Regex to match against the existing version field

Regex substitution string to use as the value of the new version field

If true, produce an error if the find regex fails to match

Version comparison string to match against version

Version comparison strings to match against version

Name of a transformation for this override to happen directly before

Name of a transformation for this override to happen directly after

An object whose fields will replace the fields already present if a match occurs

Array of names of fields to remove if a match occurs

Name of field to remove if a match occurs

If true, changed metadata files for this module will be committed to a separate module-specific branch and a pull request will be created to merge this branch

Explanation of why staging is enabled for this module to be pasted into the pull request

Customizes how the metadata is fetched from the Jenkins server

Type of build to use

any completed failed stable successful unstable unsuccessful

Regex to select which artifact to use by filename

If true, use the filename of the matched artifact as the value of the version property

Customizes how the metadata is fetched from GitHub

If true, the release's source ZIP will be used instead of an asset

Skip prereleases if false, skip regular releases if true, use both if absent

Customizes how the metadata is fetched from GitLab

Provide a JSON object that satisfies the schema "NetKAN JSON Schema". Here are the required top‑level fields: identifier. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/abc-inventory-module-data-5.1.0.json","title":"ABCInventoryModuleData JSON Schema","description":"Schema defining the structure of ABCInventoryModuleData including Principal Data, inventory, and transaction data in ABC-Plan's Inventory Management Module. Version 5.1.0 adds support for Change Attributes transactions.","type":"object","definitions":{"ABCStatus":{"type":"string","enum":["RELEASED","CONDITIONAL_RELEASED","QUARANTINE","IN_TRANSIT","ON_HOLD","EXPIRED","DAMAGED"]},"ABCInventoryReceiveTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["receive"]},"transactionData":{"type":"object","properties":{"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"materialCategoryID":{"type":"string"},"quantity":{"type":"number"},"dateOfExpiry":{"type":"string","format":"date"},"dateOfManufacture":{"type":"string","format":"date"},"poNumber":{"type":"string"},"statusID":{"$ref":"#/definitions/ABCStatus"},"locationID":{"type":"string"},"tagIDs":{"type":"array","items":{"type":"string"}},"productID":{"type":["string","null"]},"notes":{"type":"string"}},"required":["lotNumber","materialNumberID","materialCategoryID","quantity","dateOfExpiry","dateOfManufacture","poNumber","statusID","locationID","tagIDs","productID","notes"],"additionalProperties":false},"targetLotID":{"type":"string"}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryBuildTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["build"]},"transactionData":{"type":"object","properties":{"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"materialCategoryID":{"type":"string"},"quantity":{"type":"number"},"dateOfExpiry":{"type":"string","format":"date"},"dateOfManufacture":{"type":"string","format":"date"},"poNumber":{"type":"string"},"statusID":{"$ref":"#/definitions/ABCStatus"},"locationID":{"type":"string"},"tagIDs":{"type":"array","items":{"type":"string"}},"upstreams":{"type":"array","items":{"type":"object","properties":{"lotID":{"type":"string"},"quantity":{"type":"number"}},"required":["lotID","quantity"],"additionalProperties":false}},"upstreamIDs":{"type":"array","items":{"type":"string"}},"upstreamLotNumbers":{"type":"array","items":{"type":"string"}},"upstreamQuantities":{"type":"array","items":{"type":"number"}},"upstreamMaterialNumberIDs":{"type":"array","items":{"type":"string"}},"upstreamMaterialCategoryIDs":{"type":"array","items":{"type":"string"}},"upstreamLocationIDs":{"type":"array","items":{"type":"string"}},"productID":{"type":["string","null"]},"upstreamProductIDs":{"type":"array","items":{"type":["string","null"]}},"notes":{"type":"string"}},"required":["lotNumber","materialNumberID","materialCategoryID","quantity","dateOfExpiry","dateOfManufacture","poNumber","statusID","locationID","tagIDs","upstreams","upstreamIDs","upstreamLotNumbers","upstreamQuantities","upstreamMaterialNumberIDs","upstreamMaterialCategoryIDs","upstreamLocationIDs","productID","upstreamProductIDs","notes"],"additionalProperties":false},"targetLotID":{"type":"string"}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryTransferTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["transfer"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"newLocationID":{"type":"string"},"quantity":{"type":"number"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"locationID":{"type":"string"},"productID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"notes":{"type":"string"}},"required":["lotID","newLocationID","quantity","lotNumber","materialNumberID","locationID","productID","materialCategoryID","notes"],"additionalProperties":false},"targetLotID":{"type":"string"}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryStatusChangeTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["statusChange"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"newStatusID":{"$ref":"#/definitions/ABCStatus"},"quantity":{"type":"number"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"locationID":{"type":"string"},"productID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"notes":{"type":"string"}},"required":["lotID","newStatusID","quantity","lotNumber","materialNumberID","locationID","productID","materialCategoryID","notes"],"additionalProperties":false},"targetLotID":{"type":"string"}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryDistributeTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["distribute"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"quantity":{"type":"number"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"locationID":{"type":"string"},"productID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"notes":{"type":"string"}},"required":["lotID","quantity","lotNumber","materialNumberID","locationID","productID","materialCategoryID","notes"],"additionalProperties":false}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryDestroyTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["destroy"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"locationID":{"type":"string"},"productID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"notes":{"type":"string"}},"required":["lotID","lotNumber","materialNumberID","locationID","productID","materialCategoryID","notes"],"additionalProperties":false}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventorySellTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["sell"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"quantity":{"type":"number"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"locationID":{"type":"string"},"productID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"notes":{"type":"string"}},"required":["lotID","quantity","lotNumber","materialNumberID","locationID","productID","materialCategoryID","notes"],"additionalProperties":false}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryAdjustTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["adjust"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"newQuantity":{"type":"number"},"reasonCodeID":{"type":"string"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"locationID":{"type":"string"},"productID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"notes":{"type":"string"}},"required":["lotID","newQuantity","reasonCodeID","lotNumber","materialNumberID","locationID","productID","materialCategoryID","notes"],"additionalProperties":false},"oldQuantity":{"type":"number"}},"required":["uid","timestamp","transactionType","transactionData","oldQuantity"],"additionalProperties":false},"ABCInventoryChangeExpiryTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["changeExpiry"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"newDateOfExpiry":{"type":"string"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"locationID":{"type":"string"},"productID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"notes":{"type":"string"}},"required":["lotID","newDateOfExpiry","lotNumber","materialNumberID","locationID","productID","materialCategoryID","notes"],"additionalProperties":false}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryChangeAttributesTransaction":{"type":"object","properties":{"uid":{"type":"string"},"timestamp":{"type":"number"},"transactionType":{"type":"string","enum":["changeAttributes"]},"transactionData":{"type":"object","properties":{"lotID":{"type":"string"},"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"materialCategoryID":{"type":"string"},"productID":{"type":["string","null"]},"locationID":{"type":"string"},"dateOfManufacture":{"type":"string","format":"date"},"poNumber":{"type":"string"},"tagIDs":{"type":"array","items":{"type":"string"}},"notes":{"type":"string"}},"required":["lotID","lotNumber","materialNumberID","materialCategoryID","productID","locationID"],"additionalProperties":false}},"required":["uid","timestamp","transactionType","transactionData"],"additionalProperties":false},"ABCInventoryTransaction":{"oneOf":[{"$ref":"#/definitions/ABCInventoryReceiveTransaction"},{"$ref":"#/definitions/ABCInventoryBuildTransaction"},{"$ref":"#/definitions/ABCInventoryTransferTransaction"},{"$ref":"#/definitions/ABCInventoryStatusChangeTransaction"},{"$ref":"#/definitions/ABCInventoryDistributeTransaction"},{"$ref":"#/definitions/ABCInventoryDestroyTransaction"},{"$ref":"#/definitions/ABCInventorySellTransaction"},{"$ref":"#/definitions/ABCInventoryAdjustTransaction"},{"$ref":"#/definitions/ABCInventoryChangeExpiryTransaction"},{"$ref":"#/definitions/ABCInventoryChangeAttributesTransaction"}]},"ABCInventoryEntryWithoutUpstreams":{"type":"object","properties":{"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"materialCategoryID":{"type":"string"},"productID":{"type":["string","null"]},"quantity":{"type":"number"},"dateOfExpiry":{"type":"string","format":"date"},"dateOfManufacture":{"type":"string","format":"date"},"poNumber":{"type":"string"},"statusID":{"$ref":"#/definitions/ABCStatus"},"locationID":{"type":"string"},"tagIDs":{"type":"array","items":{"type":"string"}},"hasUpstreams":{"type":"boolean","enum":[false]},"transactionNotes":{"type":"array","items":{"type":"string"}},"lotNumberLowercase":{"type":"string"}},"required":["lotNumber","materialNumberID","materialCategoryID","productID","quantity","dateOfExpiry","dateOfManufacture","poNumber","statusID","locationID","tagIDs","hasUpstreams","transactionNotes","lotNumberLowercase"],"additionalProperties":false},"ABCInventoryEntryWithUpstreams":{"type":"object","properties":{"lotNumber":{"type":"string"},"materialNumberID":{"type":"string"},"materialCategoryID":{"type":"string"},"productID":{"type":["string","null"]},"quantity":{"type":"number"},"dateOfExpiry":{"type":"string","format":"date"},"dateOfManufacture":{"type":"string","format":"date"},"poNumber":{"type":"string"},"statusID":{"$ref":"#/definitions/ABCStatus"},"locationID":{"type":"string"},"tagIDs":{"type":"array","items":{"type":"string"}},"hasUpstreams":{"type":"boolean","enum":[true]},"upstreamIDs":{"type":"array","items":{"type":"string"}},"upstreamQuantities":{"type":"array","items":{"type":"number"}},"upstreamLotNumbers":{"type":"array","items":{"type":"string"}},"transactionNotes":{"type":"array","items":{"type":"string"}},"lotNumberLowercase":{"type":"string"}},"required":["lotNumber","materialNumberID","materialCategoryID","productID","quantity","dateOfExpiry","dateOfManufacture","poNumber","statusID","locationID","tagIDs","hasUpstreams","upstreamIDs","upstreamQuantities","upstreamLotNumbers","transactionNotes","lotNumberLowercase"],"additionalProperties":false},"ABCInventoryEntry":{"oneOf":[{"$ref":"#/definitions/ABCInventoryEntryWithoutUpstreams"},{"$ref":"#/definitions/ABCInventoryEntryWithUpstreams"}]}},"properties":{"$schema":{"description":"Link to https://www.schemastore.org/abc-inventory-module-data-5.1.0.json","type":"string","enum":["https://www.schemastore.org/abc-inventory-module-data-5.1.0.json"]},"ABCProducts":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"name":{"type":"string"},"isActive":{"type":"boolean"}},"required":["name","isActive"],"additionalProperties":false}},"additionalProperties":false},"ABCVendors":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"name":{"type":"string"},"isActive":{"type":"boolean"}},"required":["name","isActive"],"additionalProperties":false}},"additionalProperties":false},"ABCMaterialCategories":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"name":{"type":"string"},"prefix":{"type":"string"},"isActive":{"type":"boolean"}},"required":["name","isActive","prefix"],"additionalProperties":false}},"additionalProperties":false},"ABCMaterialNumbers":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"productID":{"type":["string","null"]},"vendorID":{"type":["string","null"]},"materialCategoryID":{"type":"string"},"number":{"type":"number"},"name":{"type":"string"},"description":{"type":"string"},"unitOfMeasure":{"type":"string"},"isActive":{"type":"boolean"}},"required":["productID","vendorID","materialCategoryID","number","name","description","unitOfMeasure","isActive"],"additionalProperties":false}},"additionalProperties":false},"ABCLocations":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"name":{"type":"string"},"isActive":{"type":"boolean"}},"required":["name","isActive"],"additionalProperties":false}},"additionalProperties":false},"ABCTags":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"name":{"type":"string"},"isActive":{"type":"boolean"}},"required":["name","isActive"],"additionalProperties":false}},"additionalProperties":false},"ABCReasonCodes":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"code":{"type":"string"},"description":{"type":"string"},"isActive":{"type":"boolean"}},"required":["code","description","isActive"],"additionalProperties":false}},"additionalProperties":false},"ABCTransactions":{"type":"array","items":{"$ref":"#/definitions/ABCInventoryTransaction"}},"ABCInventoryEntries":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"$ref":"#/definitions/ABCInventoryEntry"}},"additionalProperties":false}},"required":["$schema","ABCProducts","ABCVendors","ABCMaterialCategories","ABCMaterialNumbers","ABCLocations","ABCTags","ABCReasonCodes","ABCTransactions","ABCInventoryEntries"],"additionalProperties":false}
</schema>

[User] Provide a JSON object that satisfies the schema "ABCInventoryModuleData JSON Schema". Here are the required top‑level fields: $schema, ABCProducts, ABCVendors, ABCMaterialCategories, ABCMaterialNumbers, ABCLocations, ABCTags, ABCReasonCodes, ABCTransactions, ABCInventoryEntries. Return only the valid JSON object.

ABCInventoryModuleData JSON Schema

Schema defining the structure of ABCInventoryModuleData including Principal Data, inventory, and transaction data in ABC-Plan's Inventory Management Module. Version 5.1.0 adds support for Change Attributes transactions.

lotNumber materialNumberID materialCategoryID quantity dateOfExpiry dateOfManufacture poNumber statusID locationID tagIDs productID notes

lotNumber materialNumberID materialCategoryID quantity dateOfExpiry dateOfManufacture poNumber statusID locationID tagIDs upstreams upstreamIDs upstreamLotNumbers upstreamQuantities upstreamMaterialNumberIDs upstreamMaterialCategoryIDs upstreamLocationIDs productID upstreamProductIDs notes

lotID newLocationID quantity lotNumber materialNumberID locationID productID materialCategoryID notes

lotID newStatusID quantity lotNumber materialNumberID locationID productID materialCategoryID notes

lotID quantity lotNumber materialNumberID locationID productID materialCategoryID notes

lotID lotNumber materialNumberID locationID productID materialCategoryID notes

lotID newQuantity reasonCodeID lotNumber materialNumberID locationID productID materialCategoryID notes

uid timestamp transactionType transactionData oldQuantity

lotID newDateOfExpiry lotNumber materialNumberID locationID productID materialCategoryID notes

lotID lotNumber materialNumberID materialCategoryID productID locationID

lotNumber materialNumberID materialCategoryID productID quantity dateOfExpiry dateOfManufacture poNumber statusID locationID tagIDs hasUpstreams transactionNotes lotNumberLowercase

lotNumber materialNumberID materialCategoryID productID quantity dateOfExpiry dateOfManufacture poNumber statusID locationID tagIDs hasUpstreams upstreamIDs upstreamQuantities upstreamLotNumbers transactionNotes lotNumberLowercase

Link to https://www.schemastore.org/abc-inventory-module-data-5.1.0.json

productID vendorID materialCategoryID number name description unitOfMeasure isActive

$schema ABCProducts ABCVendors ABCMaterialCategories ABCMaterialNumbers ABCLocations ABCTags ABCReasonCodes ABCTransactions ABCInventoryEntries

Provide a JSON object that satisfies the schema "ABCInventoryModuleData JSON Schema". Here are the required top‑level fields: $schema, ABCProducts, ABCVendors, ABCMaterialCategories, ABCMaterialNumbers, ABCLocations, ABCTags, ABCReasonCodes, ABCTransactions, ABCInventoryEntries. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/abc-supply-plan-10.0.0.json","title":"ABCSupplyPlan JSON Schema","description":"Schema defining the structure of ABCSupplyPlan used for managing plan data in ABC-Plan's MasterPlanner.","properties":{"$schema":{"description":"Link to https://json.schemastore.org/abc-supply-plan-10.0.0.json","type":"string","enum":["https://json.schemastore.org/abc-supply-plan-10.0.0.json"]},"planDate":{"type":"string","format":"date","title":"Plan Date","description":"The start date for the plan.  Format: first day of a month.","abcIsFirstDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true},"planNotes":{"type":"string","format":"abc-draft-js_RawDraftContentState","title":"Plan Notes","description":"Notes or comments about the plan in a specified format.  Since there is no JSON Schema for draft-js, the underlying component for mui-rte, format abc-draft-js_RawDraftContentState is enforced by calling https://draftjs.org/docs/api-reference-data-conversion/#convertfromraw.  see also: https://github.com/facebookarchive/draft-js/issues/2071 and https://github.com/facebookarchive/draft-js/issues/1544"},"analytics":{"type":"object","properties":{"items":{"type":"array","items":{"title":"Analytics Item","description":"An analytics item that can be either a time series or an analytics note","oneOf":[{"type":"object","title":"Time Series","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["TIME_SERIES"]},"subtitle":{"type":"string"},"excludeMonthsFromBeginning":{"type":"number","description":"Number of months to exclude from the beginning of the time series. Positive values trim, negative values add months before the plan start date."},"excludeMonthsFromEnd":{"type":"number","description":"Number of months to exclude from the end of the time series. Positive values trim, negative values add months after the plan end date."},"timeAggregateType":{"type":"string","enum":["Annual","Quarterly","Monthly"],"title":"Time Aggregate Type","description":"The aggregation level for time series data display"},"metrics":{"type":"array","items":{"type":"object","properties":{"metricType":{"type":"string","enum":["demand","demandDetail","actuals","otherDemand","firmOrders","plannedOrders","firmRelease","plannedRelease","expiryAdjustments","inventory","mfc"]},"abcMaterialIDs":{"type":"array","items":{"type":"string"}},"visualization":{"type":"object","oneOf":[{"properties":{"type":{"type":"string","enum":["line"]},"strokeWidth":{"type":"number"},"strokeDasharray":{"type":"string"},"dotSize":{"type":"number","minimum":0},"dotFill":{"type":"string"}},"required":["type","strokeWidth","strokeDasharray","dotSize","dotFill"],"additionalProperties":false},{"properties":{"type":{"type":"string","enum":["bar"]},"barWidth":{"type":"number"},"radius":{"type":"number"},"stackId":{"type":"string"},"showAsPercent":{"type":"boolean"}},"required":["type","barWidth","radius","stackId","showAsPercent"],"additionalProperties":false},{"properties":{"type":{"type":"string","enum":["area"]},"fillOpacity":{"type":"number"},"strokeWidth":{"type":"number"},"stackId":{"type":"string"},"showAsPercent":{"type":"boolean"}},"required":["type","fillOpacity","strokeWidth","stackId","showAsPercent"],"additionalProperties":false}]},"yAxisIndex":{"type":"number"},"color":{"type":"string"},"zIndex":{"type":"number"},"label":{"type":"string"},"showQuantitiesAs":{"type":["string","null"],"oneOf":[{"type":"string","enum":["Units","Lots","Monetary"]},{"type":"null"}],"title":"Show Quantities As","description":"How to display the quantities for this metric"},"comparisonPlanID":{"type":["string","null"],"title":"Comparison Plan ID","description":"The ID of the comparison plan to use for this metric or null if no comparison plan is used"}},"required":["metricType","abcMaterialIDs","visualization","yAxisIndex","color","zIndex","label","showQuantitiesAs","comparisonPlanID"],"allOf":[{"if":{"properties":{"metricType":{"const":"mfc"}}},"then":{"properties":{"showQuantitiesAs":{"type":"null"}}}},{"if":{"properties":{"metricType":{"const":"otherDemand"}}},"then":{"properties":{"showQuantitiesAs":{"type":"null"}}}},{"if":{"properties":{"metricType":{"const":"moh"}}},"then":{"properties":{"showQuantitiesAs":{"type":"null"}}}},{"if":{"properties":{"metricType":{"const":"capacityUtilization"}}},"then":{"properties":{"showQuantitiesAs":{"type":"null"}}}},{"if":{"properties":{"metricType":{"const":"demand"}}},"then":{"properties":{"showQuantitiesAs":{"enum":["Units","Monetary"]}}}},{"if":{"properties":{"metricType":{"const":"actuals"}}},"then":{"properties":{"showQuantitiesAs":{"enum":["Units","Monetary"]}}}},{"if":{"properties":{"metricType":{"const":"firmRelease"}}},"then":{"properties":{"showQuantitiesAs":{"enum":["Units","Lots"]}}}},{"if":{"properties":{"metricType":{"const":"plannedRelease"}}},"then":{"properties":{"showQuantitiesAs":{"enum":["Units","Lots"]}}}}],"additionalProperties":false}}},"required":["id","name","type","subtitle","excludeMonthsFromBeginning","excludeMonthsFromEnd","timeAggregateType","metrics"],"additionalProperties":false},{"type":"object","title":"Analytics Note Item","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["ANALYTICS_NOTE"]},"subtitle":{"type":"string"},"backgroundColor":{"type":"string"},"imageUrl":{"type":"string"},"text":{"type":"object","properties":{"content":{"type":"string"},"fontFamily":{"type":"string"},"fontSize":{"type":"number"},"color":{"type":"string"},"horizontalAlignment":{"type":"string","enum":["left","center","right"]},"verticalAlignment":{"type":"string","enum":["top","center","bottom"]}},"required":["content","fontFamily","fontSize","color","horizontalAlignment","verticalAlignment"],"additionalProperties":false}},"required":["id","name","type","subtitle","text"],"additionalProperties":false}]}},"layouts":{"type":"array","items":{"type":"object","properties":{"contentId":{"type":"string"},"x":{"type":"number","minimum":0,"maximum":11,"description":"Grid column position (0-11 for 12-column grid)"},"y":{"type":"number","minimum":0,"description":"Grid row position"},"tabID":{"type":"string","description":"ID of the tab this layout item belongs to"},"w":{"type":"number","minimum":1,"maximum":12,"description":"Width in grid units (1-12)"},"h":{"type":"number","minimum":1,"description":"Height in grid units"},"minH":{"type":"number","minimum":1,"description":"Minimum height in grid units"},"maxH":{"type":"number","minimum":1,"description":"Maximum height in grid units"},"minW":{"type":"number","minimum":1,"description":"Minimum width in grid units"},"maxW":{"type":"number","minimum":1,"description":"Maximum width in grid units"},"isDraggable":{"type":"boolean","description":"Whether the item can be dragged"},"isResizable":{"type":"boolean","description":"Whether the item can be resized"}},"required":["contentId","x","y","w","h"],"additionalProperties":false}},"tabs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"ordering":{"type":"number"}},"required":["id","name","ordering"],"additionalProperties":false}}},"required":["items","layouts","tabs"],"additionalProperties":false},"abcMaterialsMap":{"type":"object","patternProperties":{"^\\d+$":{"$ref":"#/definitions/ABCMaterialState"}},"additionalProperties":false,"title":"ABC Materials Map","description":"A mapping of material IDs to their respective states within the ABC system.","abcNoDuplicateValuesForOrderingProperty":true},"recipeMap":{"type":"object","patternProperties":{"^\\d+-\\d+$":{"$ref":"#/definitions/RecipeState"}},"additionalProperties":false,"title":"Recipe Map","description":"A mapping of recipes, representing the acyclic relationships among materials. abcAreAllocationMethodsHomogeneous requires no mixing of Allocation Methods.  A downstream material cannot have mixed upstream recipes.  An upstream material cannot have mixed downstream recipes.","abcDoMaterialIDsExist":true,"abcIsAcyclic":true,"abcAreAllocationMethodsHomogeneous":true}},"required":["$schema","planDate","planNotes","analytics","abcMaterialsMap","recipeMap"],"additionalProperties":false,"type":"object","definitions":{"ABCMaterialState":{"type":"object","title":"ABC Material State","description":"Represents the state of a material in the system including its attributes and planning parameters.","abcDemandDetailsMatchDemandRows":true,"properties":{"x":{"type":"number","title":"X Coordinate","description":"The X coordinate position of the material in a graphical representation."},"y":{"type":"number","title":"Y Coordinate","description":"The Y coordinate position of the material in a graphical representation."},"ordering":{"type":"number","title":"Ordering","description":"Numeric value representing the order or sequence of the material."},"abcMaterialName":{"type":"string","minLength":1,"title":"Material Name","description":"The name of the material."},"uom":{"type":"string","minLength":1,"title":"Unit of Measure","description":"The unit of measure used for the material."},"materialShape":{"type":"string","enum":["circle","square","diamond","rectangle","parallelogram","trapezoid","triangle","pentagon","hexagon"],"title":"Material Shape","description":"The shape of the material represented graphically."},"materialColor":{"$ref":"#/definitions/Color"},"doExpiryCarryover":{"type":"boolean","title":"Expiry Carryover","description":"Indicates whether to carry over the expiry information for the material."},"isCapacityConstraintNode":{"type":"boolean","title":"Capacity Constraint Node","description":"Determines if the material is a node where capacity constraints are applied."},"inventoryMethod":{"type":"string","enum":["TargetMFC","MinimumInventory"],"title":"Inventory Method","description":"The method used for managing inventory levels, either target months forward coverage or minimum inventory."},"decimalPrecision":{"type":"integer","minimum":0,"maximum":5,"title":"Decimal Precision","description":"The precision of decimal places allowed for numerical entries related to the material."},"currency":{"type":"string","minLength":1,"title":"Currency","description":"The currency used for monetary calculations of the material."},"manufacturingCost":{"type":"number","minimum":0,"title":"Manufacturing Cost","description":"The direct manufacturing cost per unit of the material."},"standardCost":{"type":"number","minimum":0,"title":"Standard Cost","description":"The standard cost per unit including overhead of the material."},"salesPrice":{"type":"number","minimum":0,"title":"Sales Price","description":"The sales price per unit of the material."},"lotSize":{"$comment":"Require integer until we fix https://gitlab.com/abc-plan/abc-plan-server/-/issues/9","type":"integer","minimum":1,"title":"Lot Size","description":"Batch size for orders. Must be greater than 0 to plan, etc."},"leadTime":{"type":"integer","minimum":0,"title":"Lead Time","description":"Delay between Manufacture Date and Release Date.  Format: non-negative integer."},"firmingPeriod":{"type":"integer","minimum":0,"title":"Firming Period","description":"Time during which no Planned Orders are allowed.  Format: non-negative integer."},"targetMFCs":{"$ref":"#/definitions/NonNegativeIntegerTimeDependentValues","title":"Target MFC","description":"Target Months Forward Coverage refers to a dynamic safety stock level\u2014a buffer quantity of inventory designed to mitigate the risk of stock-outs caused by variability in Demand. In essence, it represents the number of months of Demand that could be satisfied assuming no additional material is manufactured. Each value is defined for a specific period of time."},"minimumInventories":{"$ref":"#/definitions/NonNegativeIntegerTimeDependentValues","title":"Minimum Inventory","description":"List of Minimum Inventory values, each defined for a specific period of time. Minimum Inventory denotes the lowest stock level to prevent outages, triggering restock."},"planningFrequencies":{"$ref":"#/definitions/PositiveIntegerTimeDependentValues","title":"Planning Frequencies","description":"List of Planning Frequency values, each defined for a specific period of time."},"shelfLives":{"$ref":"#/definitions/NonNegativeIntegerTimeDependentValues","title":"Shelf Lives","description":"List of Shelf Life values, each defined for a specific period of time."},"stopshipBuffers":{"$ref":"#/definitions/NonNegativeIntegerTimeDependentValues","title":"Stopship Buffers","description":"Buffers to account for Stopship scenarios, listed for different periods."},"initialInventories":{"type":"array","items":{"$ref":"#/definitions/InitialInventory"},"title":"Initial Inventories","description":"List of Initial Inventory records, each associated with specific lot and dates."},"firmOrders":{"type":"array","items":{"$ref":"#/definitions/FirmOrder"},"title":"Firm Orders","description":"List of Firm Orders with their respective quantities and dates."},"demand":{"$ref":"#/definitions/PositiveDateMapMap","title":"Demand","description":"Map of demand rows, where each key is a unique ID and value is a DateMap containing demand values for specific dates."},"demandDetails":{"$ref":"#/definitions/ABCDemandDetailsMap","title":"Demand Details","description":"Mapping of demand row IDs to their metadata including labels and ordering."},"otherDemand":{"$ref":"#/definitions/PositiveDateMap","title":"Other Demand","description":"Map of other types of demand not included in the primary demand values."},"otherDemandAnnotation":{"$ref":"#/definitions/AnnotationMap","title":"Other Demand Annotation","description":"Annotations related to other demand entries, providing additional context."},"actuals":{"$ref":"#/definitions/PositiveDateMap","title":"Actuals","description":"Map of actual quantities, corresponding to real data collected."},"plannedOrders":{"$ref":"#/definitions/PositiveDateMap","title":"Planned Orders","description":"Map of planned order quantities, anticipated ahead of time."},"expiryAdjustments":{"$ref":"#/definitions/NegativeDateMap","title":"Expiry Adjustments","description":"Adjustments made to account for expired materials, reducing quantities."},"timeAggregateType":{"type":"string","enum":["Annual","Quarterly","Monthly"],"title":"Time Aggregate Type","description":"The aggregation level for planning and reporting, e.g., annual, quarterly, or monthly."},"showQuantitiesAs":{"type":"string","enum":["Units","Lots","Monetary"],"title":"Show Quantities As","description":"Defines how quantities are represented, e.g., in units, lots, or monetary value."},"expiryAnalysisType":{"type":"string","enum":["Expiration","Stopship"],"title":"Expiry Analysis Type","description":"Determines the type of analysis to be performed on expiry data, focusing on expiration or stopship scenarios."},"timeDependentPlanningParameters":{"type":"boolean","title":"Time Dependent Planning Parameters","description":"Indicates whether planning parameters are dependent on time, necessitating different values at different periods."},"inventorySystemMaterialNumber":{"title":"Material Number in the inventory management system","description":"For pulling inventory from the inventory management system into Initial Inventory and Firm Orders & Releases","type":["string","null"]},"inventorySystemLocationName":{"title":"Location in the inventory management system","description":"For pulling inventory from the inventory management system into Initial Inventory and Firm Orders & Releases and filtering it by location","type":["string","null"]}},"required":["x","y","ordering","abcMaterialName","uom","materialShape","materialColor","doExpiryCarryover","isCapacityConstraintNode","inventoryMethod","decimalPrecision","currency","manufacturingCost","standardCost","salesPrice","lotSize","leadTime","firmingPeriod","targetMFCs","minimumInventories","planningFrequencies","shelfLives","stopshipBuffers","initialInventories","firmOrders","demand","demandDetails","actuals","expiryAdjustments","otherDemand","otherDemandAnnotation","plannedOrders","timeAggregateType","showQuantitiesAs","expiryAnalysisType","timeDependentPlanningParameters","inventorySystemMaterialNumber","inventorySystemLocationName"],"additionalProperties":false,"allOf":[{"if":{"properties":{"timeDependentPlanningParameters":{"const":false}}},"then":{"properties":{"targetMFCs":{"type":"array","maxItems":1,"minItems":1},"minimumInventories":{"type":"array","maxItems":1,"minItems":1},"planningFrequencies":{"type":"array","maxItems":1,"minItems":1},"shelfLives":{"type":"array","maxItems":1,"minItems":1},"stopshipBuffers":{"type":"array","maxItems":1,"minItems":1}}}},{"if":{"properties":{"timeDependentPlanningParameters":{"const":true}}},"then":{"properties":{"targetMFCs":{"type":"array","minItems":1},"minimumInventories":{"type":"array","minItems":1},"planningFrequencies":{"type":"array","minItems":1},"shelfLives":{"type":"array","minItems":1},"stopshipBuffers":{"type":"array","minItems":1}}}}]},"RecipeState":{"type":"object","title":"Recipe State","description":"Defines a recipe within the system, including its components and yields.","properties":{"recipe":{"type":"number","exclusiveMinimum":0,"title":"Recipe ID","description":"Unique identifier of the recipe."},"allocationMethod":{"type":"string","enum":["PercentAllocation","PriorityAllocation"],"title":"Consumption Allocation","description":"Method for allocating downstream consumption to upstream materials."},"percentAllocations":{"$ref":"#/definitions/PercentTimeDependentValues","title":"Percent Allocations","description":"Percentage allocations of materials to the recipe over different periods."},"priorityAllocations":{"$ref":"#/definitions/NonNegativeNumberTimeDependentValues","title":"Priority Allocations","description":"Priority allocations of materials to the recipe over different periods."},"percentYield":{"type":"number","minimum":0,"title":"Percent Yield","description":"The yield percentage of the recipe, indicating efficiency."}},"required":["recipe","allocationMethod","percentAllocations","priorityAllocations","percentYield"],"additionalProperties":false},"PositiveDateMap":{"type":"object","title":"Positive Date Map","description":"Mapping of dates to positive numerical values, typically representing demand or supply quantities.","patternProperties":{"^\\d{4}-(0[1-9]|1[0-2])-01$":{"type":"number","minimum":0}},"additionalProperties":false},"PositiveDateMapMap":{"type":"object","title":"Positive Date Map Map","description":"Mapping of unique IDs to date maps, supporting multiple demand rows per material.","patternProperties":{"^.*$":{"$ref":"#/definitions/PositiveDateMap"}},"additionalProperties":false},"NegativeDateMap":{"type":"object","title":"Negative Date Map","description":"Mapping of dates to negative numerical values, typically representing adjustments or reductions.","patternProperties":{"^\\d{4}-(0[1-9]|1[0-2])-01$":{"type":"number","maximum":0}},"additionalProperties":false},"AnnotationMap":{"type":"object","title":"Annotation Map","description":"Mapping of dates to annotations or notes about specific entries.","patternProperties":{"^\\d{4}-(0[1-9]|1[0-2])-01$":{"type":"string"}},"additionalProperties":false},"Color":{"type":"string","title":"Color","description":"Colors may be specified in any string-based format supported by the Color constructor documented at https://www.npmjs.com/package/color","abcIsValidColor":"true"},"ABCDemandDetailsMap":{"type":"object","title":"ABC Demand Details Map","description":"Mapping of demand row IDs to their metadata including label and ordering.","patternProperties":{"^.*$":{"type":"object","properties":{"label":{"type":"string","title":"Label","description":"User-visible label for the demand row."},"ordering":{"type":"number","title":"Ordering","description":"Display order of the demand row within a material."}},"required":["label","ordering"],"additionalProperties":false}},"additionalProperties":false},"TemplateTimeDependentValue":{"$comment":"additionalProperties is true because this object acts as a template and is merged with other type definitions to specify valid date ranges for time-dependent values.","type":"object","title":"Template Time Dependent Value","description":"Base template for defining time-dependent values, specifying the valid date ranges for such values.","properties":{"startDate":{"title":"Start Date","description":"The start date for the time-dependent value. Must be the first day of a month and within a valid date range.","oneOf":[{"type":"string","format":"date","abcIsFirstDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true},{"type":"null"}]},"endDate":{"title":"End Date","description":"The end date for the time-dependent value. Must be the last day of a month and within a valid date range.","oneOf":[{"type":"string","format":"date","abcIsLastDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true},{"type":"null"}]}},"required":["startDate","endDate"],"additionalProperties":true},"PercentValueConstraints":{"$comment":"additionalProperties is true because it is a template and gets merged with other types","type":"object","title":"Percent Value Constraints","description":"Constraints for percentage values, defining the valid range as 0% to 100%.","properties":{"timeDependentValue":{"description":"During a particular period of time for this recipe, how much of the downstream consumption is allocated to the upstream material.  Format: 0-1 which correspond to 0%-100%.","type":"number","minimum":0,"maximum":1}},"required":["timeDependentValue"],"additionalProperties":true},"PercentTimeDependentValue":{"allOf":[{"$ref":"#/definitions/TemplateTimeDependentValue"},{"$ref":"#/definitions/PercentValueConstraints"}],"title":"Percent Time Dependent Value","description":"Defines a time-specific percentage value within a valid date range, adhering to percentage constraints."},"PercentTimeDependentValues":{"type":"array","items":{"$ref":"#/definitions/PercentTimeDependentValue"},"title":"Percent Time Dependent Values","description":"Array of time-dependent percentage values, each specifying the allocation for a given period.","abcHasNonOverlappingTimeDependentValues":"true","abcHasUninterruptedTimeDependentValues":"true"},"NonNegativeIntegerConstraints":{"$comment":"additionalProperties is true because this object acts as a template and is merged with other type definitions to enforce non-negative integer constraints in various scenarios.","type":"object","title":"Non-Negative Integer Constraints","description":"Defines constraints for integer values to ensure they are non-negative, used in various time-dependent value configurations.","properties":{"timeDependentValue":{"type":"integer","minimum":0,"title":"Time Dependent Value","description":"An integer value that cannot be negative, typically representing quantities or counts in a time-dependent context."}},"required":["timeDependentValue"],"additionalProperties":true},"NonNegativeIntegerTimeDependentValue":{"allOf":[{"$ref":"#/definitions/TemplateTimeDependentValue"},{"$ref":"#/definitions/NonNegativeIntegerConstraints"}],"title":"Non-Negative Integer Time Dependent Value","description":"Defines a time-specific integer value within a valid date range, ensuring it is non-negative."},"NonNegativeIntegerTimeDependentValues":{"type":"array","items":{"$ref":"#/definitions/NonNegativeIntegerTimeDependentValue"},"title":"Non-Negative Integer Time Dependent Values","description":"Array of time-dependent integer values, ensuring each is non-negative.","abcHasNonOverlappingTimeDependentValues":"true","abcHasUninterruptedTimeDependentValues":"true"},"NonNegativeNumberConstraints":{"$comment":"additionalProperties is true to allow merging this object with other type definitions to enforce non-negative number constraints in various scenarios.","type":"object","title":"Non-Negative Number Constraints","description":"Defines constraints for numbers to ensure they are non-negative, used in various contexts.","properties":{"timeDependentValue":{"type":"number","minimum":0,"title":"Non-Negative Number","description":"A non-negative number, used in various contexts to represent quantities or counts."}},"required":["timeDependentValue"],"additionalProperties":true},"NonNegativeNumberTimeDependentValue":{"allOf":[{"$ref":"#/definitions/TemplateTimeDependentValue"},{"$ref":"#/definitions/NonNegativeNumberConstraints"}],"title":"Non-Negative Number Time Dependent Value","description":"Defines a time-specific number within a valid range, ensuring it is non-negative."},"NonNegativeNumberTimeDependentValues":{"type":"array","items":{"$ref":"#/definitions/NonNegativeNumberTimeDependentValue"},"title":"Non-Negative Number Time Dependent Values","description":"Array of time-dependent non-negative numbers.","abcHasNonOverlappingTimeDependentValues":"true","abcHasUninterruptedTimeDependentValues":"true"},"PositiveIntegerConstraints":{"$comment":"additionalProperties is set to true because this object acts as a template and is merged with other type definitions to enforce positive integer constraints in various scenarios.","type":"object","title":"Positive Integer Constraints","description":"Defines constraints for integer values to ensure they are positive, used in various configurations where a strictly positive value is required.","properties":{"timeDependentValue":{"type":"integer","minimum":1,"title":"Time Dependent Value","description":"An integer value that must be positive, typically representing quantities or counts in contexts where zero is not a valid value."}},"required":["timeDependentValue"],"additionalProperties":true},"PositiveIntegerTimeDependentValue":{"allOf":[{"$ref":"#/definitions/TemplateTimeDependentValue"},{"$ref":"#/definitions/PositiveIntegerConstraints"}],"title":"Positive Integer Time Dependent Value","description":"Defines a time-specific integer value that must always be positive, ensuring it meets the requirements of scenarios where zero or negative numbers are not permitted."},"PositiveIntegerTimeDependentValues":{"type":"array","items":{"$ref":"#/definitions/PositiveIntegerTimeDependentValue"},"title":"Positive Integer Time Dependent Values","description":"Array of time-dependent integer values, ensuring each is positive. This setup is intended for scenarios where values must always be greater than zero.","abcHasNonOverlappingTimeDependentValues":"true","abcHasUninterruptedTimeDependentValues":"true"},"InitialInventory":{"type":"object","title":"Initial Inventory","description":"Defines the initial inventory of a material, including lot number and associated dates.","properties":{"lotNumber":{"type":"string","minLength":1,"title":"Lot Number","description":"The identifier for the lot number of the inventory item. It must be at least 1 character in length."},"initialInventoryQuantity":{"type":"number","minimum":0,"title":"Initial Inventory Quantity","description":"The quantity of the inventory item when first recorded. This must be a non-negative number."},"manufactureDate":{"type":"string","format":"date","title":"Manufacture Date","description":"The date the item was manufactured. This date must be the first day of a month and fall within a valid date range.","abcIsFirstDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true},"expirationDate":{"type":"string","format":"date","title":"Expiration Date","description":"The date the item will expire. This date must be the last day of a month and fall within a valid date range.","abcIsLastDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true,"abcIsExpirationDateOnOrAfterManufactureDate":true}},"required":["lotNumber","initialInventoryQuantity","manufactureDate","expirationDate"],"additionalProperties":false},"FirmOrder":{"type":"object","title":"Firm Order","description":"Defines a firm order within the system, including order details and relevant dates.","properties":{"firmOrderName":{"type":"string","title":"Firm Order Name","description":"The name or identifier of the firm order."},"firmOrderQuantity":{"type":"number","minimum":0,"title":"Firm Order Quantity","description":"The quantity specified in the firm order. Must be a non-negative value."},"manufactureDate":{"type":"string","format":"date","title":"Manufacture Date","description":"The date the goods are scheduled to be manufactured. Must be the first day of the month and within valid date range.","abcIsFirstDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true},"releaseDate":{"type":"string","format":"date","title":"Release Date","description":"The date the goods are scheduled to be released. Must be the first day of the month and within valid date range.","abcIsFirstDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true,"abcIsReleaseDateOnOrAfterPlanDate":true,"abcIsReleaseDateOnOrAfterManufactureDate":true},"expirationDate":{"type":"string","format":"date","title":"Expiration Date","description":"The expiration date of the product. Must be the last day of the month and within valid date range.","abcIsLastDayOfMonth":true,"abcIsAfter0001-01-01":true,"abcIsBefore9999-12-31":true,"abcIsExpirationDateOnOrAfterReleaseDate":true}},"required":["firmOrderName","firmOrderQuantity","manufactureDate","releaseDate","expirationDate"],"additionalProperties":false}}}
</schema>

[User] Provide a JSON object that satisfies the schema "ABCSupplyPlan JSON Schema". Here are the required top‑level fields: $schema, planDate, planNotes, analytics, abcMaterialsMap, recipeMap. Return only the valid JSON object.

ABCSupplyPlan JSON Schema

Schema defining the structure of ABCSupplyPlan used for managing plan data in ABC-Plan's MasterPlanner.

Link to https://json.schemastore.org/abc-supply-plan-10.0.0.json

Plan Date

The start date for the plan.  Format: first day of a month.

Plan Notes

Notes or comments about the plan in a specified format.  Since there is no JSON Schema for draft-js, the underlying component for mui-rte, format abc-draft-js_RawDraftContentState is enforced by calling https://draftjs.org/docs/api-reference-data-conversion/#convertfromraw.  see also: https://github.com/facebookarchive/draft-js/issues/2071 and https://github.com/facebookarchive/draft-js/issues/1544

Analytics Item

An analytics item that can be either a time series or an analytics note

Time Series

Number of months to exclude from the beginning of the time series. Positive values trim, negative values add months before the plan start date.

Number of months to exclude from the end of the time series. Positive values trim, negative values add months after the plan end date.

Time Aggregate Type

The aggregation level for time series data display

demand demandDetail actuals otherDemand firmOrders plannedOrders firmRelease plannedRelease expiryAdjustments inventory mfc

type strokeWidth strokeDasharray dotSize dotFill

type barWidth radius stackId showAsPercent

type fillOpacity strokeWidth stackId showAsPercent

Show Quantities As

How to display the quantities for this metric

Comparison Plan ID

The ID of the comparison plan to use for this metric or null if no comparison plan is used

metricType abcMaterialIDs visualization yAxisIndex color zIndex label showQuantitiesAs comparisonPlanID

id name type subtitle excludeMonthsFromBeginning excludeMonthsFromEnd timeAggregateType metrics

Analytics Note Item

content fontFamily fontSize color horizontalAlignment verticalAlignment

Grid column position (0-11 for 12-column grid)

Grid row position

ID of the tab this layout item belongs to

Width in grid units (1-12)

Height in grid units

Minimum height in grid units

Maximum height in grid units

Minimum width in grid units

Maximum width in grid units

Whether the item can be dragged

Whether the item can be resized

ABC Materials Map

A mapping of material IDs to their respective states within the ABC system.

Recipe Map

A mapping of recipes, representing the acyclic relationships among materials. abcAreAllocationMethodsHomogeneous requires no mixing of Allocation Methods.  A downstream material cannot have mixed upstream recipes.  An upstream material cannot have mixed downstream recipes.

$schema planDate planNotes analytics abcMaterialsMap recipeMap

ABC Material State

Represents the state of a material in the system including its attributes and planning parameters.

X Coordinate

The X coordinate position of the material in a graphical representation.

Y Coordinate

The Y coordinate position of the material in a graphical representation.

Ordering

Numeric value representing the order or sequence of the material.

Material Name

The name of the material.

Unit of Measure

The unit of measure used for the material.

circle square diamond rectangle parallelogram trapezoid triangle pentagon hexagon

Material Shape

The shape of the material represented graphically.

Expiry Carryover

Indicates whether to carry over the expiry information for the material.

Capacity Constraint Node

Determines if the material is a node where capacity constraints are applied.

Inventory Method

The method used for managing inventory levels, either target months forward coverage or minimum inventory.

Decimal Precision

The precision of decimal places allowed for numerical entries related to the material.

Currency

The currency used for monetary calculations of the material.

Manufacturing Cost

The direct manufacturing cost per unit of the material.

Standard Cost

The standard cost per unit including overhead of the material.

Sales Price

The sales price per unit of the material.

Require integer until we fix https://gitlab.com/abc-plan/abc-plan-server/-/issues/9

Lot Size

Batch size for orders. Must be greater than 0 to plan, etc.

Lead Time

Delay between Manufacture Date and Release Date.  Format: non-negative integer.

Firming Period

Time during which no Planned Orders are allowed.  Format: non-negative integer.

Target MFC

Target Months Forward Coverage refers to a dynamic safety stock level—a buffer quantity of inventory designed to mitigate the risk of stock-outs caused by variability in Demand. In essence, it represents the number of months of Demand that could be satisfied assuming no additional material is manufactured. Each value is defined for a specific period of time.

Minimum Inventory

List of Minimum Inventory values, each defined for a specific period of time. Minimum Inventory denotes the lowest stock level to prevent outages, triggering restock.

Planning Frequencies

List of Planning Frequency values, each defined for a specific period of time.

Shelf Lives

List of Shelf Life values, each defined for a specific period of time.

Stopship Buffers

Buffers to account for Stopship scenarios, listed for different periods.

Initial Inventories

List of Initial Inventory records, each associated with specific lot and dates.

Firm Orders

List of Firm Orders with their respective quantities and dates.

Demand

Map of demand rows, where each key is a unique ID and value is a DateMap containing demand values for specific dates.

Demand Details

Mapping of demand row IDs to their metadata including labels and ordering.

Other Demand

Map of other types of demand not included in the primary demand values.

Other Demand Annotation

Annotations related to other demand entries, providing additional context.

Actuals

Map of actual quantities, corresponding to real data collected.

Planned Orders

Map of planned order quantities, anticipated ahead of time.

Expiry Adjustments

Adjustments made to account for expired materials, reducing quantities.

Time Aggregate Type

The aggregation level for planning and reporting, e.g., annual, quarterly, or monthly.

Show Quantities As

Defines how quantities are represented, e.g., in units, lots, or monetary value.

Expiry Analysis Type

Determines the type of analysis to be performed on expiry data, focusing on expiration or stopship scenarios.

Time Dependent Planning Parameters

Indicates whether planning parameters are dependent on time, necessitating different values at different periods.

Material Number in the inventory management system

Location in the inventory management system

For pulling inventory from the inventory management system into Initial Inventory and Firm Orders & Releases and filtering it by location

x y ordering abcMaterialName uom materialShape materialColor doExpiryCarryover isCapacityConstraintNode inventoryMethod decimalPrecision currency manufacturingCost standardCost salesPrice lotSize leadTime firmingPeriod targetMFCs minimumInventories planningFrequencies shelfLives stopshipBuffers initialInventories firmOrders demand demandDetails actuals expiryAdjustments otherDemand otherDemandAnnotation plannedOrders timeAggregateType showQuantitiesAs expiryAnalysisType timeDependentPlanningParameters inventorySystemMaterialNumber inventorySystemLocationName

Recipe State

Defines a recipe within the system, including its components and yields.

Recipe ID

Unique identifier of the recipe.

Consumption Allocation

Method for allocating downstream consumption to upstream materials.

Percent Allocations

Percentage allocations of materials to the recipe over different periods.

Priority Allocations

Priority allocations of materials to the recipe over different periods.

Percent Yield

The yield percentage of the recipe, indicating efficiency.

recipe allocationMethod percentAllocations priorityAllocations percentYield

Positive Date Map

Mapping of dates to positive numerical values, typically representing demand or supply quantities.

Positive Date Map Map

Mapping of unique IDs to date maps, supporting multiple demand rows per material.

Negative Date Map

Mapping of dates to negative numerical values, typically representing adjustments or reductions.

Annotation Map

Mapping of dates to annotations or notes about specific entries.

Color

Colors may be specified in any string-based format supported by the Color constructor documented at https://www.npmjs.com/package/color

ABC Demand Details Map

Mapping of demand row IDs to their metadata including label and ordering.

Label

User-visible label for the demand row.

Ordering

Display order of the demand row within a material.

additionalProperties is true because this object acts as a template and is merged with other type definitions to specify valid date ranges for time-dependent values.

Template Time Dependent Value

Base template for defining time-dependent values, specifying the valid date ranges for such values.

Start Date

The start date for the time-dependent value. Must be the first day of a month and within a valid date range.

End Date

The end date for the time-dependent value. Must be the last day of a month and within a valid date range.

additionalProperties is true because it is a template and gets merged with other types

Percent Value Constraints

Constraints for percentage values, defining the valid range as 0% to 100%.

During a particular period of time for this recipe, how much of the downstream consumption is allocated to the upstream material.  Format: 0-1 which correspond to 0%-100%.

Percent Time Dependent Value

Defines a time-specific percentage value within a valid date range, adhering to percentage constraints.

Percent Time Dependent Values

Array of time-dependent percentage values, each specifying the allocation for a given period.

additionalProperties is true because this object acts as a template and is merged with other type definitions to enforce non-negative integer constraints in various scenarios.

Non-Negative Integer Constraints

Defines constraints for integer values to ensure they are non-negative, used in various time-dependent value configurations.

Time Dependent Value

An integer value that cannot be negative, typically representing quantities or counts in a time-dependent context.

Non-Negative Integer Time Dependent Value

Defines a time-specific integer value within a valid date range, ensuring it is non-negative.

Non-Negative Integer Time Dependent Values

Array of time-dependent integer values, ensuring each is non-negative.

additionalProperties is true to allow merging this object with other type definitions to enforce non-negative number constraints in various scenarios.

Non-Negative Number Constraints

Defines constraints for numbers to ensure they are non-negative, used in various contexts.

Non-Negative Number

A non-negative number, used in various contexts to represent quantities or counts.

Non-Negative Number Time Dependent Value

Defines a time-specific number within a valid range, ensuring it is non-negative.

Non-Negative Number Time Dependent Values

Array of time-dependent non-negative numbers.

additionalProperties is set to true because this object acts as a template and is merged with other type definitions to enforce positive integer constraints in various scenarios.

Positive Integer Constraints

Defines constraints for integer values to ensure they are positive, used in various configurations where a strictly positive value is required.

Time Dependent Value

An integer value that must be positive, typically representing quantities or counts in contexts where zero is not a valid value.

Positive Integer Time Dependent Value

Defines a time-specific integer value that must always be positive, ensuring it meets the requirements of scenarios where zero or negative numbers are not permitted.

Positive Integer Time Dependent Values

Array of time-dependent integer values, ensuring each is positive. This setup is intended for scenarios where values must always be greater than zero.

Initial Inventory

Defines the initial inventory of a material, including lot number and associated dates.

Lot Number

The identifier for the lot number of the inventory item. It must be at least 1 character in length.

Initial Inventory Quantity

The quantity of the inventory item when first recorded. This must be a non-negative number.

Manufacture Date

The date the item was manufactured. This date must be the first day of a month and fall within a valid date range.

Expiration Date

The date the item will expire. This date must be the last day of a month and fall within a valid date range.

lotNumber initialInventoryQuantity manufactureDate expirationDate

Firm Order

Defines a firm order within the system, including order details and relevant dates.

Firm Order Name

The name or identifier of the firm order.

Firm Order Quantity

The quantity specified in the firm order. Must be a non-negative value.

Manufacture Date

The date the goods are scheduled to be manufactured. Must be the first day of the month and within valid date range.

Release Date

The date the goods are scheduled to be released. Must be the first day of the month and within valid date range.

Expiration Date

The expiration date of the product. Must be the last day of the month and within valid date range.

firmOrderName firmOrderQuantity manufactureDate releaseDate expirationDate

Provide a JSON object that satisfies the schema "ABCSupplyPlan JSON Schema". Here are the required top‑level fields: $schema, planDate, planNotes, analytics, abcMaterialsMap, recipeMap. Return only the valid JSON object.