altium-toolkit 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +18 -6
  2. package/docs/api.md +78 -16
  3. package/docs/model-format.md +229 -8
  4. package/docs/schemas/altium_toolkit/ci_artifact_bundle_a1.schema.json +76 -0
  5. package/docs/schemas/altium_toolkit/draftsman_digest_a1.schema.json +35 -0
  6. package/docs/schemas/altium_toolkit/netlist_a1.schema.json +53 -0
  7. package/docs/schemas/altium_toolkit/normalized_model_a1.schema.json +1826 -110
  8. package/docs/schemas/altium_toolkit/parser_compatibility_fuzz_a1.schema.json +25 -0
  9. package/docs/schemas/altium_toolkit/pcb_svg_semantics_a1.schema.json +86 -0
  10. package/docs/schemas/altium_toolkit/project_bundle_a1.schema.json +63 -0
  11. package/docs/schemas/altium_toolkit/project_document_graph_a1.schema.json +33 -0
  12. package/docs/schemas/altium_toolkit/schematic_svg_semantics_a1.schema.json +50 -0
  13. package/docs/schemas/altium_toolkit/svg_model_cross_link_a1.schema.json +39 -0
  14. package/docs/testing.md +9 -3
  15. package/package.json +1 -1
  16. package/spec/library-scope.md +7 -1
  17. package/src/core/altium/AltiumLayoutParser.mjs +104 -8
  18. package/src/core/altium/AltiumParser.mjs +196 -45
  19. package/src/core/altium/CiArtifactBundleBuilder.mjs +202 -0
  20. package/src/core/altium/DraftsmanDigestParser.mjs +689 -0
  21. package/src/core/altium/EmbeddedFileInventoryBuilder.mjs +255 -0
  22. package/src/core/altium/IntLibModelParser.mjs +240 -0
  23. package/src/core/altium/IntLibStreamExtractor.mjs +366 -0
  24. package/src/core/altium/LibraryRenderManifestBuilder.mjs +417 -0
  25. package/src/core/altium/LibrarySearchIndex.mjs +215 -0
  26. package/src/core/altium/NormalizedModelSchema.mjs +36 -0
  27. package/src/core/altium/ParserCompatibilityFuzzer.mjs +192 -0
  28. package/src/core/altium/PcbCustomPadShapeParser.mjs +244 -0
  29. package/src/core/altium/PcbDefaultsParser.mjs +171 -0
  30. package/src/core/altium/PcbDimensionParser.mjs +229 -0
  31. package/src/core/altium/PcbEmbeddedModelExtractor.mjs +232 -6
  32. package/src/core/altium/PcbExtendedPrimitiveInformationParser.mjs +256 -0
  33. package/src/core/altium/PcbLibModelParser.mjs +235 -14
  34. package/src/core/altium/PcbLibStreamExtractor.mjs +62 -4
  35. package/src/core/altium/PcbMaskPasteResolver.mjs +354 -0
  36. package/src/core/altium/PcbMechanicalLayerPairParser.mjs +204 -0
  37. package/src/core/altium/PcbModelParser.mjs +495 -32
  38. package/src/core/altium/PcbOwnershipGraphBuilder.mjs +245 -0
  39. package/src/core/altium/PcbPadPrimitiveParser.mjs +78 -65
  40. package/src/core/altium/PcbPadStackParser.mjs +229 -2
  41. package/src/core/altium/PcbPickPlacePositionResolver.mjs +224 -0
  42. package/src/core/altium/PcbPrimitiveParameterParser.mjs +3 -2
  43. package/src/core/altium/PcbRawRecordRegistry.mjs +121 -130
  44. package/src/core/altium/PcbRegionPrimitiveParser.mjs +76 -3
  45. package/src/core/altium/PcbRouteAnalysisBuilder.mjs +730 -0
  46. package/src/core/altium/PcbRuleParser.mjs +354 -33
  47. package/src/core/altium/PcbSidecarRecordParser.mjs +177 -0
  48. package/src/core/altium/PcbSpecialStringResolver.mjs +220 -0
  49. package/src/core/altium/PcbStatisticsBuilder.mjs +541 -0
  50. package/src/core/altium/PcbStreamExtractor.mjs +111 -4
  51. package/src/core/altium/PcbTextPrimitiveParser.mjs +60 -0
  52. package/src/core/altium/PcbUnionParser.mjs +307 -0
  53. package/src/core/altium/PcbViaStackParser.mjs +98 -10
  54. package/src/core/altium/PcbViaStructureParser.mjs +335 -0
  55. package/src/core/altium/PrintableTextDecoder.mjs +53 -3
  56. package/src/core/altium/PrjPcbModelParser.mjs +281 -7
  57. package/src/core/altium/ProjectAnnotationParser.mjs +205 -0
  58. package/src/core/altium/ProjectDesignBundleBuilder.mjs +492 -0
  59. package/src/core/altium/ProjectDocumentGraphBuilder.mjs +280 -0
  60. package/src/core/altium/ProjectNetlistExporter.mjs +503 -0
  61. package/src/core/altium/ProjectOutJobDigestBuilder.mjs +109 -0
  62. package/src/core/altium/ProjectVariantViewBuilder.mjs +334 -0
  63. package/src/core/altium/SchematicBindingProvenanceParser.mjs +223 -0
  64. package/src/core/altium/SchematicComponentOwnerTextResolver.mjs +312 -0
  65. package/src/core/altium/SchematicComponentTextResolver.mjs +72 -19
  66. package/src/core/altium/SchematicConnectivityQaBuilder.mjs +271 -0
  67. package/src/core/altium/SchematicCrossSheetConnectorParser.mjs +140 -0
  68. package/src/core/altium/SchematicDirectiveParser.mjs +312 -0
  69. package/src/core/altium/SchematicDisplayModeCatalogParser.mjs +231 -0
  70. package/src/core/altium/SchematicHarnessParser.mjs +302 -0
  71. package/src/core/altium/SchematicImageParser.mjs +474 -3
  72. package/src/core/altium/SchematicImplementationParser.mjs +518 -0
  73. package/src/core/altium/SchematicNetlistBuilder.mjs +15 -2
  74. package/src/core/altium/SchematicOwnershipGraphParser.mjs +195 -0
  75. package/src/core/altium/SchematicPinParser.mjs +84 -1
  76. package/src/core/altium/SchematicPrimitiveParser.mjs +301 -0
  77. package/src/core/altium/SchematicProjectParameterResolver.mjs +361 -0
  78. package/src/core/altium/SchematicQaReportBuilder.mjs +284 -0
  79. package/src/core/altium/SchematicRecordTypeRegistry.mjs +137 -0
  80. package/src/core/altium/SchematicRepeatedChannelParser.mjs +229 -0
  81. package/src/core/altium/SchematicStreamExtractor.mjs +10 -1
  82. package/src/core/altium/SchematicTemplateParser.mjs +256 -0
  83. package/src/core/altium/SchematicTextParser.mjs +123 -0
  84. package/src/core/altium/SvgModelCrossLinkValidator.mjs +402 -0
  85. package/src/core/circuit-json/CircuitJsonModelAdapter.mjs +136 -96
  86. package/src/core/circuit-json/CircuitJsonModelAdapterPcbElements.mjs +244 -0
  87. package/src/core/circuit-json/CircuitJsonModelSchema.mjs +1 -1
  88. package/src/core/ole/OleCompoundDocument.mjs +20 -0
  89. package/src/parser.mjs +35 -0
  90. package/src/styles/altium-renderers.css +19 -0
  91. package/src/ui/PcbBarcodeTextRenderer.mjs +436 -0
  92. package/src/ui/PcbInteractionIndex.mjs +9 -4
  93. package/src/ui/PcbScene3dBuilder.mjs +137 -3
  94. package/src/ui/PcbScene3dModelRegistry.mjs +74 -0
  95. package/src/ui/PcbSvgRenderer.mjs +1252 -34
  96. package/src/ui/PcbTextPrimitiveRenderer.mjs +193 -7
  97. package/src/ui/SchematicNoteRenderer.mjs +9 -2
  98. package/src/ui/SchematicOwnerPinLabelLayout.mjs +206 -0
  99. package/src/ui/SchematicShapeRenderer.mjs +362 -0
  100. package/src/ui/SchematicSvgRenderer.mjs +1442 -92
  101. package/src/ui/SchematicTypography.mjs +48 -5
  102. package/src/ui/TextGeometrySidecarBuilder.mjs +147 -0
