POST /x12mapper/workspaces/{workspaceId}/scenario-authoring/validate
Runs strict JSON parsing, JSON Schema validation, cross-file resolution, tenant-authority checks, graph checks, fact typing, and current runtime-capability checks without publishing or applying anything.
Permission: OPERATE. Headers: none. Success: 200 ScenarioValidationResponse.
Stable error codes: invalid_request.
{
"files": [
{
"id": "order-invoice.scenario.json",
"fileType": "SCENARIO_DEFINITION",
"source": "{\n \"$schema\": \"https://www.modernedi.com/docs/scenarios/schemas/scenario-definition-v1.schema.json\",\n \"apiVersion\": \"modernedi.com/scenario/v1\",\n \"kind\": \"ScenarioDefinition\",\n \"metadata\": {\n \"namespace\": \"acme\",\n \"key\": \"retail-order-invoice\",\n \"version\": \"1.0.0\"\n },\n \"spec\": {\n \"actors\": [\n {\n \"id\": \"retailer\"\n },\n {\n \"id\": \"supplier\"\n }\n ],\n \"steps\": [\n {\n \"id\": \"purchaseOrder\",\n \"fromActor\": \"retailer\",\n \"toActor\": \"supplier\",\n \"transaction\": {\n \"standard\": \"X12\",\n \"transactionSet\": \"850\",\n \"businessUsage\": \"purchase_order\"\n },\n \"occurrence\": {\n \"min\": 1,\n \"max\": 1,\n \"closure\": {\n \"kind\": \"fixed\"\n }\n },\n \"assurance\": {\n \"requirements\": [\n {\n \"type\": \"mapping_succeeded\"\n }\n ]\n },\n \"facts\": [\n {\n \"name\": \"purchaseOrderNumber\",\n \"type\": \"string\",\n \"cardinality\": \"one\",\n \"normalization\": [\n \"trim\"\n ],\n \"sensitivity\": \"business\"\n }\n ],\n \"pipeline\": [\n {\n \"id\": \"exchange\",\n \"kind\": \"exchange\"\n },\n {\n \"id\": \"extract\",\n \"kind\": \"extract\",\n \"facts\": [\n \"purchaseOrderNumber\"\n ]\n },\n {\n \"id\": \"assure\",\n \"kind\": \"assure\"\n }\n ]\n },\n {\n \"id\": \"invoice\",\n \"fromActor\": \"supplier\",\n \"toActor\": \"retailer\",\n \"transaction\": {\n \"standard\": \"X12\",\n \"transactionSet\": \"810\",\n \"businessUsage\": \"invoice\"\n },\n \"occurrence\": {\n \"min\": 1,\n \"max\": 1,\n \"closure\": {\n \"kind\": \"fixed\"\n }\n },\n \"assurance\": {\n \"requirements\": [\n {\n \"type\": \"transport_receipt_accepted\",\n \"within\": \"PT4H\"\n },\n {\n \"type\": \"functional_or_implementation_acknowledgment_accepted\"\n }\n ]\n },\n \"facts\": [\n {\n \"name\": \"purchaseOrderNumber\",\n \"type\": \"string\",\n \"cardinality\": \"one\",\n \"normalization\": [\n \"trim\"\n ],\n \"sensitivity\": \"business\"\n },\n {\n \"name\": \"invoiceTotal\",\n \"type\": \"decimal\",\n \"cardinality\": \"optional\",\n \"normalization\": [\n \"decimal_canonical\"\n ],\n \"sensitivity\": \"financial\"\n }\n ],\n \"pipeline\": [\n {\n \"id\": \"exchange\",\n \"kind\": \"exchange\"\n },\n {\n \"id\": \"extract\",\n \"kind\": \"extract\",\n \"facts\": [\n \"purchaseOrderNumber\",\n \"invoiceTotal\"\n ]\n },\n {\n \"id\": \"assure\",\n \"kind\": \"assure\"\n }\n ]\n }\n ],\n \"transitions\": [\n {\n \"id\": \"invoiceSettlesOrder\",\n \"fromStep\": \"purchaseOrder\",\n \"toStep\": \"invoice\",\n \"relationship\": \"follows\",\n \"within\": \"P30D\",\n \"correlations\": [\n {\n \"id\": \"samePurchaseOrder\",\n \"operator\": \"equal\",\n \"left\": {\n \"kind\": \"fact\",\n \"stepId\": \"purchaseOrder\",\n \"fact\": \"purchaseOrderNumber\",\n \"projection\": \"value\"\n },\n \"right\": {\n \"kind\": \"fact\",\n \"stepId\": \"invoice\",\n \"fact\": \"purchaseOrderNumber\",\n \"projection\": \"value\"\n }\n }\n ],\n \"matching\": {\n \"strategy\": \"correlate\",\n \"quantifiers\": [\n {\n \"kind\": \"every\",\n \"scope\": \"from\"\n },\n {\n \"kind\": \"every\",\n \"scope\": \"to\"\n }\n ],\n \"unmatched\": \"fail\"\n }\n }\n ],\n \"assertions\": [\n {\n \"id\": \"invoiceTotalExists\",\n \"operator\": \"exists\",\n \"left\": {\n \"kind\": \"fact\",\n \"stepId\": \"invoice\",\n \"fact\": \"invoiceTotal\",\n \"projection\": \"value\"\n }\n }\n ],\n \"parameters\": [],\n \"checkpoints\": [],\n \"branches\": []\n }\n}\n"
},
{
"id": "order-invoice.binding.json",
"fileType": "SCENARIO_BINDING",
"source": "{\n \"$schema\": \"https://www.modernedi.com/docs/scenarios/schemas/scenario-binding-v1.schema.json\",\n \"apiVersion\": \"modernedi.com/scenario-binding-authoring/v1\",\n \"kind\": \"ScenarioBinding\",\n \"metadata\": {\n \"id\": \"retailOrderInvoice\",\n \"name\": \"Retail order to invoice\"\n },\n \"spec\": {\n \"definition\": {\n \"namespace\": \"acme\",\n \"key\": \"retail-order-invoice\",\n \"version\": \"1.0.0\",\n \"contentSha256\": \"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\"\n },\n \"environment\": \"production\",\n \"actors\": [\n {\n \"actorId\": \"retailer\",\n \"endpoint\": {\n \"kind\": \"partner\",\n \"partnerId\": 42\n }\n },\n {\n \"actorId\": \"supplier\",\n \"endpoint\": {\n \"kind\": \"workspace\"\n }\n }\n ],\n \"steps\": [\n {\n \"stepId\": \"purchaseOrder\",\n \"target\": {\n \"kind\": \"runtime-mapping\",\n \"runtimeMappingId\": 101\n },\n \"factSources\": [\n {\n \"fact\": \"purchaseOrderNumber\",\n \"source\": {\n \"kind\": \"x12-mapper-expression\",\n \"expression\": \"ST->BEG(03)\"\n }\n }\n ]\n },\n {\n \"stepId\": \"invoice\",\n \"syntaxTree\": {\n \"x12Version\": \"004010\",\n \"transactionSet\": \"810\"\n },\n \"target\": {\n \"kind\": \"runtime-mapping\",\n \"runtimeMappingId\": 102\n },\n \"factSources\": [\n {\n \"fact\": \"purchaseOrderNumber\",\n \"source\": {\n \"kind\": \"x12-mapper-expression\",\n \"expression\": \"ST->BIG(04)\"\n }\n },\n {\n \"fact\": \"invoiceTotal\",\n \"source\": {\n \"kind\": \"x12-mapper-expression\",\n \"expression\": \"ST->TDS(01)\"\n }\n }\n ]\n }\n ]\n }\n}\n"
}
]
}