@@ -19,10 +19,28 @@
19
19
  "const": "urn:altium-toolkit:normalized-model:a1"
20
20
  },
21
21
  "kind": {
22
- "enum": ["schematic", "pcb", "pcb-library", "project"]
22
+ "enum": [
23
+ "schematic",
24
+ "pcb",
25
+ "pcb-library",
26
+ "project",
27
+ "project-annotation",
28
+ "integrated-library",
29
+ "draftsman",
30
+ "design-bundle"
31
+ ]
23
32
  },
24
33
  "fileType": {
25
- "enum": ["SchDoc", "PcbDoc", "PcbLib", "PrjPcb"]
34
+ "enum": [
35
+ "SchDoc",
36
+ "PcbDoc",
37
+ "PcbLib",
38
+ "PrjPcb",
39
+ "Annotation",
40
+ "IntLib",
41
+ "PCBDwf",
42
+ "ProjectDesignBundle"
43
+ ]
26
44
  },
27
45
  "fileName": {
28
46
  "type": "string"
@@ -39,6 +57,9 @@
39
57
  "type": "object",
40
58
  "required": ["severity", "message"],
41
59
  "properties": {
60
+ "code": {
61
+ "type": "string"
62
+ },
42
63
  "severity": {
43
64
  "enum": ["info", "warning"]
44
65
  },
@@ -50,17 +71,127 @@
50
71
  }
51
72
  },
52
73
  "schematic": {
53
- "type": "object"
74
+ "type": "object",
75
+ "properties": {
76
+ "recordTypes": {
77
+ "type": "array",
78
+ "items": {
79
+ "$ref": "#/$defs/schematicRecordType"
80
+ }
81
+ },
82
+ "images": {
83
+ "type": "array",
84
+ "items": {
85
+ "$ref": "#/$defs/schematicImage"
86
+ }
87
+ },
88
+ "roundedRectangles": {
89
+ "type": "array",
90
+ "items": {
91
+ "type": "object",
92
+ "additionalProperties": true
93
+ }
94
+ },
95
+ "ieeeSymbols": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "additionalProperties": true
100
+ }
101
+ },
102
+ "renderDiagnostics": {
103
+ "$ref": "#/$defs/schematicRenderDiagnostics"
104
+ },
105
+ "directiveSemantics": {
106
+ "type": "object",
107
+ "properties": {
108
+ "noErc": {
109
+ "type": "array"
110
+ },
111
+ "parameterSets": {
112
+ "type": "array"
113
+ },
114
+ "differentialPairs": {
115
+ "type": "array"
116
+ },
117
+ "compileMasks": {
118
+ "type": "array"
119
+ },
120
+ "blankets": {
121
+ "type": "array"
122
+ }
123
+ },
124
+ "additionalProperties": true
125
+ },
126
+ "ownership": {
127
+ "$ref": "#/$defs/ownershipSidecar"
128
+ }
129
+ },
130
+ "additionalProperties": true
54
131
  },
55
132
  "pcb": {
56
133
  "type": "object",
57
134
  "properties": {
135
+ "vias": {
136
+ "type": "array",
137
+ "items": {
138
+ "$ref": "#/$defs/pcbVia"
139
+ }
140
+ },
141
+ "pads": {
142
+ "type": "array",
143
+ "items": {
144
+ "$ref": "#/$defs/pcbPad"
145
+ }
146
+ },
147
+ "viaStructures": {
148
+ "$ref": "#/$defs/pcbViaStructures"
149
+ },
150
+ "extendedPrimitiveInformation": {
151
+ "$ref": "#/$defs/pcbExtendedPrimitiveInformation"
152
+ },
153
+ "customPadShapes": {
154
+ "$ref": "#/$defs/pcbCustomPadShapes"
155
+ },
156
+ "unions": {
157
+ "$ref": "#/$defs/pcbUnions"
158
+ },
58
159
  "components": {
59
160
  "type": "array",
60
161
  "items": {
61
162
  "$ref": "#/$defs/pcbComponent"
62
163
  }
63
164
  },
165
+ "rules": {
166
+ "type": "array",
167
+ "items": {
168
+ "$ref": "#/$defs/pcbRule"
169
+ }
170
+ },
171
+ "dimensions": {
172
+ "type": "array",
173
+ "items": {
174
+ "$ref": "#/$defs/pcbDimension"
175
+ }
176
+ },
177
+ "differentialPairs": {
178
+ "type": "array",
179
+ "items": {
180
+ "$ref": "#/$defs/pcbDifferentialPair"
181
+ }
182
+ },
183
+ "differentialPairClasses": {
184
+ "type": "array",
185
+ "items": {
186
+ "$ref": "#/$defs/pcbDifferentialPairClass"
187
+ }
188
+ },
189
+ "pickPlace": {
190
+ "$ref": "#/$defs/pickPlaceModel"
191
+ },
192
+ "routeAnalysis": {
193
+ "$ref": "#/$defs/pcbRouteAnalysis"
194
+ },
64
195
  "embeddedFonts": {
65
196
  "$ref": "#/$defs/embeddedFonts"
66
197
  },
@@ -73,6 +204,17 @@
73
204
  "boardRegionContexts": {
74
205
  "$ref": "#/$defs/boardRegionContexts"
75
206
  },
207
+ "mechanicalLayerPairs": {
208
+ "type": "array",
209
+ "items": {
210
+ "type": "object",
211
+ "additionalProperties": true
212
+ }
213
+ },
214
+ "layerFlipMetadata": {
215
+ "type": "object",
216
+ "additionalProperties": true
217
+ },
76
218
  "componentPrimitives": {
77
219
  "type": "array",
78
220
  "items": {
@@ -92,6 +234,12 @@
92
234
  "$ref": "#/$defs/componentPrimitiveGroup"
93
235
  }
94
236
  },
237
+ "ownership": {
238
+ "$ref": "#/$defs/ownershipSidecar"
239
+ },
240
+ "statistics": {
241
+ "$ref": "#/$defs/pcbStatistics"
242
+ },
95
243
  "texts": {
96
244
  "type": "array",
97
245
  "items": {
@@ -107,6 +255,20 @@
107
255
  "embeddedFonts": {
108
256
  "$ref": "#/$defs/embeddedFonts"
109
257
  },
258
+ "embeddedModels": {
259
+ "type": "array",
260
+ "items": {
261
+ "type": "object",
262
+ "additionalProperties": true
263
+ }
264
+ },
265
+ "componentBodies": {
266
+ "type": "array",
267
+ "items": {
268
+ "type": "object",
269
+ "additionalProperties": true
270
+ }
271
+ },
110
272
  "footprints": {
111
273
  "type": "array",
112
274
  "items": {
@@ -118,18 +280,80 @@
118
280
  },
119
281
  "additionalProperties": true
120
282
  }
283
+ },
284
+ "indexes": {
285
+ "$ref": "#/$defs/libraryIndexes"
286
+ },
287
+ "renderManifest": {
288
+ "$ref": "#/$defs/libraryRenderManifest"
121
289
  }
122
290
  },
123
291
  "additionalProperties": true
124
292
  },
125
293
  "project": {
126
- "type": "object"
294
+ "type": "object",
295
+ "properties": {
296
+ "documentGraph": {
297
+ "$ref": "#/$defs/projectDocumentGraph"
298
+ }
299
+ },
300
+ "additionalProperties": true
301
+ },
302
+ "units": {
303
+ "$ref": "#/$defs/units"
304
+ },
305
+ "variants": {
306
+ "type": "array",
307
+ "items": {
308
+ "type": "object",
309
+ "additionalProperties": true
310
+ }
311
+ },
312
+ "sheets": {
313
+ "type": "array",
314
+ "items": {
315
+ "$ref": "#/$defs/designBundleSheet"
316
+ }
317
+ },
318
+ "components": {
319
+ "type": "array",
320
+ "items": {
321
+ "$ref": "#/$defs/designBundleComponent"
322
+ }
323
+ },
324
+ "schematic_hierarchy": {
325
+ "$ref": "#/$defs/schematicHierarchy"
326
+ },
327
+ "nets": {
328
+ "type": "array",
329
+ "items": {
330
+ "$ref": "#/$defs/designBundleNet"
331
+ }
332
+ },
333
+ "indexes": {
334
+ "$ref": "#/$defs/designBundleIndexes"
335
+ },
336
+ "effectiveVariant": {
337
+ "$ref": "#/$defs/effectiveVariantView"
338
+ },
339
+ "annotations": {
340
+ "type": "object",
341
+ "additionalProperties": true
342
+ },
343
+ "integratedLibrary": {
344
+ "$ref": "#/$defs/integratedLibrary"
345
+ },
346
+ "draftsman": {
347
+ "$ref": "#/$defs/draftsmanDigest"
127
348
  },
128
349
  "bom": {
129
350
  "type": "array",
130
351
  "items": {
131
352
  "type": "object"
132
353
  }
354
+ },
355
+ "pnp": {
356
+ "$ref": "#/$defs/pickPlaceModel"
133
357
  }
134
358
  },
135
359
  "oneOf": [
@@ -176,115 +400,874 @@
176
400
  "const": "PrjPcb"
177
401
  }
178
402
  }
179
- }
180
- ],
181
- "$defs": {
182
- "rawRecords": {
183
- "type": "array",
184
- "items": {
185
- "type": "object",
186
- "required": [
187
- "registryId",
188
- "source",
189
- "sourceStream",
190
- "family",
191
- "type",
192
- "recordIndex",
193
- "offset",
194
- "byteLength",
195
- "encoding",
196
- "supported",
197
- "parsed",
198
- "rawBase64"
199
- ],
200
- "properties": {
201
- "registryId": {
202
- "type": "string"
203
- },
204
- "source": {
205
- "enum": ["pcbdoc", "pcblib"]
206
- },
207
- "sourceStorage": {
208
- "type": "string"
209
- },
210
- "sourceStream": {
211
- "type": "string"
212
- },
213
- "headerStream": {
214
- "type": "string"
215
- },
216
- "family": {
217
- "type": "string"
218
- },
219
- "type": {
220
- "type": "string"
221
- },
222
- "typeId": {
223
- "type": ["number", "null"]
224
- },
225
- "recordIndex": {
226
- "type": "number"
227
- },
228
- "offset": {
229
- "type": "number"
230
- },
231
- "byteLength": {
232
- "type": "number"
233
- },
234
- "payloadByteLength": {
235
- "type": ["number", "null"]
236
- },
237
- "encoding": {
238
- "type": "string"
239
- },
240
- "supported": {
241
- "type": "boolean"
242
- },
243
- "parsed": {
244
- "type": "boolean"
245
- },
246
- "rawBase64": {
247
- "type": "string"
248
- }
403
+ },
404
+ {
405
+ "required": ["annotations"],
406
+ "properties": {
407
+ "kind": {
408
+ "const": "project-annotation"
249
409
  },
250
- "additionalProperties": true
410
+ "fileType": {
411
+ "const": "Annotation"
412
+ }
251
413
  }
252
414
  },
253
- "pcbComponent": {
415
+ {
416
+ "required": ["integratedLibrary"],
417
+ "properties": {
418
+ "kind": {
419
+ "const": "integrated-library"
420
+ },
421
+ "fileType": {
422
+ "const": "IntLib"
423
+ }
424
+ }
425
+ },
426
+ {
427
+ "required": ["draftsman"],
428
+ "properties": {
429
+ "kind": {
430
+ "const": "draftsman"
431
+ },
432
+ "fileType": {
433
+ "const": "PCBDwf"
434
+ }
435
+ }
436
+ },
437
+ {
438
+ "required": ["project", "sheets", "schematic_hierarchy", "indexes"],
439
+ "properties": {
440
+ "kind": {
441
+ "const": "design-bundle"
442
+ },
443
+ "fileType": {
444
+ "const": "ProjectDesignBundle"
445
+ }
446
+ }
447
+ }
448
+ ],
449
+ "$defs": {
450
+ "schematicRecordType": {
254
451
  "type": "object",
255
- "required": [
256
- "componentIndex",
257
- "designator",
258
- "x",
259
- "y",
260
- "layer",
261
- "pattern",
262
- "rotation",
263
- "source",
264
- "description",
265
- "height"
266
- ],
452
+ "required": ["recordType", "name", "family", "supported", "count"],
267
453
  "properties": {
268
- "componentIndex": {
454
+ "recordType": {
269
455
  "type": "number"
270
456
  },
271
- "designator": {
272
- "type": "string"
273
- },
274
- "baseDesignator": {
457
+ "name": {
275
458
  "type": "string"
276
459
  },
277
- "displayDesignator": {
460
+ "family": {
278
461
  "type": "string"
279
462
  },
280
- "designatorSource": {
281
- "const": "Texts6/Data"
282
- },
283
- "uniqueId": {
284
- "type": "string"
463
+ "supported": {
464
+ "type": "boolean"
285
465
  },
286
- "parameters": {
287
- "type": "object",
466
+ "count": {
467
+ "type": "number"
468
+ }
469
+ },
470
+ "additionalProperties": true
471
+ },
472
+ "ownershipSidecar": {
473
+ "type": "object",
474
+ "required": ["schema"],
475
+ "properties": {
476
+ "schema": {
477
+ "type": "string"
478
+ }
479
+ },
480
+ "additionalProperties": true
481
+ },
482
+ "projectDocumentGraph": {
483
+ "type": "object",
484
+ "required": ["schema", "summary", "documents", "groups", "indexes"],
485
+ "properties": {
486
+ "schema": {
487
+ "const": "altium-toolkit.project.document-graph.a1"
488
+ },
489
+ "summary": {
490
+ "type": "object",
491
+ "additionalProperties": true
492
+ },
493
+ "documents": {
494
+ "type": "array",
495
+ "items": {
496
+ "type": "object",
497
+ "additionalProperties": true
498
+ }
499
+ },
500
+ "groups": {
501
+ "type": "object",
502
+ "additionalProperties": true
503
+ },
504
+ "indexes": {
505
+ "type": "object",
506
+ "additionalProperties": true
507
+ }
508
+ },
509
+ "additionalProperties": true
510
+ },
511
+ "draftsmanDigest": {
512
+ "type": "object",
513
+ "required": ["schema", "pages"],
514
+ "properties": {
515
+ "schema": {
516
+ "const": "altium-toolkit.draftsman.digest.a1"
517
+ },
518
+ "sourceDocumentName": {
519
+ "type": "string"
520
+ },
521
+ "pages": {
522
+ "type": "array",
523
+ "items": {
524
+ "type": "object",
525
+ "additionalProperties": true
526
+ }
527
+ },
528
+ "indexes": {
529
+ "type": "object",
530
+ "additionalProperties": true
531
+ }
532
+ },
533
+ "additionalProperties": true
534
+ },
535
+ "schematicRenderDiagnostics": {
536
+ "type": "object",
537
+ "required": ["schema", "fontFallbacks"],
538
+ "properties": {
539
+ "schema": {
540
+ "const": "altium-toolkit.schematic.render-diagnostics.a1"
541
+ },
542
+ "fontFallbacks": {
543
+ "type": "array",
544
+ "items": {
545
+ "type": "object",
546
+ "required": [
547
+ "code",
548
+ "severity",
549
+ "fontId",
550
+ "sourceFamily",
551
+ "resolvedFamily",
552
+ "message"
553
+ ],
554
+ "properties": {
555
+ "code": {
556
+ "const": "schematic.font.family-fallback"
557
+ },
558
+ "severity": {
559
+ "enum": ["warning"]
560
+ },
561
+ "fontId": {
562
+ "type": "string"
563
+ },
564
+ "sourceFamily": {
565
+ "type": "string"
566
+ },
567
+ "resolvedFamily": {
568
+ "type": "string"
569
+ },
570
+ "message": {
571
+ "type": "string"
572
+ }
573
+ },
574
+ "additionalProperties": true
575
+ }
576
+ }
577
+ },
578
+ "additionalProperties": true
579
+ },
580
+ "schematicImage": {
581
+ "type": "object",
582
+ "required": [
583
+ "x",
584
+ "y",
585
+ "cornerX",
586
+ "cornerY",
587
+ "fileName",
588
+ "embedded",
589
+ "keepAspect",
590
+ "mimeType",
591
+ "dataBase64",
592
+ "renderOrder",
593
+ "diagnosticState"
594
+ ],
595
+ "properties": {
596
+ "x": {
597
+ "type": "number"
598
+ },
599
+ "y": {
600
+ "type": "number"
601
+ },
602
+ "cornerX": {
603
+ "type": "number"
604
+ },
605
+ "cornerY": {
606
+ "type": "number"
607
+ },
608
+ "fileName": {
609
+ "type": "string"
610
+ },
611
+ "embedded": {
612
+ "type": "boolean"
613
+ },
614
+ "keepAspect": {
615
+ "type": "boolean"
616
+ },
617
+ "mimeType": {
618
+ "type": "string"
619
+ },
620
+ "sourceMimeType": {
621
+ "type": "string"
622
+ },
623
+ "nativeClass": {
624
+ "type": "string"
625
+ },
626
+ "hasAlpha": {
627
+ "type": "boolean"
628
+ },
629
+ "dataBase64": {
630
+ "type": "string"
631
+ },
632
+ "renderOrder": {
633
+ "type": "number"
634
+ },
635
+ "diagnosticState": {
636
+ "type": "string"
637
+ }
638
+ },
639
+ "additionalProperties": true
640
+ },
641
+ "holeTolerance": {
642
+ "type": "object",
643
+ "properties": {
644
+ "positive": {
645
+ "type": "number"
646
+ },
647
+ "negative": {
648
+ "type": "number"
649
+ }
650
+ },
651
+ "additionalProperties": false
652
+ },
653
+ "pcbVia": {
654
+ "type": "object",
655
+ "properties": {
656
+ "positiveTolerance": {
657
+ "type": "number"
658
+ },
659
+ "negativeTolerance": {
660
+ "type": "number"
661
+ },
662
+ "holeTolerance": {
663
+ "$ref": "#/$defs/holeTolerance"
664
+ },
665
+ "propagationDelayPs": {
666
+ "type": "number"
667
+ },
668
+ "viaStructureIndex": {
669
+ "type": "number"
670
+ },
671
+ "ipc4761Type": {
672
+ "type": ["number", "string"]
673
+ },
674
+ "viaProtection": {
675
+ "$ref": "#/$defs/pcbViaProtection"
676
+ },
677
+ "drill": {
678
+ "$ref": "#/$defs/drillMetadata"
679
+ }
680
+ },
681
+ "additionalProperties": true
682
+ },
683
+ "pcbPad": {
684
+ "type": "object",
685
+ "properties": {
686
+ "positiveTolerance": {
687
+ "type": "number"
688
+ },
689
+ "negativeTolerance": {
690
+ "type": "number"
691
+ },
692
+ "holeTolerance": {
693
+ "$ref": "#/$defs/holeTolerance"
694
+ },
695
+ "customShape": {
696
+ "type": "object",
697
+ "additionalProperties": true
698
+ },
699
+ "extendedPrimitiveInformation": {
700
+ "$ref": "#/$defs/pcbExtendedPrimitiveInformationEntry"
701
+ },
702
+ "localStack": {
703
+ "$ref": "#/$defs/pcbPadLocalStack"
704
+ }
705
+ },
706
+ "additionalProperties": true
707
+ },
708
+ "pcbPadLocalStack": {
709
+ "type": "object",
710
+ "required": ["schema", "mode", "modeName", "source", "layers"],
711
+ "properties": {
712
+ "schema": {
713
+ "const": "altium-toolkit.pcb.pad-local-stack.a1"
714
+ },
715
+ "mode": {
716
+ "type": "number"
717
+ },
718
+ "modeName": {
719
+ "type": "string"
720
+ },
721
+ "source": {
722
+ "type": "string"
723
+ },
724
+ "layers": {
725
+ "type": "array",
726
+ "items": {
727
+ "type": "object",
728
+ "additionalProperties": true
729
+ }
730
+ },
731
+ "hole": {
732
+ "type": "object",
733
+ "additionalProperties": true
734
+ }
735
+ },
736
+ "additionalProperties": true
737
+ },
738
+ "drillMetadata": {
739
+ "type": "object",
740
+ "properties": {
741
+ "holeKind": {
742
+ "enum": ["pad", "via"]
743
+ },
744
+ "plating": {
745
+ "enum": ["plated", "non-plated"]
746
+ },
747
+ "renderState": {
748
+ "enum": ["open", "covered", "filled", "capped"]
749
+ },
750
+ "ipc4761Type": {
751
+ "type": ["number", "string"]
752
+ }
753
+ },
754
+ "additionalProperties": true
755
+ },
756
+ "pcbDimension": {
757
+ "type": "object",
758
+ "required": [
759
+ "dimensionIndex",
760
+ "kind",
761
+ "kindCode",
762
+ "references",
763
+ "raw"
764
+ ],
765
+ "properties": {
766
+ "dimensionIndex": {
767
+ "type": "number"
768
+ },
769
+ "kind": {
770
+ "enum": [
771
+ "linear",
772
+ "angular",
773
+ "radial",
774
+ "datum",
775
+ "baseline",
776
+ "ordinate"
777
+ ]
778
+ },
779
+ "kindCode": {
780
+ "type": "string"
781
+ },
782
+ "name": {
783
+ "type": "string"
784
+ },
785
+ "layer": {
786
+ "type": "string"
787
+ },
788
+ "text": {
789
+ "type": "string"
790
+ },
791
+ "prefix": {
792
+ "type": "string"
793
+ },
794
+ "suffix": {
795
+ "type": "string"
796
+ },
797
+ "precision": {
798
+ "type": ["number", "null"]
799
+ },
800
+ "measuredValue": {
801
+ "type": ["number", "null"]
802
+ },
803
+ "angleValue": {
804
+ "type": ["number", "null"]
805
+ },
806
+ "unit": {
807
+ "type": "string"
808
+ },
809
+ "references": {
810
+ "type": "array",
811
+ "items": {
812
+ "$ref": "#/$defs/indexedPoint"
813
+ }
814
+ },
815
+ "textLocation": {
816
+ "anyOf": [
817
+ {
818
+ "$ref": "#/$defs/point"
819
+ },
820
+ {
821
+ "type": "null"
822
+ }
823
+ ]
824
+ },
825
+ "raw": {
826
+ "type": "object",
827
+ "additionalProperties": true
828
+ }
829
+ },
830
+ "additionalProperties": true
831
+ },
832
+ "point": {
833
+ "type": "object",
834
+ "required": ["x", "y"],
835
+ "properties": {
836
+ "x": {
837
+ "type": "number"
838
+ },
839
+ "y": {
840
+ "type": "number"
841
+ }
842
+ },
843
+ "additionalProperties": true
844
+ },
845
+ "indexedPoint": {
846
+ "allOf": [
847
+ {
848
+ "$ref": "#/$defs/point"
849
+ },
850
+ {
851
+ "type": "object",
852
+ "required": ["index"],
853
+ "properties": {
854
+ "index": {
855
+ "type": "number"
856
+ }
857
+ },
858
+ "additionalProperties": true
859
+ }
860
+ ]
861
+ },
862
+ "pcbExtendedPrimitiveInformation": {
863
+ "type": "object",
864
+ "required": ["entries", "byPrimitiveIndex", "byPrimitiveKey"],
865
+ "properties": {
866
+ "entries": {
867
+ "type": "array",
868
+ "items": {
869
+ "$ref": "#/$defs/pcbExtendedPrimitiveInformationEntry"
870
+ }
871
+ },
872
+ "byPrimitiveIndex": {
873
+ "type": "object",
874
+ "additionalProperties": {
875
+ "$ref": "#/$defs/pcbExtendedPrimitiveInformationEntry"
876
+ }
877
+ },
878
+ "byPrimitiveKey": {
879
+ "type": "object",
880
+ "additionalProperties": {
881
+ "$ref": "#/$defs/pcbExtendedPrimitiveInformationEntry"
882
+ }
883
+ }
884
+ },
885
+ "additionalProperties": true
886
+ },
887
+ "pcbExtendedPrimitiveInformationEntry": {
888
+ "type": "object",
889
+ "required": [
890
+ "primitiveIndex",
891
+ "primitiveObjectId",
892
+ "sourceStream",
893
+ "maskExpansion"
894
+ ],
895
+ "properties": {
896
+ "primitiveIndex": {
897
+ "type": "number"
898
+ },
899
+ "primitiveObjectId": {
900
+ "type": ["number", "null"]
901
+ },
902
+ "primitiveType": {
903
+ "type": "string"
904
+ },
905
+ "type": {
906
+ "type": "string"
907
+ },
908
+ "sourceStream": {
909
+ "const": "ExtendedPrimitiveInformation/Data"
910
+ },
911
+ "maskExpansion": {
912
+ "type": "object",
913
+ "properties": {
914
+ "paste": {
915
+ "$ref": "#/$defs/pcbMaskExpansionSidecar"
916
+ },
917
+ "solder": {
918
+ "$ref": "#/$defs/pcbMaskExpansionSidecar"
919
+ }
920
+ },
921
+ "additionalProperties": true
922
+ }
923
+ },
924
+ "additionalProperties": true
925
+ },
926
+ "pcbMaskExpansionSidecar": {
927
+ "type": "object",
928
+ "properties": {
929
+ "mode": {
930
+ "type": ["number", "null"]
931
+ },
932
+ "source": {
933
+ "type": "string"
934
+ },
935
+ "manualExpansion": {
936
+ "type": ["number", "null"]
937
+ }
938
+ },
939
+ "additionalProperties": true
940
+ },
941
+ "pcbCustomPadShapes": {
942
+ "type": "object",
943
+ "required": ["entries", "byPrimitiveIndex"],
944
+ "properties": {
945
+ "entries": {
946
+ "type": "array",
947
+ "items": {
948
+ "type": "object",
949
+ "additionalProperties": true
950
+ }
951
+ },
952
+ "byPrimitiveIndex": {
953
+ "type": "object",
954
+ "additionalProperties": {
955
+ "type": "array"
956
+ }
957
+ }
958
+ },
959
+ "additionalProperties": true
960
+ },
961
+ "pcbUnions": {
962
+ "type": "object",
963
+ "required": [
964
+ "userUnions",
965
+ "smartUnions",
966
+ "byIndex",
967
+ "smartByIndex",
968
+ "membersByPrimitiveKey"
969
+ ],
970
+ "properties": {
971
+ "userUnions": {
972
+ "type": "array",
973
+ "items": {
974
+ "$ref": "#/$defs/pcbUserUnion"
975
+ }
976
+ },
977
+ "smartUnions": {
978
+ "type": "array",
979
+ "items": {
980
+ "$ref": "#/$defs/pcbSmartUnion"
981
+ }
982
+ },
983
+ "byIndex": {
984
+ "type": "object"
985
+ },
986
+ "smartByIndex": {
987
+ "type": "object"
988
+ },
989
+ "membersByPrimitiveKey": {
990
+ "type": "object"
991
+ }
992
+ },
993
+ "additionalProperties": true
994
+ },
995
+ "pcbUserUnion": {
996
+ "type": "object",
997
+ "required": ["index", "name", "sourceStream"],
998
+ "properties": {
999
+ "index": {
1000
+ "type": "number"
1001
+ },
1002
+ "name": {
1003
+ "type": "string"
1004
+ },
1005
+ "sourceStream": {
1006
+ "const": "UnionNames/Data"
1007
+ }
1008
+ },
1009
+ "additionalProperties": true
1010
+ },
1011
+ "pcbSmartUnion": {
1012
+ "type": "object",
1013
+ "required": [
1014
+ "index",
1015
+ "name",
1016
+ "type",
1017
+ "typeName",
1018
+ "sourceStream",
1019
+ "members"
1020
+ ],
1021
+ "properties": {
1022
+ "index": {
1023
+ "type": "number"
1024
+ },
1025
+ "name": {
1026
+ "type": "string"
1027
+ },
1028
+ "type": {
1029
+ "type": ["number", "string"]
1030
+ },
1031
+ "typeName": {
1032
+ "type": "string"
1033
+ },
1034
+ "sourceStream": {
1035
+ "const": "SmartUnions/Data"
1036
+ },
1037
+ "members": {
1038
+ "type": "array",
1039
+ "items": {
1040
+ "$ref": "#/$defs/pcbSmartUnionMember"
1041
+ }
1042
+ }
1043
+ },
1044
+ "additionalProperties": true
1045
+ },
1046
+ "pcbSmartUnionMember": {
1047
+ "type": "object",
1048
+ "required": ["primitiveObjectId", "primitiveIndex"],
1049
+ "properties": {
1050
+ "primitiveObjectId": {
1051
+ "type": "number"
1052
+ },
1053
+ "primitiveIndex": {
1054
+ "type": "number"
1055
+ }
1056
+ },
1057
+ "additionalProperties": true
1058
+ },
1059
+ "pcbViaStructures": {
1060
+ "type": "object",
1061
+ "required": ["structures", "links", "byPrimitiveIndex"],
1062
+ "properties": {
1063
+ "structures": {
1064
+ "type": "array",
1065
+ "items": {
1066
+ "$ref": "#/$defs/pcbViaStructure"
1067
+ }
1068
+ },
1069
+ "links": {
1070
+ "type": "array",
1071
+ "items": {
1072
+ "$ref": "#/$defs/pcbViaStructureLink"
1073
+ }
1074
+ },
1075
+ "byPrimitiveIndex": {
1076
+ "type": "object",
1077
+ "additionalProperties": {
1078
+ "$ref": "#/$defs/pcbViaProtection"
1079
+ }
1080
+ }
1081
+ },
1082
+ "additionalProperties": true
1083
+ },
1084
+ "pcbViaStructure": {
1085
+ "type": "object",
1086
+ "required": ["index", "sourceStream", "features"],
1087
+ "properties": {
1088
+ "index": {
1089
+ "type": "number"
1090
+ },
1091
+ "ipc4761Type": {
1092
+ "type": ["number", "string"]
1093
+ },
1094
+ "structureType": {
1095
+ "type": ["number", "string"]
1096
+ },
1097
+ "sourceStream": {
1098
+ "type": "string"
1099
+ },
1100
+ "features": {
1101
+ "type": "array",
1102
+ "items": {
1103
+ "$ref": "#/$defs/pcbViaProtectionFeature"
1104
+ }
1105
+ }
1106
+ },
1107
+ "additionalProperties": true
1108
+ },
1109
+ "pcbViaStructureLink": {
1110
+ "type": "object",
1111
+ "required": ["primitiveIndex", "viaStructureIndex", "sourceStream"],
1112
+ "properties": {
1113
+ "primitiveIndex": {
1114
+ "type": "number"
1115
+ },
1116
+ "viaStructureIndex": {
1117
+ "type": "number"
1118
+ },
1119
+ "sourceStream": {
1120
+ "type": "string"
1121
+ }
1122
+ },
1123
+ "additionalProperties": true
1124
+ },
1125
+ "pcbViaProtection": {
1126
+ "type": "object",
1127
+ "properties": {
1128
+ "viaStructureIndex": {
1129
+ "type": "number"
1130
+ },
1131
+ "ipc4761Type": {
1132
+ "type": ["number", "string"]
1133
+ },
1134
+ "structureType": {
1135
+ "type": ["number", "string"]
1136
+ },
1137
+ "features": {
1138
+ "type": "array",
1139
+ "items": {
1140
+ "$ref": "#/$defs/pcbViaProtectionFeature"
1141
+ }
1142
+ }
1143
+ },
1144
+ "additionalProperties": true
1145
+ },
1146
+ "pcbViaProtectionFeature": {
1147
+ "type": "object",
1148
+ "required": ["index", "type", "side", "material"],
1149
+ "properties": {
1150
+ "index": {
1151
+ "type": "number"
1152
+ },
1153
+ "type": {
1154
+ "type": "string"
1155
+ },
1156
+ "side": {
1157
+ "type": "string"
1158
+ },
1159
+ "material": {
1160
+ "type": "string"
1161
+ }
1162
+ },
1163
+ "additionalProperties": true
1164
+ },
1165
+ "rawRecords": {
1166
+ "type": "array",
1167
+ "items": {
1168
+ "type": "object",
1169
+ "required": [
1170
+ "registryId",
1171
+ "source",
1172
+ "sourceStream",
1173
+ "family",
1174
+ "type",
1175
+ "recordIndex",
1176
+ "offset",
1177
+ "byteLength",
1178
+ "encoding",
1179
+ "supported",
1180
+ "parsed",
1181
+ "rawBase64"
1182
+ ],
1183
+ "properties": {
1184
+ "registryId": {
1185
+ "type": "string"
1186
+ },
1187
+ "source": {
1188
+ "enum": ["pcbdoc", "pcblib"]
1189
+ },
1190
+ "sourceStorage": {
1191
+ "type": "string"
1192
+ },
1193
+ "sourceStream": {
1194
+ "type": "string"
1195
+ },
1196
+ "headerStream": {
1197
+ "type": "string"
1198
+ },
1199
+ "family": {
1200
+ "type": "string"
1201
+ },
1202
+ "type": {
1203
+ "type": "string"
1204
+ },
1205
+ "typeId": {
1206
+ "type": ["number", "null"]
1207
+ },
1208
+ "recordIndex": {
1209
+ "type": "number"
1210
+ },
1211
+ "offset": {
1212
+ "type": "number"
1213
+ },
1214
+ "byteLength": {
1215
+ "type": "number"
1216
+ },
1217
+ "payloadByteLength": {
1218
+ "type": ["number", "null"]
1219
+ },
1220
+ "encoding": {
1221
+ "type": "string"
1222
+ },
1223
+ "supported": {
1224
+ "type": "boolean"
1225
+ },
1226
+ "parsed": {
1227
+ "type": "boolean"
1228
+ },
1229
+ "rawBase64": {
1230
+ "type": "string"
1231
+ }
1232
+ },
1233
+ "additionalProperties": true
1234
+ }
1235
+ },
1236
+ "pcbComponent": {
1237
+ "type": "object",
1238
+ "required": [
1239
+ "componentIndex",
1240
+ "designator",
1241
+ "x",
1242
+ "y",
1243
+ "layer",
1244
+ "pattern",
1245
+ "rotation",
1246
+ "source",
1247
+ "description",
1248
+ "height"
1249
+ ],
1250
+ "properties": {
1251
+ "componentIndex": {
1252
+ "type": "number"
1253
+ },
1254
+ "designator": {
1255
+ "type": "string"
1256
+ },
1257
+ "baseDesignator": {
1258
+ "type": "string"
1259
+ },
1260
+ "displayDesignator": {
1261
+ "type": "string"
1262
+ },
1263
+ "designatorSource": {
1264
+ "const": "Texts6/Data"
1265
+ },
1266
+ "uniqueId": {
1267
+ "type": "string"
1268
+ },
1269
+ "parameters": {
1270
+ "type": "object",
288
1271
  "additionalProperties": {
289
1272
  "type": "string"
290
1273
  }
@@ -301,20 +1284,366 @@
301
1284
  "layer": {
302
1285
  "type": "string"
303
1286
  },
304
- "pattern": {
305
- "type": "string"
1287
+ "pattern": {
1288
+ "type": "string"
1289
+ },
1290
+ "rotation": {
1291
+ "type": "number"
1292
+ },
1293
+ "source": {
1294
+ "type": "string"
1295
+ },
1296
+ "description": {
1297
+ "type": "string"
1298
+ },
1299
+ "height": {
1300
+ "type": ["number", "null"]
1301
+ },
1302
+ "provenance": {
1303
+ "$ref": "#/$defs/pcbComponentProvenance"
1304
+ }
1305
+ },
1306
+ "additionalProperties": true
1307
+ },
1308
+ "pcbComponentProvenance": {
1309
+ "type": "object",
1310
+ "properties": {
1311
+ "channelOffset": {
1312
+ "type": "number"
1313
+ },
1314
+ "sourceDesignator": {
1315
+ "type": "string"
1316
+ },
1317
+ "sourceUniqueId": {
1318
+ "type": "string"
1319
+ },
1320
+ "sourceUniqueIdSegments": {
1321
+ "type": "array",
1322
+ "items": {
1323
+ "type": "string"
1324
+ }
1325
+ },
1326
+ "sourceHierarchicalPath": {
1327
+ "type": "string"
1328
+ },
1329
+ "sourceHierarchySegments": {
1330
+ "type": "array",
1331
+ "items": {
1332
+ "type": "string"
1333
+ }
1334
+ },
1335
+ "sourceFootprintLibrary": {
1336
+ "type": "string"
1337
+ },
1338
+ "sourceFootprintLibraryName": {
1339
+ "type": "string"
1340
+ },
1341
+ "sourceLibReference": {
1342
+ "type": "string"
1343
+ },
1344
+ "sourceComponentLibrary": {
1345
+ "type": "string"
1346
+ },
1347
+ "sourceComponentLibraryIdentifierKind": {
1348
+ "type": "number"
1349
+ },
1350
+ "sourceComponentLibraryIdentifier": {
1351
+ "type": "string"
1352
+ },
1353
+ "footprintDescription": {
1354
+ "type": "string"
1355
+ },
1356
+ "nameAutoPosition": {
1357
+ "type": "number"
1358
+ },
1359
+ "commentAutoPosition": {
1360
+ "type": "number"
1361
+ },
1362
+ "lockStrings": {
1363
+ "type": "boolean"
1364
+ },
1365
+ "enablePinSwapping": {
1366
+ "type": "boolean"
1367
+ },
1368
+ "enablePartSwapping": {
1369
+ "type": "boolean"
1370
+ }
1371
+ },
1372
+ "additionalProperties": true
1373
+ },
1374
+ "pcbRule": {
1375
+ "type": "object",
1376
+ "required": [
1377
+ "ruleIndex",
1378
+ "name",
1379
+ "ruleKind",
1380
+ "ruleType",
1381
+ "constraints",
1382
+ "constraintValues",
1383
+ "typedConstraints"
1384
+ ],
1385
+ "properties": {
1386
+ "ruleIndex": {
1387
+ "type": "number"
1388
+ },
1389
+ "name": {
1390
+ "type": "string"
1391
+ },
1392
+ "ruleKind": {
1393
+ "type": "string"
1394
+ },
1395
+ "enabled": {
1396
+ "type": ["boolean", "null"]
1397
+ },
1398
+ "priority": {
1399
+ "type": ["number", "null"]
1400
+ },
1401
+ "uniqueId": {
1402
+ "type": "string"
1403
+ },
1404
+ "scope1": {
1405
+ "$ref": "#/$defs/pcbRuleScope"
1406
+ },
1407
+ "scope2": {
1408
+ "$ref": "#/$defs/pcbRuleScope"
1409
+ },
1410
+ "ruleType": {
1411
+ "$ref": "#/$defs/pcbRuleType"
1412
+ },
1413
+ "constraints": {
1414
+ "type": "object",
1415
+ "additionalProperties": {
1416
+ "type": "string"
1417
+ }
1418
+ },
1419
+ "constraintValues": {
1420
+ "type": "object",
1421
+ "additionalProperties": {
1422
+ "type": "object",
1423
+ "additionalProperties": true
1424
+ }
1425
+ },
1426
+ "typedConstraints": {
1427
+ "type": "object",
1428
+ "additionalProperties": {
1429
+ "type": "object",
1430
+ "additionalProperties": true
1431
+ }
1432
+ }
1433
+ },
1434
+ "additionalProperties": true
1435
+ },
1436
+ "pcbRuleScope": {
1437
+ "type": "object",
1438
+ "required": ["rawExpression", "predicate", "arguments", "isAll"],
1439
+ "properties": {
1440
+ "rawExpression": {
1441
+ "type": "string"
1442
+ },
1443
+ "predicate": {
1444
+ "type": "string"
1445
+ },
1446
+ "arguments": {
1447
+ "type": "array",
1448
+ "items": {
1449
+ "type": "string"
1450
+ }
1451
+ },
1452
+ "isAll": {
1453
+ "type": "boolean"
1454
+ }
1455
+ },
1456
+ "additionalProperties": true
1457
+ },
1458
+ "pcbRuleType": {
1459
+ "type": "object",
1460
+ "required": ["rawKind", "kind", "category", "displayName"],
1461
+ "properties": {
1462
+ "rawKind": {
1463
+ "type": "string"
1464
+ },
1465
+ "kind": {
1466
+ "type": "string"
1467
+ },
1468
+ "category": {
1469
+ "type": "string"
1470
+ },
1471
+ "displayName": {
1472
+ "type": "string"
1473
+ }
1474
+ },
1475
+ "additionalProperties": true
1476
+ },
1477
+ "pcbDifferentialPair": {
1478
+ "type": "object",
1479
+ "required": [
1480
+ "pairIndex",
1481
+ "name",
1482
+ "positiveNetName",
1483
+ "negativeNetName",
1484
+ "netNames",
1485
+ "gatherControl",
1486
+ "classNames"
1487
+ ],
1488
+ "properties": {
1489
+ "pairIndex": {
1490
+ "type": "number"
1491
+ },
1492
+ "name": {
1493
+ "type": "string"
1494
+ },
1495
+ "positiveNetName": {
1496
+ "type": "string"
1497
+ },
1498
+ "negativeNetName": {
1499
+ "type": "string"
1500
+ },
1501
+ "netNames": {
1502
+ "type": "array",
1503
+ "items": {
1504
+ "type": "string"
1505
+ }
1506
+ },
1507
+ "gatherControl": {
1508
+ "type": "boolean"
1509
+ },
1510
+ "uniqueId": {
1511
+ "type": "string"
1512
+ },
1513
+ "classNames": {
1514
+ "type": "array",
1515
+ "items": {
1516
+ "type": "string"
1517
+ }
1518
+ }
1519
+ },
1520
+ "additionalProperties": true
1521
+ },
1522
+ "pcbDifferentialPairClass": {
1523
+ "type": "object",
1524
+ "required": [
1525
+ "classIndex",
1526
+ "name",
1527
+ "members",
1528
+ "pairNames",
1529
+ "unresolvedMembers"
1530
+ ],
1531
+ "properties": {
1532
+ "classIndex": {
1533
+ "type": "number"
1534
+ },
1535
+ "name": {
1536
+ "type": "string"
1537
+ },
1538
+ "members": {
1539
+ "type": "array",
1540
+ "items": {
1541
+ "type": "string"
1542
+ }
1543
+ },
1544
+ "pairNames": {
1545
+ "type": "array",
1546
+ "items": {
1547
+ "type": "string"
1548
+ }
1549
+ },
1550
+ "unresolvedMembers": {
1551
+ "type": "array",
1552
+ "items": {
1553
+ "type": "string"
1554
+ }
1555
+ }
1556
+ },
1557
+ "additionalProperties": true
1558
+ },
1559
+ "pickPlaceModel": {
1560
+ "type": "object",
1561
+ "required": ["positionMode", "entries", "modes"],
1562
+ "properties": {
1563
+ "units": {
1564
+ "$ref": "#/$defs/units"
1565
+ },
1566
+ "positionMode": {
1567
+ "enum": ["altium-pick-place", "component-origin"]
1568
+ },
1569
+ "entries": {
1570
+ "type": "array",
1571
+ "items": {
1572
+ "$ref": "#/$defs/pickPlaceEntry"
1573
+ }
1574
+ },
1575
+ "modes": {
1576
+ "type": "object",
1577
+ "properties": {
1578
+ "componentOrigin": {
1579
+ "type": "object",
1580
+ "required": ["positionMode", "entries"],
1581
+ "properties": {
1582
+ "units": {
1583
+ "$ref": "#/$defs/units"
1584
+ },
1585
+ "positionMode": {
1586
+ "const": "component-origin"
1587
+ },
1588
+ "entries": {
1589
+ "type": "array",
1590
+ "items": {
1591
+ "$ref": "#/$defs/pickPlaceEntry"
1592
+ }
1593
+ }
1594
+ },
1595
+ "additionalProperties": true
1596
+ }
1597
+ },
1598
+ "additionalProperties": true
1599
+ }
1600
+ },
1601
+ "additionalProperties": true
1602
+ },
1603
+ "pickPlaceEntry": {
1604
+ "type": "object",
1605
+ "required": [
1606
+ "designator",
1607
+ "pattern",
1608
+ "layer",
1609
+ "rotation",
1610
+ "x",
1611
+ "y",
1612
+ "componentOriginX",
1613
+ "componentOriginY",
1614
+ "padAnchorCount",
1615
+ "positionSource"
1616
+ ],
1617
+ "properties": {
1618
+ "designator": {
1619
+ "type": "string"
1620
+ },
1621
+ "pattern": {
1622
+ "type": "string"
1623
+ },
1624
+ "layer": {
1625
+ "type": "string"
1626
+ },
1627
+ "rotation": {
1628
+ "type": "number"
1629
+ },
1630
+ "x": {
1631
+ "type": "number"
1632
+ },
1633
+ "y": {
1634
+ "type": "number"
1635
+ },
1636
+ "componentOriginX": {
1637
+ "type": "number"
306
1638
  },
307
- "rotation": {
1639
+ "componentOriginY": {
308
1640
  "type": "number"
309
1641
  },
310
- "source": {
311
- "type": "string"
1642
+ "padAnchorCount": {
1643
+ "type": "number"
312
1644
  },
313
- "description": {
1645
+ "positionSource": {
314
1646
  "type": "string"
315
- },
316
- "height": {
317
- "type": ["number", "null"]
318
1647
  }
319
1648
  },
320
1649
  "additionalProperties": true
@@ -325,6 +1654,16 @@
325
1654
  "text": {
326
1655
  "type": "string"
327
1656
  },
1657
+ "rawText": {
1658
+ "type": "string"
1659
+ },
1660
+ "resolvedText": {
1661
+ "type": "string"
1662
+ },
1663
+ "specialString": {
1664
+ "type": "object",
1665
+ "additionalProperties": true
1666
+ },
328
1667
  "textSource": {
329
1668
  "const": "WideStrings6/Data"
330
1669
  },
@@ -547,6 +1886,383 @@
547
1886
  }
548
1887
  },
549
1888
  "additionalProperties": true
1889
+ },
1890
+ "designBundleSheet": {
1891
+ "type": "object",
1892
+ "required": ["bundleIndex", "fileName", "title"],
1893
+ "properties": {
1894
+ "bundleIndex": {
1895
+ "type": "number"
1896
+ },
1897
+ "fileName": {
1898
+ "type": "string"
1899
+ },
1900
+ "title": {
1901
+ "type": "string"
1902
+ },
1903
+ "documentPath": {
1904
+ "type": "string"
1905
+ },
1906
+ "uniqueId": {
1907
+ "type": "string"
1908
+ },
1909
+ "componentCount": {
1910
+ "type": "number"
1911
+ },
1912
+ "netCount": {
1913
+ "type": "number"
1914
+ }
1915
+ },
1916
+ "additionalProperties": true
1917
+ },
1918
+ "designBundleComponent": {
1919
+ "type": "object",
1920
+ "required": ["bundleIndex", "designator"],
1921
+ "properties": {
1922
+ "bundleIndex": {
1923
+ "type": "number"
1924
+ },
1925
+ "designator": {
1926
+ "type": "string"
1927
+ },
1928
+ "schematic": {
1929
+ "type": ["object", "null"],
1930
+ "additionalProperties": true
1931
+ },
1932
+ "pcb": {
1933
+ "type": ["object", "null"],
1934
+ "additionalProperties": true
1935
+ }
1936
+ },
1937
+ "additionalProperties": true
1938
+ },
1939
+ "schematicHierarchy": {
1940
+ "type": "object",
1941
+ "required": ["mode", "modeName", "sheets", "sheetSymbols"],
1942
+ "properties": {
1943
+ "mode": {
1944
+ "type": "string"
1945
+ },
1946
+ "modeName": {
1947
+ "type": "string"
1948
+ },
1949
+ "sheets": {
1950
+ "type": "array",
1951
+ "items": {
1952
+ "type": "object",
1953
+ "additionalProperties": true
1954
+ }
1955
+ },
1956
+ "sheetSymbols": {
1957
+ "type": "array",
1958
+ "items": {
1959
+ "type": "object",
1960
+ "additionalProperties": true
1961
+ }
1962
+ }
1963
+ },
1964
+ "additionalProperties": true
1965
+ },
1966
+ "designBundleNet": {
1967
+ "type": "object",
1968
+ "required": ["bundleIndex", "name", "schematic", "pcb", "pins"],
1969
+ "properties": {
1970
+ "bundleIndex": {
1971
+ "type": "number"
1972
+ },
1973
+ "name": {
1974
+ "type": "string"
1975
+ },
1976
+ "schematic": {
1977
+ "type": "array"
1978
+ },
1979
+ "pcb": {
1980
+ "type": "array"
1981
+ },
1982
+ "pins": {
1983
+ "type": "array"
1984
+ }
1985
+ },
1986
+ "additionalProperties": true
1987
+ },
1988
+ "designBundleIndexes": {
1989
+ "type": "object",
1990
+ "properties": {
1991
+ "documentsByPath": {
1992
+ "type": "object"
1993
+ },
1994
+ "sheetsByFileName": {
1995
+ "type": "object"
1996
+ },
1997
+ "componentsByDesignator": {
1998
+ "type": "object"
1999
+ },
2000
+ "netsByName": {
2001
+ "type": "object"
2002
+ },
2003
+ "pnpByDesignator": {
2004
+ "type": "object"
2005
+ }
2006
+ },
2007
+ "additionalProperties": true
2008
+ },
2009
+ "effectiveVariantView": {
2010
+ "type": "object",
2011
+ "required": [
2012
+ "name",
2013
+ "dnp",
2014
+ "parameterOverrides",
2015
+ "bom",
2016
+ "pnp",
2017
+ "nets",
2018
+ "components"
2019
+ ],
2020
+ "properties": {
2021
+ "name": {
2022
+ "type": "string"
2023
+ },
2024
+ "uniqueId": {
2025
+ "type": "string"
2026
+ },
2027
+ "dnp": {
2028
+ "type": "array",
2029
+ "items": {
2030
+ "type": "string"
2031
+ }
2032
+ },
2033
+ "parameterOverrides": {
2034
+ "type": "object"
2035
+ },
2036
+ "bom": {
2037
+ "type": "array"
2038
+ },
2039
+ "pnp": {
2040
+ "$ref": "#/$defs/pickPlaceModel"
2041
+ },
2042
+ "nets": {
2043
+ "type": "array"
2044
+ },
2045
+ "components": {
2046
+ "type": "array"
2047
+ }
2048
+ },
2049
+ "additionalProperties": true
2050
+ },
2051
+ "pcbStatistics": {
2052
+ "type": "object",
2053
+ "properties": {
2054
+ "schema": {
2055
+ "const": "altium-toolkit.pcb.statistics.a1"
2056
+ },
2057
+ "units": {
2058
+ "$ref": "#/$defs/units"
2059
+ },
2060
+ "board": {
2061
+ "type": "object",
2062
+ "additionalProperties": true
2063
+ },
2064
+ "drills": {
2065
+ "type": "object",
2066
+ "additionalProperties": true
2067
+ },
2068
+ "primitiveWidths": {
2069
+ "type": "object",
2070
+ "additionalProperties": true
2071
+ },
2072
+ "layers": {
2073
+ "type": "object",
2074
+ "additionalProperties": true
2075
+ },
2076
+ "planning": {
2077
+ "type": "object",
2078
+ "additionalProperties": true
2079
+ }
2080
+ },
2081
+ "additionalProperties": true
2082
+ },
2083
+ "pcbRouteAnalysis": {
2084
+ "type": "object",
2085
+ "required": ["schema", "units", "summary", "byNet"],
2086
+ "properties": {
2087
+ "schema": {
2088
+ "const": "altium-toolkit.pcb.route-analysis.a1"
2089
+ },
2090
+ "units": {
2091
+ "$ref": "#/$defs/units"
2092
+ },
2093
+ "summary": {
2094
+ "type": "object",
2095
+ "additionalProperties": true
2096
+ },
2097
+ "byNet": {
2098
+ "type": "array",
2099
+ "items": {
2100
+ "type": "object",
2101
+ "additionalProperties": true
2102
+ }
2103
+ },
2104
+ "classes": {
2105
+ "type": "array"
2106
+ },
2107
+ "differentialPairs": {
2108
+ "type": "array"
2109
+ }
2110
+ },
2111
+ "additionalProperties": true
2112
+ },
2113
+ "units": {
2114
+ "type": "object",
2115
+ "additionalProperties": {
2116
+ "type": "string"
2117
+ }
2118
+ },
2119
+ "libraryRenderManifest": {
2120
+ "type": "object",
2121
+ "properties": {
2122
+ "schema": {
2123
+ "const": "altium-toolkit.library.render-manifest.a1"
2124
+ },
2125
+ "libraryKind": {
2126
+ "enum": ["schematic-symbols", "pcb-footprints"]
2127
+ },
2128
+ "outputs": {
2129
+ "type": "array",
2130
+ "items": {
2131
+ "type": "object",
2132
+ "additionalProperties": true
2133
+ }
2134
+ },
2135
+ "embeddedAssets": {
2136
+ "type": "array",
2137
+ "items": {
2138
+ "type": "object",
2139
+ "additionalProperties": true
2140
+ }
2141
+ }
2142
+ },
2143
+ "additionalProperties": true
2144
+ },
2145
+ "libraryIndexes": {
2146
+ "type": "object",
2147
+ "properties": {
2148
+ "footprintsByName": {
2149
+ "type": "object"
2150
+ }
2151
+ },
2152
+ "additionalProperties": true
2153
+ },
2154
+ "integratedLibraryIndexes": {
2155
+ "type": "object",
2156
+ "properties": {
2157
+ "sourcesByFileName": {
2158
+ "type": "object"
2159
+ },
2160
+ "sourcesByKind": {
2161
+ "type": "object"
2162
+ },
2163
+ "modelsByComponent": {
2164
+ "type": "object"
2165
+ },
2166
+ "symbolsByComponent": {
2167
+ "type": "object"
2168
+ },
2169
+ "footprintsByComponent": {
2170
+ "type": "object"
2171
+ }
2172
+ },
2173
+ "additionalProperties": true
2174
+ },
2175
+ "integratedLibrary": {
2176
+ "type": "object",
2177
+ "required": [
2178
+ "version",
2179
+ "streamNames",
2180
+ "crossReferences",
2181
+ "parameters",
2182
+ "parameterRecords",
2183
+ "sources"
2184
+ ],
2185
+ "properties": {
2186
+ "version": {
2187
+ "type": "string"
2188
+ },
2189
+ "streamNames": {
2190
+ "type": "array",
2191
+ "items": {
2192
+ "type": "string"
2193
+ }
2194
+ },
2195
+ "crossReferences": {
2196
+ "type": "array",
2197
+ "items": {
2198
+ "type": "object",
2199
+ "additionalProperties": true
2200
+ }
2201
+ },
2202
+ "parameters": {
2203
+ "type": "object",
2204
+ "additionalProperties": {
2205
+ "type": "string"
2206
+ }
2207
+ },
2208
+ "parameterRecords": {
2209
+ "type": "array",
2210
+ "items": {
2211
+ "type": "object",
2212
+ "additionalProperties": true
2213
+ }
2214
+ },
2215
+ "indexes": {
2216
+ "$ref": "#/$defs/integratedLibraryIndexes"
2217
+ },
2218
+ "sources": {
2219
+ "type": "array",
2220
+ "items": {
2221
+ "$ref": "#/$defs/integratedLibrarySource"
2222
+ }
2223
+ }
2224
+ },
2225
+ "additionalProperties": true
2226
+ },
2227
+ "integratedLibrarySource": {
2228
+ "type": "object",
2229
+ "required": [
2230
+ "path",
2231
+ "fileName",
2232
+ "fileType",
2233
+ "libraryKind",
2234
+ "compression",
2235
+ "byteLength",
2236
+ "payloadBase64",
2237
+ "payloadText"
2238
+ ],
2239
+ "properties": {
2240
+ "path": {
2241
+ "type": "string"
2242
+ },
2243
+ "fileName": {
2244
+ "type": "string"
2245
+ },
2246
+ "fileType": {
2247
+ "type": "string"
2248
+ },
2249
+ "libraryKind": {
2250
+ "type": "string"
2251
+ },
2252
+ "compression": {
2253
+ "enum": ["none", "zlib", "zlib-wrapper"]
2254
+ },
2255
+ "byteLength": {
2256
+ "type": "number"
2257
+ },
2258
+ "payloadBase64": {
2259
+ "type": "string"
2260
+ },
2261
+ "payloadText": {
2262
+ "type": "string"
2263
+ }
2264
+ },
2265
+ "additionalProperties": true
550
2266
  }
551
2267
  },
552
2268
  "additionalProperties": true