circuitdata 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 611504e3b618906c3034b1d9eea7c4e863a6e48b
4
- data.tar.gz: 333947547beab6d85a82d1fe6ea38bbacff79915
3
+ metadata.gz: e0f932ee59269f6cc563b1ddd5a85aeaf69d716c
4
+ data.tar.gz: c93d8bcf99e9a2723e680b902865668089c1420a
5
5
  SHA512:
6
- metadata.gz: f1c44352aa96d8180a1d8edfe6d5357ce440be331c981866b7ec53d8d5fdd2ec07fc33301338d34c0c554c60eedfeda79c1c22018506b32f2925395390b0121b
7
- data.tar.gz: 1d7ba1fa15a0d14f24ff9fb4e120b8f794127c0b5bdfdfc789b881ba60be08f32db73b2c19d0ec1c70724345cf6051c98f4ccbf8c940b13b3ee8a986f52011d6
6
+ metadata.gz: 55325d670241f121a5ac81eff19d641662a3d27429a75615f0f06c6d3bb756f5f6f8cffd3fb1da367daa0069a56d48982eac088f79b862db93bec13f2f8a1cf7
7
+ data.tar.gz: 79a08cc7a9cfacebbd7af0ff349bfda4c0744a65c13845a23690fa34b16dd08cf1dbcf0854d3a263d781222b797988831fdc5ab54a2ceb122ba8fcd7010ef6a6
data/lib/circuitdata.rb CHANGED
@@ -113,7 +113,6 @@ module Circuitdata
113
113
  def self.create_documentation()
114
114
  docu = Tools.new()
115
115
  ra = docu.create_structure
116
- #File.write('utils_README.md', docu.create_documentation(ra))
117
116
  docu.create_documentation(ra)
118
117
  end
119
118
 
@@ -38,6 +38,10 @@ class Circuitdata::CompatibilityChecker
38
38
  end
39
39
 
40
40
  def perform_comparison(product_data, check_data, schema, type)
41
+
42
+ docu = Circuitdata::Tools.new()
43
+ ra = docu.create_structure
44
+
41
45
  case type
42
46
  when 'restricted'
43
47
  check_hash = check_data.dig(:open_trade_transfer_package, :profiles, :restricted, :printed_circuits_fabrication_data)
@@ -52,45 +56,81 @@ class Circuitdata::CompatibilityChecker
52
56
  common_hash = schema.dig(:properties, :open_trade_transfer_package, :properties, :products, :patternProperties, :'^(?!generic$).*', :properties, :printed_circuits_fabrication_data, :properties)
53
57
  check_hash.each do |k, v|
54
58
  v.each do |kl1, vl1| # level 1
55
- common_hash[k.to_sym]||= {:type => 'object', :properties => {}}
56
- common_hash[:stackup][:properties][:specified][:properties][k.to_sym] ||= {:type => 'object', :properties => {}}
57
-
58
- case vl1.class.name
59
- when 'String'
60
- if vl1.match("^(\\d*|\\d*.\\d*)\\.\\.\\.(\\d*|\\d*.\\d*)$") #This is a value range
61
- from, too = vl1.match("^(\\d*|\\d*.\\d*)\\.\\.\\.(\\d*|\\d*.\\d*)$").captures
62
- case type
63
- when 'restricted'
64
- new_hash = {:not => {:allOf => [{:minimum => from.to_f},{:maximum => too.to_f}]}}
65
- else
66
- new_hash = eval("{:minimum => #{from}, :maximum => #{too}}")
59
+ unless [:dielectric, :soldermask, :stiffener].include? k.to_sym
60
+ common_hash[k.to_sym]||= {:type => 'object', :properties => {}}
61
+ #common_hash[:stackup][:properties][:specified][:properties][k.to_sym] ||= {:type => 'object', :properties => {}}
62
+ end
63
+ enum = []
64
+ required = []
65
+ case type
66
+ when 'restricted'
67
+ case vl1[0].class.name
68
+ when 'String'
69
+ vl1.each {|enumvalue| enum << enumvalue.strip}
70
+ new_hash = {:not => {:anyOf => [{ :enum => enum }]}}
71
+ when 'Boolean', 'FalseClass', 'TrueClass'
72
+ vl1.each do |enumvalue|
73
+ required << kl1.to_s if enumvalue == false
74
+ enum << enumvalue
67
75
  end
68
- else # This is a normal string - check for commas
69
- enum = []
70
- vl1.split(',').each {|enumvalue| enum << enumvalue.strip}
71
- case type
72
- when 'restricted'
73
- new_hash = {:not => {:anyOf => [{ :enum => ''}]}}
74
- new_hash[:not][:anyOf][0][:enum] = enum
75
- else
76
- new_hash = eval("{:enum => #{enum}}")
76
+ new_hash = {:not => {:anyOf => [{ :enum => enum }]}}
77
+ when 'Numeric', 'Float'
78
+ if ra.dig(:structured, :elements, k.to_sym, :elements, kl1.to_sym, :enum).nil?
79
+ new_hash = {:anyOf => [{ :minimum => vl1[0], :maximum => vl1[1] }]}
80
+ else
81
+ vl1.each {|enumvalue| enum << enumvalue}
82
+ new_hash = {:not => {:anyOf => [{ :enum => enum }]}}
77
83
  end
78
84
  end
79
- when 'Numeric', 'Float' # This is a normal string
80
- case type
81
- when 'restricted'
82
- new_hash = {:not => {:allOf => [{:minimum => vl1.to_f},{:maximum => vl1.to_f}]}}
85
+ when 'enforced'
86
+ enum << vl1
87
+ new_hash = eval("{:enum => #{enum}}")
88
+ when 'capabilities'
89
+ case vl1[0].class.name
90
+ when 'String'
91
+ vl1.each {|enumvalue| enum << enumvalue.strip}
92
+ new_hash = {:anyOf => [{ :enum => enum }]}
93
+ when 'Boolean', 'FalseClass', 'TrueClass'
94
+ vl1.each do |enumvalue|
95
+ required << kl1.to_s if enumvalue == true
96
+ enum << enumvalue
97
+ end
98
+ new_hash = {:anyOf => [{ :enum => enum }]}
99
+ when 'Numeric'
100
+ vl1.each {|enumvalue| enum << enumvalue.strip}
101
+ new_hash = {:anyOf => [{ :minimum => vl1[0], :maximum => vl1[1] }]}
102
+ when 'Integer', 'Float'
103
+ if vl1.length == 1
104
+ new_hash = {:anyOf => [{ :minimum => vl1[0], :maximum => vl1[0] }]}
105
+ elsif vl1.length == 2
106
+ new_hash = {:anyOf => [{ :minimum => vl1[0], :maximum => vl1[1] }]}
83
107
  else
84
- new_hash = eval("{:enum => [#{vl1.to_s}]}")
108
+ fail StandardError, "Unhandled array length=#{vl1.length} key=#{kl1}"
109
+ end
110
+ else
111
+ fail StandardError, "Unhandled type=#{vl1[1].class.name} key=#{kl1}"
85
112
  end
86
113
  end
87
- common_hash[k.to_sym][:properties][kl1.to_sym] = new_hash
88
- common_hash[:stackup][:properties][:specified][:properties][k.to_sym][:properties][kl1.to_sym] = new_hash
114
+ case k.to_sym
115
+ when :dielectric
116
+ schema[:properties][:open_trade_transfer_package][:properties][:custom][:properties][:materials][:properties][:printed_circuits_fabrication_data][:properties][:dielectrics][:items][:properties][kl1.to_sym] = new_hash
117
+ schema[:properties][:open_trade_transfer_package][:properties][:custom][:properties][:materials][:properties][:printed_circuits_fabrication_data][:properties][:dielectrics][:items][:required] = required
118
+ when :soldermask
119
+ schema[:properties][:open_trade_transfer_package][:properties][:custom][:properties][:materials][:properties][:printed_circuits_fabrication_data][:properties][:soldermasks][:items][:properties][kl1.to_sym] = new_hash
120
+ schema[:properties][:open_trade_transfer_package][:properties][:custom][:properties][:materials][:properties][:printed_circuits_fabrication_data][:properties][:soldermasks][:items][:required] = required
121
+ when :stiffener
122
+ schema[:properties][:open_trade_transfer_package][:properties][:custom][:properties][:materials][:properties][:printed_circuits_fabrication_data][:properties][:stiffeners][:items][:properties][kl1.to_sym] = new_hash
123
+ schema[:properties][:open_trade_transfer_package][:properties][:custom][:properties][:materials][:properties][:printed_circuits_fabrication_data][:properties][:stiffeners][:items][:required] = required
124
+ else
125
+ common_hash[k.to_sym][:properties][kl1.to_sym] = new_hash
126
+ common_hash[k.to_sym][:required] = required
127
+ end
128
+ #common_hash[:stackup][:properties][:specified][:properties][k.to_sym][:properties][kl1.to_sym] = new_hash
129
+ #common_hash[:stackup][:properties][:specified][:properties][k.to_sym][:properties][kl1.to_sym] = new_hash
89
130
  end if v.is_a? Hash
90
131
 
91
132
  common_hash[k.to_sym][:additionalProperties] = false if (v.is_a?(Hash) && type == 'capabilities')
92
133
  end
93
-
94
134
  # perform validations
95
135
  begin
96
136
  validation_errors = JSON::Validator.fully_validate(schema.to_json, product_data, :errors_as_objects => true)
@@ -117,4 +157,4 @@ class Circuitdata::CompatibilityChecker
117
157
  @fh[:message] = "Something was wrong with the submitted `#{type}` schema" # enforced_schema
118
158
  end
119
159
  end
120
- end
160
+ end
@@ -21,14 +21,14 @@ module Circuitdata
21
21
  def read_file(file_path)
22
22
  full_path = File.expand_path(file_path, base_path)
23
23
  file = File.read(full_path)
24
- JSON.parse(file)
24
+ JSON.parse(file, symbolize_names: true)
25
25
  end
26
26
 
27
27
  def get_ref(ref)
28
28
  file_path, pointer = ref.split('#')
29
29
  data = read_file(file_path)
30
30
  pointer_parts = pointer.split('/').reject(&:blank?)
31
- result = data.dig(*pointer_parts)
31
+ result = data.dig(*pointer_parts.map(&:to_sym))
32
32
  if result.nil?
33
33
  fail "Unable to dereference ref=#{ref}"
34
34
  end
@@ -61,13 +61,17 @@ module Circuitdata
61
61
  question = category_questions.find {|question| question[:code] == question_code }
62
62
  if question.nil?
63
63
  question = {
64
+ id: "#{category[:id]}_#{question_code}",
64
65
  code: question_code,
65
- name: question_code.to_s.humanize
66
+ name: question_code.to_s.humanize,
67
+ description: ''
66
68
  }
67
69
  category_questions << question
68
70
  end
71
+ schema = descriptor.dup
72
+ question[:description] = schema.delete(:description) || question[:description]
69
73
  question[question_type] = {
70
- descriptor: descriptor,
74
+ schema: schema,
71
75
  path: json_pointer(path + [question_code])
72
76
  }
73
77
  end
@@ -13,7 +13,7 @@
13
13
  "pattern": "^1.0$"
14
14
  },
15
15
  "information": {
16
- "$ref": "https://raw.githubusercontent.com/elmatica/Open-Trade-Transfer-Package/master/v1/ottp_schema_definitions.json#/definitions/information"
16
+ "$ref": "ottp_schema_definitions.json#/definitions/information"
17
17
  },
18
18
  "products": {
19
19
  "type": "object",
@@ -46,16 +46,10 @@
46
46
  "required": ["specification_level"],
47
47
  "properties": {
48
48
  "specification_level": {
49
- "type": "string",
50
- "enum": ["free", "separate_file", "specified"],
51
- "uom": null,
52
- "description": "The stack up of this board"
49
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/stackup/specification_level"
53
50
  },
54
51
  "file_name": {
55
- "type": "string",
56
- "format": "uri",
57
- "uom": null,
58
- "description": "The URI of the file that specifies the stackup. Either as a path witin a project compressed file (ZIP) or as a link"
52
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/stackup/file_name"
59
53
  },
60
54
  "specified": {
61
55
  "type": "object",
@@ -88,6 +82,9 @@
88
82
  "copper_foil_roughness": {
89
83
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
90
84
  },
85
+ "copper_foil_type": {
86
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
87
+ },
91
88
  "copper_coverage_average": {
92
89
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_coverage_average"
93
90
  },
@@ -125,6 +122,9 @@
125
122
  "copper_foil_roughness": {
126
123
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
127
124
  },
125
+ "copper_foil_type": {
126
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
127
+ },
128
128
  "copper_coverage_average": {
129
129
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_coverage_average"
130
130
  },
@@ -191,10 +191,7 @@
191
191
  "layer_name": {
192
192
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
193
193
  }
194
- },
195
- "aliases": "Surfacefinish, Surface finish, Coating, finalfinish, Solderable finish, Solderable coating",
196
- "name": "Final Finish",
197
- "description": "A list of final finishes, can be more than one. E.g. selective finish ENIG and OSP."
194
+ }
198
195
  }
199
196
  },
200
197
  "dielectric": {
@@ -213,10 +210,7 @@
213
210
  "layer_name": {
214
211
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
215
212
  }
216
- },
217
- "aliases": "Laminate",
218
- "name": "Dielectric",
219
- "description": "A list of one of more materials used as dielectric. Every material listed here must have be listed in the materials section with the name of the material as the key. This element is a list and can contain several items"
213
+ }
220
214
  }
221
215
  },
222
216
  "soldermask": {
@@ -250,10 +244,7 @@
250
244
  "layer_name": {
251
245
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
252
246
  }
253
- },
254
- "aliases": "solder mask, sm, solder resist, green mask",
255
- "name": "Soldermask",
256
- "description": "A list of final soldermasks, can be more than one"
247
+ }
257
248
  }
258
249
  },
259
250
  "legend": {
@@ -276,10 +267,7 @@
276
267
  "layer_name": {
277
268
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
278
269
  }
279
- },
280
- "aliases": "silk screen, silkscreen, ink, ident",
281
- "name": "Legend",
282
- "description": "The legend to be used on the board"
270
+ }
283
271
  },
284
272
  "stiffener": {
285
273
  "type": "object",
@@ -304,10 +292,7 @@
304
292
  "layer_name": {
305
293
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
306
294
  }
307
- },
308
- "aliases": "support",
309
- "name": "Stiffener",
310
- "description": "Stiffener in flexible boards"
295
+ }
311
296
  },
312
297
  "coverlay": {
313
298
  "type": "object",
@@ -332,10 +317,7 @@
332
317
  "layer_name": {
333
318
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
334
319
  }
335
- },
336
- "aliases": "",
337
- "name": "CoverLay",
338
- "description": ""
320
+ }
339
321
  },
340
322
  "peelable_mask": {
341
323
  "type": "object",
@@ -357,10 +339,7 @@
357
339
  "layer_name": {
358
340
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
359
341
  }
360
- },
361
- "aliases": "",
362
- "name": "Peelable mask",
363
- "description": ""
342
+ }
364
343
  },
365
344
  "kapton_tape": {
366
345
  "type": "object",
@@ -382,10 +361,7 @@
382
361
  "layer_name": {
383
362
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
384
363
  }
385
- },
386
- "aliases": "",
387
- "name": "Kapton tape",
388
- "description": ""
364
+ }
389
365
  },
390
366
  "conductive_carbon_print": {
391
367
  "type": "object",
@@ -404,10 +380,7 @@
404
380
  "layer_name": {
405
381
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
406
382
  }
407
- },
408
- "aliases": "",
409
- "name": "Conductive carbon print",
410
- "description": ""
383
+ }
411
384
  },
412
385
  "silver_print": {
413
386
  "type": "object",
@@ -426,17 +399,14 @@
426
399
  "layer_name": {
427
400
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/stackup_specific/layer_name"
428
401
  }
429
- },
430
- "aliases": "",
431
- "name": "Silver print tape",
432
- "description": ""
402
+ }
433
403
  }
434
404
  }
435
405
  }
436
406
  },
437
407
  "aliases": "stack-up, buildup, build-up",
438
408
  "name": "Stackup",
439
- "description": "The stackup of the board: Free stackup (supplier to choose), specified in a separate file or specified in this file. Can also include the stackup itself."
409
+ "description": "The stackup of the board. Can also include the stackup itself in the \"specified\" element."
440
410
  },
441
411
  "rigid_conductive_layer": {
442
412
  "type": "object",
@@ -466,6 +436,9 @@
466
436
  "copper_foil_roughness": {
467
437
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
468
438
  },
439
+ "copper_foil_type": {
440
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
441
+ },
469
442
  "copper_coverage_average": {
470
443
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_coverage_average"
471
444
  }
@@ -499,6 +472,9 @@
499
472
  "copper_foil_roughness": {
500
473
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
501
474
  },
475
+ "copper_foil_type": {
476
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
477
+ },
502
478
  "copper_coverage_average": {
503
479
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_coverage_average"
504
480
  }
@@ -666,9 +642,9 @@
666
642
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/coverlay/material"
667
643
  }
668
644
  },
669
- "aliases": "",
645
+ "aliases": "coverfilm",
670
646
  "name": "CoverLay",
671
- "description": ""
647
+ "description": "The coverlay on flexible boards"
672
648
  },
673
649
  "peelable_mask": {
674
650
  "type": "object",
@@ -684,9 +660,9 @@
684
660
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
685
661
  }
686
662
  },
687
- "aliases": "",
663
+ "aliases": "peelable solder mask, strippable mask, blue-mask",
688
664
  "name": "Peelable mask",
689
- "description": ""
665
+ "description": "Peelable solder mask that are removed after processing"
690
666
  },
691
667
  "kapton_tape": {
692
668
  "type": "object",
@@ -704,7 +680,7 @@
704
680
  },
705
681
  "aliases": "",
706
682
  "name": "Kapton tape",
707
- "description": ""
683
+ "description": "Kapton (polyimide) tape suitable for fixing, masking and sealing"
708
684
  },
709
685
  "conductive_carbon_print": {
710
686
  "type": "object",
@@ -1085,7 +1061,7 @@
1085
1061
  },
1086
1062
  "aliases": "",
1087
1063
  "name": "Standards and Requirements",
1088
- "description": "If the format is boolean and nothing is stated other than the name of the standard in the Decription column, it should be understood as follows: Are to be met (if Specification), required (in Profile) or possible (in Capability)"
1064
+ "description": "A list of standards that applies to the printed circuit board industry"
1089
1065
  },
1090
1066
  "testing": {
1091
1067
  "type": "object",
@@ -1112,7 +1088,7 @@
1112
1088
  },
1113
1089
  "aliases": "",
1114
1090
  "name": "Testing",
1115
- "description": ""
1091
+ "description": "The tests that are to be performed"
1116
1092
  },
1117
1093
  "country_of_origin": {
1118
1094
  "type": "object",
@@ -1281,6 +1257,9 @@
1281
1257
  "properties": {
1282
1258
  "copper_foil_roughness": {
1283
1259
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
1260
+ },
1261
+ "copper_foil_type": {
1262
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
1284
1263
  }
1285
1264
  }
1286
1265
  },
@@ -1290,6 +1269,9 @@
1290
1269
  "properties": {
1291
1270
  "copper_foil_roughness": {
1292
1271
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
1272
+ },
1273
+ "copper_foil_type": {
1274
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
1293
1275
  }
1294
1276
  }
1295
1277
  },
@@ -1338,26 +1320,54 @@
1338
1320
  "nickel_thickness_max": {
1339
1321
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/thickness_max_micron"
1340
1322
  }
1341
- },
1342
- "aliases": "Surfacefinish, Surface finish, Coating, finalfinish, Solderable finish, Solderable coating",
1343
- "name": "Final Finish",
1344
- "description": "A list of final finishes, can be more than one. E.g. selective finish ENIG and OSP."
1323
+ }
1345
1324
  }
1346
1325
  },
1347
1326
  "dielectric": {
1348
- "type": "array",
1349
- "items": {
1350
- "type": "object",
1351
- "additionalProperties": false,
1352
- "required": ["name"],
1353
- "properties": {
1354
- "name": {
1355
- "type": "string"
1356
- }
1327
+ "type": "object",
1328
+ "properties": {
1329
+ "ipc_4101_sheet": {
1330
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4101_sheet"
1357
1331
  },
1358
- "aliases": "Laminate",
1359
- "name": "Dielectric",
1360
- "description": "A list of one of more materials used as dielectric. Every material listed here must have be listed in the materials section with the name of the material as the key. This element is a list and can contain several items"
1332
+ "ipc_4103_sheet": {
1333
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4103_sheet"
1334
+ },
1335
+ "ipc_4204_sheet": {
1336
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4204_sheet"
1337
+ },
1338
+ "tg_min": {
1339
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_min"
1340
+ },
1341
+ "tg_range_from": {
1342
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_range_from"
1343
+ },
1344
+ "tg_range_to": {
1345
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_range_to"
1346
+ },
1347
+ "td_min": {
1348
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/td_min"
1349
+ },
1350
+ "td_range_from": {
1351
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/td_range_to"
1352
+ },
1353
+ "halogen_free": {
1354
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/halogen_free"
1355
+ },
1356
+ "rw_en45545_2_2013": {
1357
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_nf_f_16_101"
1358
+ },
1359
+ "rw_uni_cei_11170_3": {
1360
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_uni_cei_11170_3"
1361
+ },
1362
+ "rw_nfpa_130": {
1363
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_nfpa_130"
1364
+ },
1365
+ "ul": {
1366
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ul"
1367
+ },
1368
+ "accept_equivalent": {
1369
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/accept_equivalent"
1370
+ }
1361
1371
  }
1362
1372
  },
1363
1373
  "soldermask": {
@@ -1390,10 +1400,7 @@
1390
1400
  "allow_touchups": {
1391
1401
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/soldermask/allow_touchups"
1392
1402
  }
1393
- },
1394
- "aliases": "solder mask, sm, solder resist, green mask",
1395
- "name": "Soldermask",
1396
- "description": "A list of final soldermasks, can be more than one"
1403
+ }
1397
1404
  }
1398
1405
  },
1399
1406
  "legend": {
@@ -1409,10 +1416,7 @@
1409
1416
  "bottom": {
1410
1417
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
1411
1418
  }
1412
- },
1413
- "aliases": "silk screen, silkscreen, ink, ident",
1414
- "name": "Legend",
1415
- "description": "The legend to be used on the board"
1419
+ }
1416
1420
  },
1417
1421
  "stiffener": {
1418
1422
  "type": "object",
@@ -1430,10 +1434,7 @@
1430
1434
  "material": {
1431
1435
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/stiffener/material"
1432
1436
  }
1433
- },
1434
- "aliases": "support",
1435
- "name": "Stiffener",
1436
- "description": "Stiffener in flexible boards"
1437
+ }
1437
1438
  },
1438
1439
  "coverlay": {
1439
1440
  "type": "object",
@@ -1451,10 +1452,7 @@
1451
1452
  "material": {
1452
1453
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/coverlay/material"
1453
1454
  }
1454
- },
1455
- "aliases": "",
1456
- "name": "CoverLay",
1457
- "description": ""
1455
+ }
1458
1456
  },
1459
1457
  "peelable_mask": {
1460
1458
  "type": "object",
@@ -1469,10 +1467,7 @@
1469
1467
  "bottom": {
1470
1468
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
1471
1469
  }
1472
- },
1473
- "aliases": "",
1474
- "name": "Peelable mask",
1475
- "description": ""
1470
+ }
1476
1471
  },
1477
1472
  "kapton_tape": {
1478
1473
  "type": "object",
@@ -1487,10 +1482,7 @@
1487
1482
  "bottom": {
1488
1483
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
1489
1484
  }
1490
- },
1491
- "aliases": "",
1492
- "name": "Kapton tape",
1493
- "description": ""
1485
+ }
1494
1486
  },
1495
1487
  "conductive_carbon_print": {
1496
1488
  "type": "object",
@@ -1502,10 +1494,7 @@
1502
1494
  "bottom": {
1503
1495
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
1504
1496
  }
1505
- },
1506
- "aliases": "",
1507
- "name": "Conductive carbon print",
1508
- "description": ""
1497
+ }
1509
1498
  },
1510
1499
  "silver_print": {
1511
1500
  "type": "object",
@@ -1517,10 +1506,7 @@
1517
1506
  "bottom": {
1518
1507
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
1519
1508
  }
1520
- },
1521
- "aliases": "",
1522
- "name": "Silver print tape",
1523
- "description": ""
1509
+ }
1524
1510
  },
1525
1511
  "inner_packaging": {
1526
1512
  "type": "object",
@@ -1541,10 +1527,7 @@
1541
1527
  "vacuum": {
1542
1528
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/inner_packaging/vacuum"
1543
1529
  }
1544
- },
1545
- "aliases": "",
1546
- "name": "Inner Packaging",
1547
- "description": "This describes how boards are packed together to be shipped. Part of IPC 1601 (4.2.2)"
1530
+ }
1548
1531
  },
1549
1532
  "via_protection": {
1550
1533
  "type": "object",
@@ -1577,10 +1560,7 @@
1577
1560
  "type_7": {
1578
1561
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/via_protection/type_7"
1579
1562
  }
1580
- },
1581
- "aliases": "",
1582
- "name": "Via Protection",
1583
- "description": "The via/hole protection according to IPC 4761"
1563
+ }
1584
1564
  },
1585
1565
  "board": {
1586
1566
  "type": "object",
@@ -1589,10 +1569,7 @@
1589
1569
  "thickness": {
1590
1570
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/board/thickness"
1591
1571
  }
1592
- },
1593
- "aliases": "",
1594
- "name": "Board",
1595
- "description": "The physical description of the board"
1572
+ }
1596
1573
  },
1597
1574
  "array": {
1598
1575
  "type": "object",
@@ -1688,10 +1665,7 @@
1688
1665
  "coin_attachment": {
1689
1666
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/mechanical/coin_attachment"
1690
1667
  }
1691
- },
1692
- "aliases": "",
1693
- "name": "Mechanical processes",
1694
- "description": "Mechanical processes in the manufacturing"
1668
+ }
1695
1669
  },
1696
1670
  "selective_plated_pads": {
1697
1671
  "type": "object",
@@ -1700,10 +1674,7 @@
1700
1674
  "present": {
1701
1675
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/selective_plated_pads/present"
1702
1676
  }
1703
- },
1704
- "aliases": "selective hard gold",
1705
- "name": "Selective plated pads",
1706
- "description": "Selective plated pads"
1677
+ }
1707
1678
  },
1708
1679
  "hard_gold_edge_connectors": {
1709
1680
  "type": "object",
@@ -1718,10 +1689,7 @@
1718
1689
  "thickness_other": {
1719
1690
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/hard_gold_edge_connectors/thickness_other"
1720
1691
  }
1721
- },
1722
- "aliases": "gold fingers",
1723
- "name": "Hard Gold Edge Connectors",
1724
- "description": "Edge connectors made with hard gold"
1692
+ }
1725
1693
  },
1726
1694
  "markings": {
1727
1695
  "type": "object",
@@ -1751,10 +1719,7 @@
1751
1719
  "serial_number_increase_by": {
1752
1720
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/markings/serial_number_increase_by"
1753
1721
  }
1754
- },
1755
- "aliases": "",
1756
- "name": "Markings",
1757
- "description": "Physical markings on the board"
1722
+ }
1758
1723
  },
1759
1724
  "standards": {
1760
1725
  "type": "object",
@@ -1835,10 +1800,7 @@
1835
1800
  "ipc_6018": {
1836
1801
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/standards/ipc_6018"
1837
1802
  }
1838
- },
1839
- "aliases": "",
1840
- "name": "Standards and Requirements",
1841
- "description": "If the format is boolean and nothing is stated other than the name of the standard in the Decription column, it should be understood as follows: Are to be met (if Specification), required (in Profile) or possible (in Capability)"
1803
+ }
1842
1804
  },
1843
1805
  "testing": {
1844
1806
  "type": "object",
@@ -1862,10 +1824,7 @@
1862
1824
  "impedance": {
1863
1825
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/testing/impedance"
1864
1826
  }
1865
- },
1866
- "aliases": "",
1867
- "name": "Testing",
1868
- "description": ""
1827
+ }
1869
1828
  },
1870
1829
  "country_of_origin": {
1871
1830
  "type": "object",
@@ -1883,10 +1842,7 @@
1883
1842
  "eu_member": {
1884
1843
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/country_of_origin/eu_member"
1885
1844
  }
1886
- },
1887
- "aliases": "",
1888
- "name": "Country of Origin",
1889
- "description": "Country of Origin is the country where the Printed Circuit Board is manufactured."
1845
+ }
1890
1846
  },
1891
1847
  "conflict_resolution": {
1892
1848
  "type": "object",
@@ -1913,10 +1869,7 @@
1913
1869
  "gerber": {
1914
1870
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conflict_resolution/gerber"
1915
1871
  }
1916
- },
1917
- "aliases": "",
1918
- "name": "Conflict resolution",
1919
- "description": "If several sources of data is present, this hierarchy is to set how to solve conflicts. Please specify a number to indicate priority and avoid setting the same number twice."
1872
+ }
1920
1873
  },
1921
1874
  "holes": {
1922
1875
  "type": "array",
@@ -1927,10 +1880,7 @@
1927
1880
  "plated": {
1928
1881
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/holes/plated"
1929
1882
  }
1930
- },
1931
- "aliases": "",
1932
- "name": "Holes",
1933
- "description": "One for each holes process, or at least one that sums up the minimum requirements"
1883
+ }
1934
1884
  }
1935
1885
  },
1936
1886
  "allowed_modifications": {
@@ -1949,10 +1899,7 @@
1949
1899
  "add_tear_drops": {
1950
1900
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/allowed_modifications/add_tear_drops"
1951
1901
  }
1952
- },
1953
- "aliases": "",
1954
- "name": "Allowed Modifications",
1955
- "description": "Changes/fabrication decisions that are allowed to make to the files provided."
1902
+ }
1956
1903
  }
1957
1904
  }
1958
1905
  }
@@ -1976,65 +1923,54 @@
1976
1923
  "properties": {
1977
1924
  "count": {
1978
1925
  "type": "array",
1926
+ "minItems": 2,
1927
+ "maxItems": 2,
1979
1928
  "items": {
1980
- "type": "number",
1981
- "uniqueItems": true,
1982
- "minItems": 2,
1983
- "maxItems": 2
1929
+ "type": "number"
1984
1930
  }
1985
1931
  },
1986
1932
  "minimum_internal_track_width": {
1987
1933
  "type": "array",
1934
+ "minItems": 2,
1935
+ "maxItems": 2,
1988
1936
  "items": {
1989
- "type": "number",
1990
- "uniqueItems": true,
1991
- "minItems": 2,
1992
- "maxItems": 2
1937
+ "type": "number"
1993
1938
  }
1994
1939
  },
1995
1940
  "minimum_external_track_width": {
1996
1941
  "type": "array",
1942
+ "minItems": 2,
1943
+ "maxItems": 2,
1997
1944
  "items": {
1998
- "type": "number",
1999
- "uniqueItems": true,
2000
- "minItems": 2,
2001
- "maxItems": 2
1945
+ "type": "number"
2002
1946
  }
2003
1947
  },
2004
1948
  "minimum_internal_spacing_width": {
2005
1949
  "type": "array",
1950
+ "minItems": 2,
1951
+ "maxItems": 2,
2006
1952
  "items": {
2007
- "type": "number",
2008
- "uniqueItems": true,
2009
- "minItems": 2,
2010
- "maxItems": 2
1953
+ "type": "number"
2011
1954
  }
2012
1955
  },
2013
1956
  "minimum_external_spacing_width": {
2014
1957
  "type": "array",
1958
+ "minItems": 2,
1959
+ "maxItems": 2,
2015
1960
  "items": {
2016
- "type": "number",
2017
- "uniqueItems": true,
2018
- "minItems": 2,
2019
- "maxItems": 2
1961
+ "type": "number"
2020
1962
  }
2021
1963
  },
2022
1964
  "external_base_copper_thickness": {
2023
1965
  "type": "array",
2024
1966
  "items": {
2025
- "type": "number",
2026
- "uniqueItems": true,
2027
- "minItems": 2,
2028
- "maxItems": 2
1967
+ "type": "number"
2029
1968
  }
2030
1969
  },
2031
1970
  "internal_base_copper_thickness": {
2032
1971
  "type": "array",
2033
1972
  "items": {
2034
- "type": "number",
2035
- "uniqueItems": true,
2036
- "minItems": 2,
2037
- "maxItems": 2
1973
+ "type": "number"
2038
1974
  }
2039
1975
  },
2040
1976
  "copper_foil_roughness": {
@@ -2043,6 +1979,13 @@
2043
1979
  "type": "string",
2044
1980
  "uniqueItems": true
2045
1981
  }
1982
+ },
1983
+ "copper_foil_type": {
1984
+ "type": "array",
1985
+ "items": {
1986
+ "type": "string",
1987
+ "uniqueItems": true
1988
+ }
2046
1989
  }
2047
1990
  }
2048
1991
  },
@@ -2052,56 +1995,46 @@
2052
1995
  "properties": {
2053
1996
  "minimum_internal_track_width": {
2054
1997
  "type": "array",
1998
+ "minItems": 2,
1999
+ "maxItems": 2,
2055
2000
  "items": {
2056
- "type": "number",
2057
- "uniqueItems": true,
2058
- "minItems": 2,
2059
- "maxItems": 2
2001
+ "type": "number"
2060
2002
  }
2061
2003
  },
2062
2004
  "minimum_external_track_width": {
2063
2005
  "type": "array",
2006
+ "minItems": 2,
2007
+ "maxItems": 2,
2064
2008
  "items": {
2065
- "type": "number",
2066
- "uniqueItems": true,
2067
- "minItems": 2,
2068
- "maxItems": 2
2009
+ "type": "number"
2069
2010
  }
2070
2011
  },
2071
2012
  "minimum_internal_spacing_width": {
2072
2013
  "type": "array",
2014
+ "minItems": 2,
2015
+ "maxItems": 2,
2073
2016
  "items": {
2074
- "type": "number",
2075
- "uniqueItems": true,
2076
- "minItems": 2,
2077
- "maxItems": 2
2017
+ "type": "number"
2078
2018
  }
2079
2019
  },
2080
2020
  "minimum_external_spacing_width": {
2081
2021
  "type": "array",
2022
+ "minItems": 2,
2023
+ "maxItems": 2,
2082
2024
  "items": {
2083
- "type": "number",
2084
- "uniqueItems": true,
2085
- "minItems": 2,
2086
- "maxItems": 2
2025
+ "type": "number"
2087
2026
  }
2088
2027
  },
2089
2028
  "external_base_copper_thickness": {
2090
2029
  "type": "array",
2091
2030
  "items": {
2092
- "type": "number",
2093
- "uniqueItems": true,
2094
- "minItems": 2,
2095
- "maxItems": 2
2031
+ "type": "number"
2096
2032
  }
2097
2033
  },
2098
2034
  "internal_base_copper_thickness": {
2099
2035
  "type": "array",
2100
2036
  "items": {
2101
- "type": "number",
2102
- "uniqueItems": true,
2103
- "minItems": 2,
2104
- "maxItems": 2
2037
+ "type": "number"
2105
2038
  }
2106
2039
  },
2107
2040
  "copper_foil_roughness": {
@@ -2110,6 +2043,13 @@
2110
2043
  "type": "string",
2111
2044
  "uniqueItems": true
2112
2045
  }
2046
+ },
2047
+ "copper_foil_type": {
2048
+ "type": "array",
2049
+ "items": {
2050
+ "type": "string",
2051
+ "uniqueItems": true
2052
+ }
2113
2053
  }
2114
2054
  }
2115
2055
  },
@@ -2126,44 +2066,124 @@
2126
2066
  "uniqueItems": true
2127
2067
  }
2128
2068
  }
2129
- },
2130
- "aliases": "Surfacefinish, Surface finish, Coating, finalfinish, Solderable finish, Solderable coating",
2131
- "name": "Final Finish",
2132
- "description": "A list of final finishes, can be more than one. E.g. selective finish ENIG and OSP."
2069
+ }
2133
2070
  }
2134
2071
  },
2135
2072
  "dielectric": {
2136
- "type": "array",
2137
- "items": {
2138
- "type": "object",
2139
- "additionalProperties": false,
2140
- "required": ["name"],
2141
- "properties": {
2142
- "name": {
2143
- "type": "array",
2144
- "items": {
2145
- "type": "string",
2146
- "uniqueItems": true
2147
- }
2073
+ "type": "object",
2074
+ "properties": {
2075
+ "ipc_4101_sheet": {
2076
+ "type": "array",
2077
+ "items": {
2078
+ "type": "number",
2079
+ "uniqueItems": true
2148
2080
  }
2149
2081
  },
2150
- "aliases": "Laminate",
2151
- "name": "Dielectric",
2152
- "description": "A list of one of more materials used as dielectric. Every material listed here must have be listed in the materials section with the name of the material as the key. This element is a list and can contain several items"
2153
- }
2154
- },
2155
- "soldermask": {
2156
- "type": "array",
2157
- "items": {
2158
- "type": "object",
2159
- "additionalProperties": false,
2160
- "properties": {
2161
- "color": {
2162
- "type": "array",
2163
- "items": {
2164
- "type": "string",
2165
- "uniqueItems": true
2166
- }
2082
+ "ipc_4103_sheet": {
2083
+ "type": "array",
2084
+ "items": {
2085
+ "type": "number",
2086
+ "uniqueItems": true
2087
+ }
2088
+ },
2089
+ "ipc_4204_sheet": {
2090
+ "type": "array",
2091
+ "items": {
2092
+ "type": "number",
2093
+ "uniqueItems": true
2094
+ }
2095
+ },
2096
+ "tg_min": {
2097
+ "type": "array",
2098
+ "items": {
2099
+ "type": "number",
2100
+ "uniqueItems": true
2101
+ }
2102
+ },
2103
+ "tg_range_from": {
2104
+ "type": "array",
2105
+ "items": {
2106
+ "type": "number",
2107
+ "uniqueItems": true
2108
+ }
2109
+ },
2110
+ "tg_range_to": {
2111
+ "type": "array",
2112
+ "items": {
2113
+ "type": "number",
2114
+ "uniqueItems": true
2115
+ }
2116
+ },
2117
+ "td_min": {
2118
+ "type": "array",
2119
+ "items": {
2120
+ "type": "number",
2121
+ "uniqueItems": true
2122
+ }
2123
+ },
2124
+ "td_range_from": {
2125
+ "type": "array",
2126
+ "items": {
2127
+ "type": "number",
2128
+ "uniqueItems": true
2129
+ }
2130
+ },
2131
+ "halogen_free": {
2132
+ "type": "array",
2133
+ "items": {
2134
+ "type": "boolean",
2135
+ "uniqueItems": true
2136
+ }
2137
+ },
2138
+ "rw_en45545_2_2013": {
2139
+ "type": "array",
2140
+ "items": {
2141
+ "type": "boolean",
2142
+ "uniqueItems": true
2143
+ }
2144
+ },
2145
+ "rw_uni_cei_11170_3": {
2146
+ "type": "array",
2147
+ "items": {
2148
+ "type": "boolean",
2149
+ "uniqueItems": true
2150
+ }
2151
+ },
2152
+ "rw_nfpa_130": {
2153
+ "type": "array",
2154
+ "items": {
2155
+ "type": "boolean",
2156
+ "uniqueItems": true
2157
+ }
2158
+ },
2159
+ "ul": {
2160
+ "type": "array",
2161
+ "items": {
2162
+ "type": "boolean",
2163
+ "uniqueItems": true
2164
+ }
2165
+ },
2166
+ "accept_equivalent": {
2167
+ "type": "array",
2168
+ "items": {
2169
+ "type": "boolean",
2170
+ "uniqueItems": true
2171
+ }
2172
+ }
2173
+ }
2174
+ },
2175
+ "soldermask": {
2176
+ "type": "array",
2177
+ "items": {
2178
+ "type": "object",
2179
+ "additionalProperties": false,
2180
+ "properties": {
2181
+ "color": {
2182
+ "type": "array",
2183
+ "items": {
2184
+ "type": "string",
2185
+ "uniqueItems": true
2186
+ }
2167
2187
  },
2168
2188
  "finish": {
2169
2189
  "type": "array",
@@ -2200,10 +2220,7 @@
2200
2220
  "uniqueItems": true
2201
2221
  }
2202
2222
  }
2203
- },
2204
- "aliases": "solder mask, sm, solder resist, green mask",
2205
- "name": "Soldermask",
2206
- "description": "A list of final soldermasks, can be more than one"
2223
+ }
2207
2224
  }
2208
2225
  },
2209
2226
  "legend": {
@@ -2231,10 +2248,7 @@
2231
2248
  "uniqueItems": true
2232
2249
  }
2233
2250
  }
2234
- },
2235
- "aliases": "silk screen, silkscreen, ink, ident",
2236
- "name": "Legend",
2237
- "description": "The legend to be used on the board"
2251
+ }
2238
2252
  },
2239
2253
  "stiffener": {
2240
2254
  "type": "object",
@@ -2242,11 +2256,10 @@
2242
2256
  "properties": {
2243
2257
  "size": {
2244
2258
  "type": "array",
2259
+ "minItems": 2,
2260
+ "maxItems": 2,
2245
2261
  "items": {
2246
- "type": "number",
2247
- "uniqueItems": true,
2248
- "minItems": 2,
2249
- "maxItems": 2
2262
+ "type": "number"
2250
2263
  }
2251
2264
  },
2252
2265
  "placement": {
@@ -2263,10 +2276,7 @@
2263
2276
  "uniqueItems": true
2264
2277
  }
2265
2278
  }
2266
- },
2267
- "aliases": "support",
2268
- "name": "Stiffener",
2269
- "description": "Stiffener in flexible boards"
2279
+ }
2270
2280
  },
2271
2281
  "coverlay": {
2272
2282
  "type": "object",
@@ -2274,11 +2284,10 @@
2274
2284
  "properties": {
2275
2285
  "total_thickness": {
2276
2286
  "type": "array",
2287
+ "minItems": 2,
2288
+ "maxItems": 2,
2277
2289
  "items": {
2278
- "type": "number",
2279
- "uniqueItems": true,
2280
- "minItems": 2,
2281
- "maxItems": 2
2290
+ "type": "number"
2282
2291
  }
2283
2292
  },
2284
2293
  "top": {
@@ -2302,10 +2311,7 @@
2302
2311
  "uniqueItems": true
2303
2312
  }
2304
2313
  }
2305
- },
2306
- "aliases": "",
2307
- "name": "CoverLay",
2308
- "description": ""
2314
+ }
2309
2315
  },
2310
2316
  "peelable_mask": {
2311
2317
  "type": "object",
@@ -2313,11 +2319,10 @@
2313
2319
  "properties": {
2314
2320
  "heating_operations": {
2315
2321
  "type": "array",
2322
+ "minItems": 2,
2323
+ "maxItems": 2,
2316
2324
  "items": {
2317
- "type": "number",
2318
- "uniqueItems": true,
2319
- "minItems": 2,
2320
- "maxItems": 2
2325
+ "type": "number"
2321
2326
  }
2322
2327
  },
2323
2328
  "top": {
@@ -2334,10 +2339,7 @@
2334
2339
  "uniqueItems": true
2335
2340
  }
2336
2341
  }
2337
- },
2338
- "aliases": "",
2339
- "name": "Peelable mask",
2340
- "description": ""
2342
+ }
2341
2343
  },
2342
2344
  "kapton_tape": {
2343
2345
  "type": "object",
@@ -2364,10 +2366,7 @@
2364
2366
  "uniqueItems": true
2365
2367
  }
2366
2368
  }
2367
- },
2368
- "aliases": "",
2369
- "name": "Kapton tape",
2370
- "description": ""
2369
+ }
2371
2370
  },
2372
2371
  "conductive_carbon_print": {
2373
2372
  "type": "object",
@@ -2387,10 +2386,7 @@
2387
2386
  "uniqueItems": true
2388
2387
  }
2389
2388
  }
2390
- },
2391
- "aliases": "",
2392
- "name": "Conductive carbon print",
2393
- "description": ""
2389
+ }
2394
2390
  },
2395
2391
  "silver_print": {
2396
2392
  "type": "object",
@@ -2410,10 +2406,7 @@
2410
2406
  "uniqueItems": true
2411
2407
  }
2412
2408
  }
2413
- },
2414
- "aliases": "",
2415
- "name": "Silver print tape",
2416
- "description": ""
2409
+ }
2417
2410
  },
2418
2411
  "inner_packaging": {
2419
2412
  "type": "object",
@@ -2454,10 +2447,7 @@
2454
2447
  "uniqueItems": true
2455
2448
  }
2456
2449
  }
2457
- },
2458
- "aliases": "",
2459
- "name": "Inner Packaging",
2460
- "description": "This describes how boards are packed together to be shipped. Part of IPC 1601 (4.2.2)"
2450
+ }
2461
2451
  },
2462
2452
  "via_protection": {
2463
2453
  "type": "object",
@@ -2526,10 +2516,7 @@
2526
2516
  "uniqueItems": true
2527
2517
  }
2528
2518
  }
2529
- },
2530
- "aliases": "",
2531
- "name": "Via Protection",
2532
- "description": "The via/hole protection according to IPC 4761"
2519
+ }
2533
2520
  },
2534
2521
  "board": {
2535
2522
  "type": "object",
@@ -2537,35 +2524,29 @@
2537
2524
  "properties": {
2538
2525
  "size_x": {
2539
2526
  "type": "array",
2527
+ "minItems": 2,
2528
+ "maxItems": 2,
2540
2529
  "items": {
2541
- "type": "number",
2542
- "uniqueItems": true,
2543
- "minItems": 2,
2544
- "maxItems": 2
2530
+ "type": "number"
2545
2531
  }
2546
2532
  },
2547
2533
  "size_y": {
2548
2534
  "type": "array",
2535
+ "minItems": 2,
2536
+ "maxItems": 2,
2549
2537
  "items": {
2550
- "type": "number",
2551
- "uniqueItems": true,
2552
- "minItems": 2,
2553
- "maxItems": 2
2538
+ "type": "number"
2554
2539
  }
2555
2540
  },
2556
2541
  "thickness": {
2557
2542
  "type": "array",
2543
+ "minItems": 2,
2544
+ "maxItems": 2,
2558
2545
  "items": {
2559
- "type": "number",
2560
- "uniqueItems": true,
2561
- "minItems": 2,
2562
- "maxItems": 2
2546
+ "type": "number"
2563
2547
  }
2564
2548
  }
2565
- },
2566
- "aliases": "",
2567
- "name": "Board",
2568
- "description": "The physical description of the board"
2549
+ }
2569
2550
  },
2570
2551
  "array": {
2571
2552
  "type": "object",
@@ -2573,110 +2554,98 @@
2573
2554
  "properties": {
2574
2555
  "size_x": {
2575
2556
  "type": "array",
2557
+ "minItems": 2,
2558
+ "maxItems": 2,
2576
2559
  "items": {
2577
- "type": "number",
2578
- "uniqueItems": true,
2579
- "minItems": 2,
2580
- "maxItems": 2
2560
+ "type": "number"
2581
2561
  }
2582
2562
  },
2583
2563
  "size_y": {
2584
2564
  "type": "array",
2565
+ "minItems": 2,
2566
+ "maxItems": 2,
2585
2567
  "items": {
2586
- "type": "number",
2587
- "uniqueItems": true,
2588
- "minItems": 2,
2589
- "maxItems": 2
2568
+ "type": "number"
2590
2569
  }
2591
2570
  },
2592
2571
  "boards_x": {
2593
2572
  "type": "array",
2573
+ "minItems": 2,
2574
+ "maxItems": 2,
2594
2575
  "items": {
2595
- "type": "number",
2596
- "uniqueItems": true,
2597
- "minItems": 2,
2598
- "maxItems": 2
2576
+ "type": "number"
2599
2577
  }
2600
2578
  },
2601
2579
  "boards_y": {
2602
2580
  "type": "array",
2581
+ "minItems": 2,
2582
+ "maxItems": 2,
2603
2583
  "items": {
2604
- "type": "number",
2605
- "uniqueItems": true,
2606
- "minItems": 2,
2607
- "maxItems": 2
2584
+ "type": "number"
2608
2585
  }
2609
2586
  },
2610
2587
  "boards_total": {
2611
2588
  "type": "array",
2589
+ "minItems": 2,
2590
+ "maxItems": 2,
2612
2591
  "items": {
2613
- "type": "number",
2614
- "uniqueItems": true,
2615
- "minItems": 2,
2616
- "maxItems": 2
2592
+ "type": "number"
2617
2593
  }
2618
2594
  },
2619
2595
  "border_left": {
2620
2596
  "type": "array",
2597
+ "minItems": 2,
2598
+ "maxItems": 2,
2621
2599
  "items": {
2622
- "type": "number",
2623
- "uniqueItems": true,
2624
- "minItems": 2,
2625
- "maxItems": 2
2600
+ "type": "number"
2626
2601
  }
2627
2602
  },
2628
2603
  "border_right": {
2629
2604
  "type": "array",
2605
+ "minItems": 2,
2606
+ "maxItems": 2,
2630
2607
  "items": {
2631
- "type": "number",
2632
- "uniqueItems": true,
2633
- "minItems": 2,
2634
- "maxItems": 2
2608
+ "type": "number"
2635
2609
  }
2636
2610
  },
2637
2611
  "border_top": {
2638
2612
  "type": "array",
2613
+ "minItems": 2,
2614
+ "maxItems": 2,
2639
2615
  "items": {
2640
- "type": "number",
2641
- "uniqueItems": true,
2642
- "minItems": 2,
2643
- "maxItems": 2
2616
+ "type": "number"
2644
2617
  }
2645
2618
  },
2646
2619
  "border_bottom": {
2647
2620
  "type": "array",
2621
+ "minItems": 2,
2622
+ "maxItems": 2,
2648
2623
  "items": {
2649
- "type": "number",
2650
- "uniqueItems": true,
2651
- "minItems": 2,
2652
- "maxItems": 2
2624
+ "type": "number"
2653
2625
  }
2654
2626
  },
2655
2627
  "board_spacing_x": {
2656
2628
  "type": "array",
2629
+ "minItems": 2,
2630
+ "maxItems": 2,
2657
2631
  "items": {
2658
- "type": "number",
2659
- "uniqueItems": true,
2660
- "minItems": 2,
2661
- "maxItems": 2
2632
+ "type": "number"
2662
2633
  }
2663
2634
  },
2664
2635
  "board_spacing_y": {
2665
2636
  "type": "array",
2637
+ "minItems": 2,
2638
+ "maxItems": 2,
2666
2639
  "items": {
2667
- "type": "number",
2668
- "uniqueItems": true,
2669
- "minItems": 2,
2670
- "maxItems": 2
2640
+ "type": "number"
2671
2641
  }
2672
2642
  },
2673
2643
  "fiducials_size": {
2674
2644
  "type": "array",
2645
+ "minItems": 2,
2646
+ "maxItems": 2,
2675
2647
  "items": {
2676
- "type": "number",
2677
- "uniqueItems": true,
2678
- "minItems": 2,
2679
- "maxItems": 2
2648
+ "type": "number"
2680
2649
  }
2681
2650
  },
2682
2651
  "fiducials_shape": {
@@ -2702,20 +2671,18 @@
2702
2671
  },
2703
2672
  "tooling_holes_number": {
2704
2673
  "type": "array",
2674
+ "minItems": 2,
2675
+ "maxItems": 2,
2705
2676
  "items": {
2706
- "type": "number",
2707
- "uniqueItems": true,
2708
- "minItems": 2,
2709
- "maxItems": 2
2677
+ "type": "number"
2710
2678
  }
2711
2679
  },
2712
2680
  "tooling_holes_size": {
2713
2681
  "type": "array",
2682
+ "minItems": 2,
2683
+ "maxItems": 2,
2714
2684
  "items": {
2715
- "type": "number",
2716
- "uniqueItems": true,
2717
- "minItems": 2,
2718
- "maxItems": 2
2685
+ "type": "number"
2719
2686
  }
2720
2687
  },
2721
2688
  "x_outs_allowed": {
@@ -2727,11 +2694,10 @@
2727
2694
  },
2728
2695
  "x_outs_max_percentage_on_array": {
2729
2696
  "type": "array",
2697
+ "minItems": 2,
2698
+ "maxItems": 2,
2730
2699
  "items": {
2731
- "type": "number",
2732
- "uniqueItems": true,
2733
- "minItems": 2,
2734
- "maxItems": 2
2700
+ "type": "number"
2735
2701
  }
2736
2702
  },
2737
2703
  "transplant_board_allowed": {
@@ -2831,10 +2797,7 @@
2831
2797
  "uniqueItems": true
2832
2798
  }
2833
2799
  }
2834
- },
2835
- "aliases": "",
2836
- "name": "Mechanical processes",
2837
- "description": "Mechanical processes in the manufacturing"
2800
+ }
2838
2801
  },
2839
2802
  "selective_plated_pads": {
2840
2803
  "type": "object",
@@ -2847,10 +2810,7 @@
2847
2810
  "uniqueItems": true
2848
2811
  }
2849
2812
  }
2850
- },
2851
- "aliases": "selective hard gold",
2852
- "name": "Selective plated pads",
2853
- "description": "Selective plated pads"
2813
+ }
2854
2814
  },
2855
2815
  "hard_gold_edge_connectors": {
2856
2816
  "type": "object",
@@ -2870,10 +2830,7 @@
2870
2830
  "uniqueItems": true
2871
2831
  }
2872
2832
  }
2873
- },
2874
- "aliases": "gold fingers",
2875
- "name": "Hard Gold Edge Connectors",
2876
- "description": "Edge connectors made with hard gold"
2833
+ }
2877
2834
  },
2878
2835
  "markings": {
2879
2836
  "type": "object",
@@ -2906,10 +2863,7 @@
2906
2863
  "uniqueItems": true
2907
2864
  }
2908
2865
  }
2909
- },
2910
- "aliases": "",
2911
- "name": "Markings",
2912
- "description": "Physical markings on the board"
2866
+ }
2913
2867
  },
2914
2868
  "standards": {
2915
2869
  "type": "object",
@@ -3090,10 +3044,7 @@
3090
3044
  "uniqueItems": true
3091
3045
  }
3092
3046
  }
3093
- },
3094
- "aliases": "",
3095
- "name": "Standards and Requirements",
3096
- "description": "If the format is boolean and nothing is stated other than the name of the standard in the Decription column, it should be understood as follows: Are to be met (if Specification), required (in Profile) or possible (in Capability)"
3047
+ }
3097
3048
  },
3098
3049
  "testing": {
3099
3050
  "type": "object",
@@ -3141,10 +3092,7 @@
3141
3092
  "uniqueItems": true
3142
3093
  }
3143
3094
  }
3144
- },
3145
- "aliases": "",
3146
- "name": "Testing",
3147
- "description": ""
3095
+ }
3148
3096
  },
3149
3097
  "country_of_origin": {
3150
3098
  "type": "object",
@@ -3178,10 +3126,7 @@
3178
3126
  "uniqueItems": true
3179
3127
  }
3180
3128
  }
3181
- },
3182
- "aliases": "",
3183
- "name": "Country of Origin",
3184
- "description": "Country of Origin is the country where the Printed Circuit Board is manufactured."
3129
+ }
3185
3130
  },
3186
3131
  "holes": {
3187
3132
  "type": "array",
@@ -3196,10 +3141,7 @@
3196
3141
  "uniqueItems": true
3197
3142
  }
3198
3143
  }
3199
- },
3200
- "aliases": "",
3201
- "name": "Holes",
3202
- "description": "One for each holes process, or at least one that sums up the minimum requirements"
3144
+ }
3203
3145
  }
3204
3146
  },
3205
3147
  "allowed_modifications": {
@@ -3234,10 +3176,7 @@
3234
3176
  "uniqueItems": true
3235
3177
  }
3236
3178
  }
3237
- },
3238
- "aliases": "",
3239
- "name": "Allowed Modifications",
3240
- "description": "Changes/fabrication decisions that are allowed to make to the files provided."
3179
+ }
3241
3180
  }
3242
3181
  }
3243
3182
  }
@@ -3261,6 +3200,9 @@
3261
3200
  "properties": {
3262
3201
  "copper_foil_roughness": {
3263
3202
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
3203
+ },
3204
+ "copper_foil_type": {
3205
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
3264
3206
  }
3265
3207
  }
3266
3208
  },
@@ -3270,6 +3212,9 @@
3270
3212
  "properties": {
3271
3213
  "copper_foil_roughness": {
3272
3214
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_roughness"
3215
+ },
3216
+ "copper_foil_type": {
3217
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conductive_layer/copper_foil_type"
3273
3218
  }
3274
3219
  }
3275
3220
  },
@@ -3318,26 +3263,54 @@
3318
3263
  "nickel_thickness_max": {
3319
3264
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/thickness_max_micron"
3320
3265
  }
3321
- },
3322
- "aliases": "Surfacefinish, Surface finish, Coating, finalfinish, Solderable finish, Solderable coating",
3323
- "name": "Final Finish",
3324
- "description": "A list of final finishes, can be more than one. E.g. selective finish ENIG and OSP."
3266
+ }
3325
3267
  }
3326
3268
  },
3327
3269
  "dielectric": {
3328
- "type": "array",
3329
- "items": {
3330
- "type": "object",
3331
- "additionalProperties": false,
3332
- "required": ["name"],
3333
- "properties": {
3334
- "name": {
3335
- "type": "string"
3336
- }
3270
+ "type": "object",
3271
+ "properties": {
3272
+ "ipc_4101_sheet": {
3273
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4101_sheet"
3337
3274
  },
3338
- "aliases": "Laminate",
3339
- "name": "Dielectric",
3340
- "description": "A list of one of more materials used as dielectric. Every material listed here must have be listed in the materials section with the name of the material as the key. This element is a list and can contain several items"
3275
+ "ipc_4103_sheet": {
3276
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4103_sheet"
3277
+ },
3278
+ "ipc_4204_sheet": {
3279
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4204_sheet"
3280
+ },
3281
+ "tg_min": {
3282
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_min"
3283
+ },
3284
+ "tg_range_from": {
3285
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_range_from"
3286
+ },
3287
+ "tg_range_to": {
3288
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_range_to"
3289
+ },
3290
+ "td_min": {
3291
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/td_min"
3292
+ },
3293
+ "td_range_from": {
3294
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/td_range_to"
3295
+ },
3296
+ "halogen_free": {
3297
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/halogen_free"
3298
+ },
3299
+ "rw_en45545_2_2013": {
3300
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_nf_f_16_101"
3301
+ },
3302
+ "rw_uni_cei_11170_3": {
3303
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_uni_cei_11170_3"
3304
+ },
3305
+ "rw_nfpa_130": {
3306
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_nfpa_130"
3307
+ },
3308
+ "ul": {
3309
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ul"
3310
+ },
3311
+ "accept_equivalent": {
3312
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/accept_equivalent"
3313
+ }
3341
3314
  }
3342
3315
  },
3343
3316
  "soldermask": {
@@ -3370,10 +3343,7 @@
3370
3343
  "allow_touchups": {
3371
3344
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/soldermask/allow_touchups"
3372
3345
  }
3373
- },
3374
- "aliases": "solder mask, sm, solder resist, green mask",
3375
- "name": "Soldermask",
3376
- "description": "A list of final soldermasks, can be more than one"
3346
+ }
3377
3347
  }
3378
3348
  },
3379
3349
  "legend": {
@@ -3389,10 +3359,7 @@
3389
3359
  "bottom": {
3390
3360
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
3391
3361
  }
3392
- },
3393
- "aliases": "silk screen, silkscreen, ink, ident",
3394
- "name": "Legend",
3395
- "description": "The legend to be used on the board"
3362
+ }
3396
3363
  },
3397
3364
  "stiffener": {
3398
3365
  "type": "object",
@@ -3410,10 +3377,7 @@
3410
3377
  "material": {
3411
3378
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/stiffener/material"
3412
3379
  }
3413
- },
3414
- "aliases": "support",
3415
- "name": "Stiffener",
3416
- "description": "Stiffener in flexible boards"
3380
+ }
3417
3381
  },
3418
3382
  "coverlay": {
3419
3383
  "type": "object",
@@ -3431,10 +3395,7 @@
3431
3395
  "material": {
3432
3396
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/coverlay/material"
3433
3397
  }
3434
- },
3435
- "aliases": "",
3436
- "name": "CoverLay",
3437
- "description": ""
3398
+ }
3438
3399
  },
3439
3400
  "peelable_mask": {
3440
3401
  "type": "object",
@@ -3449,10 +3410,7 @@
3449
3410
  "bottom": {
3450
3411
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
3451
3412
  }
3452
- },
3453
- "aliases": "",
3454
- "name": "Peelable mask",
3455
- "description": ""
3413
+ }
3456
3414
  },
3457
3415
  "kapton_tape": {
3458
3416
  "type": "object",
@@ -3467,10 +3425,7 @@
3467
3425
  "bottom": {
3468
3426
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
3469
3427
  }
3470
- },
3471
- "aliases": "",
3472
- "name": "Kapton tape",
3473
- "description": ""
3428
+ }
3474
3429
  },
3475
3430
  "conductive_carbon_print": {
3476
3431
  "type": "object",
@@ -3482,10 +3437,7 @@
3482
3437
  "bottom": {
3483
3438
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
3484
3439
  }
3485
- },
3486
- "aliases": "",
3487
- "name": "Conductive carbon print",
3488
- "description": ""
3440
+ }
3489
3441
  },
3490
3442
  "silver_print": {
3491
3443
  "type": "object",
@@ -3497,10 +3449,7 @@
3497
3449
  "bottom": {
3498
3450
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/generics/presence_bottom_boolean"
3499
3451
  }
3500
- },
3501
- "aliases": "",
3502
- "name": "Silver print tape",
3503
- "description": ""
3452
+ }
3504
3453
  },
3505
3454
  "inner_packaging": {
3506
3455
  "type": "object",
@@ -3521,10 +3470,7 @@
3521
3470
  "vacuum": {
3522
3471
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/inner_packaging/vacuum"
3523
3472
  }
3524
- },
3525
- "aliases": "",
3526
- "name": "Inner Packaging",
3527
- "description": "This describes how boards are packed together to be shipped. Part of IPC 1601 (4.2.2)"
3473
+ }
3528
3474
  },
3529
3475
  "via_protection": {
3530
3476
  "type": "object",
@@ -3557,10 +3503,7 @@
3557
3503
  "type_7": {
3558
3504
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/via_protection/type_7"
3559
3505
  }
3560
- },
3561
- "aliases": "",
3562
- "name": "Via Protection",
3563
- "description": "The via/hole protection according to IPC 4761"
3506
+ }
3564
3507
  },
3565
3508
  "board": {
3566
3509
  "type": "object",
@@ -3569,10 +3512,7 @@
3569
3512
  "thickness": {
3570
3513
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/board/thickness"
3571
3514
  }
3572
- },
3573
- "aliases": "",
3574
- "name": "Board",
3575
- "description": "The physical description of the board"
3515
+ }
3576
3516
  },
3577
3517
  "array": {
3578
3518
  "type": "object",
@@ -3668,10 +3608,7 @@
3668
3608
  "coin_attachment": {
3669
3609
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/mechanical/coin_attachment"
3670
3610
  }
3671
- },
3672
- "aliases": "",
3673
- "name": "Mechanical processes",
3674
- "description": "Mechanical processes in the manufacturing"
3611
+ }
3675
3612
  },
3676
3613
  "selective_plated_pads": {
3677
3614
  "type": "object",
@@ -3680,17 +3617,14 @@
3680
3617
  "present": {
3681
3618
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/selective_plated_pads/present"
3682
3619
  }
3683
- },
3684
- "aliases": "selective hard gold",
3685
- "name": "Selective plated pads",
3686
- "description": "Selective plated pads"
3620
+ }
3687
3621
  },
3688
3622
  "hard_gold_edge_connectors": {
3689
3623
  "type": "object",
3690
3624
  "additionalProperties": false,
3691
3625
  "properties": {
3692
3626
  "present": {
3693
- "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/hard_edge_connectors/present"
3627
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/hard_gold_edge_connectors/present"
3694
3628
  },
3695
3629
  "thickness": {
3696
3630
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/hard_gold_edge_connectors/thickness"
@@ -3698,10 +3632,7 @@
3698
3632
  "thickness_other": {
3699
3633
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/hard_gold_edge_connectors/thickness_other"
3700
3634
  }
3701
- },
3702
- "aliases": "gold fingers",
3703
- "name": "Hard Gold Edge Connectors",
3704
- "description": "Edge connectors made with hard gold"
3635
+ }
3705
3636
  },
3706
3637
  "markings": {
3707
3638
  "type": "object",
@@ -3731,10 +3662,7 @@
3731
3662
  "serial_number_increase_by": {
3732
3663
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/markings/serial_number_increase_by"
3733
3664
  }
3734
- },
3735
- "aliases": "",
3736
- "name": "Markings",
3737
- "description": "Physical markings on the board"
3665
+ }
3738
3666
  },
3739
3667
  "standards": {
3740
3668
  "type": "object",
@@ -3815,10 +3743,7 @@
3815
3743
  "ipc_6018": {
3816
3744
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/standards/ipc_6018"
3817
3745
  }
3818
- },
3819
- "aliases": "",
3820
- "name": "Standards and Requirements",
3821
- "description": "If the format is boolean and nothing is stated other than the name of the standard in the Decription column, it should be understood as follows: Are to be met (if Specification), required (in Profile) or possible (in Capability)"
3746
+ }
3822
3747
  },
3823
3748
  "testing": {
3824
3749
  "type": "object",
@@ -3842,10 +3767,7 @@
3842
3767
  "impedance": {
3843
3768
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/testing/impedance"
3844
3769
  }
3845
- },
3846
- "aliases": "",
3847
- "name": "Testing",
3848
- "description": ""
3770
+ }
3849
3771
  },
3850
3772
  "country_of_origin": {
3851
3773
  "type": "object",
@@ -3863,10 +3785,7 @@
3863
3785
  "eu_member": {
3864
3786
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/country_of_origin/eu_member"
3865
3787
  }
3866
- },
3867
- "aliases": "",
3868
- "name": "Country of Origin",
3869
- "description": "Country of Origin is the country where the Printed Circuit Board is manufactured."
3788
+ }
3870
3789
  },
3871
3790
  "conflict_resolution": {
3872
3791
  "type": "object",
@@ -3893,10 +3812,7 @@
3893
3812
  "gerber": {
3894
3813
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/conflict_resolution/gerber"
3895
3814
  }
3896
- },
3897
- "aliases": "",
3898
- "name": "Conflict resolution",
3899
- "description": "If several sources of data is present, this hierarchy is to set how to solve conflicts. Please specify a number to indicate priority and avoid setting the same number twice."
3815
+ }
3900
3816
  },
3901
3817
  "holes": {
3902
3818
  "type": "array",
@@ -3907,10 +3823,7 @@
3907
3823
  "plated": {
3908
3824
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/holes/plated"
3909
3825
  }
3910
- },
3911
- "aliases": "",
3912
- "name": "Holes",
3913
- "description": "One for each holes process, or at least one that sums up the minimum requirements"
3826
+ }
3914
3827
  }
3915
3828
  },
3916
3829
  "allowed_modifications": {
@@ -3929,10 +3842,7 @@
3929
3842
  "add_tear_drops": {
3930
3843
  "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/elements/allowed_modifications/add_tear_drops"
3931
3844
  }
3932
- },
3933
- "aliases": "",
3934
- "name": "Allowed Modifications",
3935
- "description": "Changes/fabrication decisions that are allowed to make to the files provided."
3845
+ }
3936
3846
  }
3937
3847
  }
3938
3848
  }
@@ -3959,65 +3869,54 @@
3959
3869
  "properties": {
3960
3870
  "count": {
3961
3871
  "type": "array",
3872
+ "minItems": 2,
3873
+ "maxItems": 2,
3962
3874
  "items": {
3963
- "type": "number",
3964
- "uniqueItems": true,
3965
- "minItems": 2,
3966
- "maxItems": 2
3875
+ "type": "number"
3967
3876
  }
3968
3877
  },
3969
3878
  "minimum_internal_track_width": {
3970
3879
  "type": "array",
3880
+ "minItems": 2,
3881
+ "maxItems": 2,
3971
3882
  "items": {
3972
- "type": "number",
3973
- "uniqueItems": true,
3974
- "minItems": 2,
3975
- "maxItems": 2
3883
+ "type": "number"
3976
3884
  }
3977
3885
  },
3978
3886
  "minimum_external_track_width": {
3979
3887
  "type": "array",
3888
+ "minItems": 2,
3889
+ "maxItems": 2,
3980
3890
  "items": {
3981
- "type": "number",
3982
- "uniqueItems": true,
3983
- "minItems": 2,
3984
- "maxItems": 2
3891
+ "type": "number"
3985
3892
  }
3986
3893
  },
3987
3894
  "minimum_internal_spacing_width": {
3988
3895
  "type": "array",
3896
+ "minItems": 2,
3897
+ "maxItems": 2,
3989
3898
  "items": {
3990
- "type": "number",
3991
- "uniqueItems": true,
3992
- "minItems": 2,
3993
- "maxItems": 2
3899
+ "type": "number"
3994
3900
  }
3995
3901
  },
3996
3902
  "minimum_external_spacing_width": {
3997
3903
  "type": "array",
3904
+ "minItems": 2,
3905
+ "maxItems": 2,
3998
3906
  "items": {
3999
- "type": "number",
4000
- "uniqueItems": true,
4001
- "minItems": 2,
4002
- "maxItems": 2
3907
+ "type": "number"
4003
3908
  }
4004
3909
  },
4005
3910
  "external_base_copper_thickness": {
4006
3911
  "type": "array",
4007
3912
  "items": {
4008
- "type": "number",
4009
- "uniqueItems": true,
4010
- "minItems": 2,
4011
- "maxItems": 2
3913
+ "type": "number"
4012
3914
  }
4013
3915
  },
4014
3916
  "internal_base_copper_thickness": {
4015
3917
  "type": "array",
4016
3918
  "items": {
4017
- "type": "number",
4018
- "uniqueItems": true,
4019
- "minItems": 2,
4020
- "maxItems": 2
3919
+ "type": "number"
4021
3920
  }
4022
3921
  },
4023
3922
  "copper_foil_roughness": {
@@ -4027,13 +3926,19 @@
4027
3926
  "uniqueItems": true
4028
3927
  }
4029
3928
  },
3929
+ "copper_foil_type": {
3930
+ "type": "array",
3931
+ "items": {
3932
+ "type": "string",
3933
+ "uniqueItems": true
3934
+ }
3935
+ },
4030
3936
  "copper_coverage_average": {
4031
3937
  "type": "array",
3938
+ "minItems": 2,
3939
+ "maxItems": 2,
4032
3940
  "items": {
4033
- "type": "number",
4034
- "uniqueItems": true,
4035
- "minItems": 2,
4036
- "maxItems": 2
3941
+ "type": "number"
4037
3942
  }
4038
3943
  }
4039
3944
  }
@@ -4044,65 +3949,54 @@
4044
3949
  "properties": {
4045
3950
  "count": {
4046
3951
  "type": "array",
3952
+ "minItems": 2,
3953
+ "maxItems": 2,
4047
3954
  "items": {
4048
- "type": "number",
4049
- "uniqueItems": true,
4050
- "minItems": 2,
4051
- "maxItems": 2
3955
+ "type": "number"
4052
3956
  }
4053
3957
  },
4054
3958
  "minimum_internal_track_width": {
4055
3959
  "type": "array",
3960
+ "minItems": 2,
3961
+ "maxItems": 2,
4056
3962
  "items": {
4057
- "type": "number",
4058
- "uniqueItems": true,
4059
- "minItems": 2,
4060
- "maxItems": 2
3963
+ "type": "number"
4061
3964
  }
4062
3965
  },
4063
3966
  "minimum_external_track_width": {
4064
3967
  "type": "array",
3968
+ "minItems": 2,
3969
+ "maxItems": 2,
4065
3970
  "items": {
4066
- "type": "number",
4067
- "uniqueItems": true,
4068
- "minItems": 2,
4069
- "maxItems": 2
3971
+ "type": "number"
4070
3972
  }
4071
3973
  },
4072
3974
  "minimum_internal_spacing_width": {
4073
3975
  "type": "array",
3976
+ "minItems": 2,
3977
+ "maxItems": 2,
4074
3978
  "items": {
4075
- "type": "number",
4076
- "uniqueItems": true,
4077
- "minItems": 2,
4078
- "maxItems": 2
3979
+ "type": "number"
4079
3980
  }
4080
3981
  },
4081
3982
  "minimum_external_spacing_width": {
4082
3983
  "type": "array",
3984
+ "minItems": 2,
3985
+ "maxItems": 2,
4083
3986
  "items": {
4084
- "type": "number",
4085
- "uniqueItems": true,
4086
- "minItems": 2,
4087
- "maxItems": 2
3987
+ "type": "number"
4088
3988
  }
4089
3989
  },
4090
3990
  "external_base_copper_thickness": {
4091
3991
  "type": "array",
4092
3992
  "items": {
4093
- "type": "number",
4094
- "uniqueItems": true,
4095
- "minItems": 2,
4096
- "maxItems": 2
3993
+ "type": "number"
4097
3994
  }
4098
3995
  },
4099
3996
  "internal_base_copper_thickness": {
4100
3997
  "type": "array",
4101
3998
  "items": {
4102
- "type": "number",
4103
- "uniqueItems": true,
4104
- "minItems": 2,
4105
- "maxItems": 2
3999
+ "type": "number"
4106
4000
  }
4107
4001
  },
4108
4002
  "copper_foil_roughness": {
@@ -4112,13 +4006,19 @@
4112
4006
  "uniqueItems": true
4113
4007
  }
4114
4008
  },
4009
+ "copper_foil_type": {
4010
+ "type": "array",
4011
+ "items": {
4012
+ "type": "string",
4013
+ "uniqueItems": true
4014
+ }
4015
+ },
4115
4016
  "copper_coverage_average": {
4116
4017
  "type": "array",
4018
+ "minItems": 2,
4019
+ "maxItems": 2,
4117
4020
  "items": {
4118
- "type": "number",
4119
- "uniqueItems": true,
4120
- "minItems": 2,
4121
- "maxItems": 2
4021
+ "type": "number"
4122
4022
  }
4123
4023
  }
4124
4024
  }
@@ -4138,188 +4038,246 @@
4138
4038
  },
4139
4039
  "thickness_min": {
4140
4040
  "type": "array",
4041
+ "minItems": 2,
4042
+ "maxItems": 2,
4141
4043
  "items": {
4142
- "type": "number",
4143
- "uniqueItems": true,
4144
- "minItems": 2,
4145
- "maxItems": 2
4044
+ "type": "number"
4146
4045
  }
4147
4046
  },
4148
4047
  "thickness_max": {
4149
4048
  "type": "array",
4049
+ "minItems": 2,
4050
+ "maxItems": 2,
4150
4051
  "items": {
4151
- "type": "number",
4152
- "uniqueItems": true,
4153
- "minItems": 2,
4154
- "maxItems": 2
4052
+ "type": "number"
4155
4053
  }
4156
4054
  },
4157
4055
  "gold_thickness_min": {
4158
4056
  "type": "array",
4057
+ "minItems": 2,
4058
+ "maxItems": 2,
4159
4059
  "items": {
4160
- "type": "number",
4161
- "uniqueItems": true,
4162
- "minItems": 2,
4163
- "maxItems": 2
4060
+ "type": "number"
4164
4061
  }
4165
4062
  },
4166
4063
  "gold_thickness_max": {
4167
4064
  "type": "array",
4065
+ "minItems": 2,
4066
+ "maxItems": 2,
4168
4067
  "items": {
4169
- "type": "number",
4170
- "uniqueItems": true,
4171
- "minItems": 2,
4172
- "maxItems": 2
4068
+ "type": "number"
4173
4069
  }
4174
4070
  },
4175
4071
  "silver_thickness_min": {
4176
4072
  "type": "array",
4073
+ "minItems": 2,
4074
+ "maxItems": 2,
4177
4075
  "items": {
4178
- "type": "number",
4179
- "uniqueItems": true,
4180
- "minItems": 2,
4181
- "maxItems": 2
4076
+ "type": "number"
4182
4077
  }
4183
4078
  },
4184
4079
  "silver_thickness_max": {
4185
4080
  "type": "array",
4081
+ "minItems": 2,
4082
+ "maxItems": 2,
4186
4083
  "items": {
4187
- "type": "number",
4188
- "uniqueItems": true,
4189
- "minItems": 2,
4190
- "maxItems": 2
4084
+ "type": "number"
4191
4085
  }
4192
4086
  },
4193
4087
  "paladium_thickness_min": {
4194
4088
  "type": "array",
4089
+ "minItems": 2,
4090
+ "maxItems": 2,
4195
4091
  "items": {
4196
- "type": "number",
4197
- "uniqueItems": true,
4198
- "minItems": 2,
4199
- "maxItems": 2
4092
+ "type": "number"
4200
4093
  }
4201
4094
  },
4202
4095
  "paladium_thickness_max": {
4203
4096
  "type": "array",
4204
- "items": {
4205
- "type": "number",
4206
- "uniqueItems": true,
4207
- "minItems": 2,
4208
- "maxItems": 2
4209
- }
4210
- },
4211
- "tin_thickness_min": {
4212
- "type": "array",
4213
- "items": {
4214
- "type": "number",
4215
- "uniqueItems": true,
4216
- "minItems": 2,
4217
- "maxItems": 2
4218
- }
4219
- },
4220
- "tin_thickness_max": {
4221
- "type": "array",
4222
- "items": {
4223
- "type": "number",
4224
- "uniqueItems": true,
4225
- "minItems": 2,
4226
- "maxItems": 2
4227
- }
4228
- },
4229
- "nickel_thickness_min": {
4230
- "type": "array",
4231
- "items": {
4232
- "type": "number",
4233
- "uniqueItems": true,
4234
- "minItems": 2,
4235
- "maxItems": 2
4236
- }
4237
- },
4238
- "nickel_thickness_max": {
4239
- "type": "array",
4240
- "items": {
4241
- "type": "number",
4242
- "uniqueItems": true,
4243
- "minItems": 2,
4244
- "maxItems": 2
4245
- }
4246
- }
4247
- },
4248
- "aliases": "Surfacefinish, Surface finish, Coating, finalfinish, Solderable finish, Solderable coating",
4249
- "name": "Final Finish",
4250
- "description": "A list of final finishes, can be more than one. E.g. selective finish ENIG and OSP."
4251
- }
4252
- },
4253
- "soldermask": {
4254
- "type": "array",
4255
- "items": {
4256
- "type": "object",
4257
- "additionalProperties": false,
4258
- "properties": {
4259
- "color": {
4260
- "type": "array",
4261
- "items": {
4262
- "type": "string",
4263
- "uniqueItems": true
4264
- }
4265
- },
4266
- "finish": {
4267
- "type": "array",
4268
- "items": {
4269
- "type": "string",
4270
- "uniqueItems": true
4271
- }
4272
- },
4273
- "min_thickness": {
4274
- "type": "array",
4275
- "items": {
4276
- "type": "number",
4277
- "uniqueItems": true,
4278
- "minItems": 2,
4279
- "maxItems": 2
4280
- }
4281
- },
4282
- "max_thickness": {
4283
- "type": "array",
4284
- "items": {
4285
- "type": "number",
4286
- "uniqueItems": true,
4287
- "minItems": 2,
4288
- "maxItems": 2
4097
+ "minItems": 2,
4098
+ "maxItems": 2,
4099
+ "items": {
4100
+ "type": "number"
4289
4101
  }
4290
4102
  },
4291
- "material": {
4103
+ "tin_thickness_min": {
4292
4104
  "type": "array",
4105
+ "minItems": 2,
4106
+ "maxItems": 2,
4293
4107
  "items": {
4294
- "type": "string",
4295
- "uniqueItems": true
4108
+ "type": "number"
4296
4109
  }
4297
4110
  },
4298
- "top": {
4111
+ "tin_thickness_max": {
4299
4112
  "type": "array",
4113
+ "minItems": 2,
4114
+ "maxItems": 2,
4300
4115
  "items": {
4301
- "type": "boolean",
4302
- "uniqueItems": true
4116
+ "type": "number"
4303
4117
  }
4304
4118
  },
4305
- "bottom": {
4119
+ "nickel_thickness_min": {
4306
4120
  "type": "array",
4121
+ "minItems": 2,
4122
+ "maxItems": 2,
4307
4123
  "items": {
4308
- "type": "boolean",
4309
- "uniqueItems": true
4124
+ "type": "number"
4310
4125
  }
4311
4126
  },
4312
- "allow_touchups": {
4127
+ "nickel_thickness_max": {
4313
4128
  "type": "array",
4129
+ "minItems": 2,
4130
+ "maxItems": 2,
4314
4131
  "items": {
4315
- "type": "boolean",
4316
- "uniqueItems": true
4132
+ "type": "number"
4317
4133
  }
4318
4134
  }
4135
+ }
4136
+ }
4137
+ },
4138
+ "dielectric": {
4139
+ "type": "object",
4140
+ "properties": {
4141
+ "ipc_4101_sheet": {
4142
+ "type": "array",
4143
+ "items": {
4144
+ "type": "number",
4145
+ "uniqueItems": true
4146
+ }
4147
+ },
4148
+ "ipc_4103_sheet": {
4149
+ "type": "array",
4150
+ "items": {
4151
+ "type": "number",
4152
+ "uniqueItems": true
4153
+ }
4154
+ },
4155
+ "ipc_4204_sheet": {
4156
+ "type": "array",
4157
+ "items": {
4158
+ "type": "number",
4159
+ "uniqueItems": true
4160
+ }
4161
+ },
4162
+ "tg_range_from": {
4163
+ "type": "array",
4164
+ "items": {
4165
+ "type": "number",
4166
+ "uniqueItems": true
4167
+ }
4168
+ },
4169
+ "tg_range_to": {
4170
+ "type": "array",
4171
+ "items": {
4172
+ "type": "number",
4173
+ "uniqueItems": true
4174
+ }
4175
+ },
4176
+ "td_range_from": {
4177
+ "type": "array",
4178
+ "items": {
4179
+ "type": "number",
4180
+ "uniqueItems": true
4181
+ }
4182
+ },
4183
+ "halogen_free": {
4184
+ "type": "array",
4185
+ "items": {
4186
+ "type": "boolean",
4187
+ "uniqueItems": true
4188
+ }
4189
+ },
4190
+ "rw_en45545_2_2013": {
4191
+ "type": "array",
4192
+ "items": {
4193
+ "type": "boolean",
4194
+ "uniqueItems": true
4195
+ }
4196
+ },
4197
+ "rw_uni_cei_11170_3": {
4198
+ "type": "array",
4199
+ "items": {
4200
+ "type": "boolean",
4201
+ "uniqueItems": true
4202
+ }
4203
+ },
4204
+ "rw_nfpa_130": {
4205
+ "type": "array",
4206
+ "items": {
4207
+ "type": "boolean",
4208
+ "uniqueItems": true
4209
+ }
4210
+ },
4211
+ "ul": {
4212
+ "type": "array",
4213
+ "items": {
4214
+ "type": "boolean",
4215
+ "uniqueItems": true
4216
+ }
4217
+ }
4218
+ }
4219
+ },
4220
+ "soldermask": {
4221
+ "type": "object",
4222
+ "properties": {
4223
+ "color": {
4224
+ "type": "array",
4225
+ "items": {
4226
+ "type": "string",
4227
+ "uniqueItems": true
4228
+ }
4229
+ },
4230
+ "finish": {
4231
+ "type": "array",
4232
+ "items": {
4233
+ "type": "string",
4234
+ "uniqueItems": true
4235
+ }
4236
+ },
4237
+ "min_thickness": {
4238
+ "type": "array",
4239
+ "minItems": 2,
4240
+ "maxItems": 2,
4241
+ "items": {
4242
+ "type": "number"
4243
+ }
4244
+ },
4245
+ "max_thickness": {
4246
+ "type": "array",
4247
+ "minItems": 2,
4248
+ "maxItems": 2,
4249
+ "items": {
4250
+ "type": "number"
4251
+ }
4252
+ },
4253
+ "material": {
4254
+ "type": "array",
4255
+ "items": {
4256
+ "type": "string",
4257
+ "uniqueItems": true
4258
+ }
4259
+ },
4260
+ "top": {
4261
+ "type": "array",
4262
+ "items": {
4263
+ "type": "boolean",
4264
+ "uniqueItems": true
4265
+ }
4266
+ },
4267
+ "bottom": {
4268
+ "type": "array",
4269
+ "items": {
4270
+ "type": "boolean",
4271
+ "uniqueItems": true
4272
+ }
4319
4273
  },
4320
- "aliases": "solder mask, sm, solder resist, green mask",
4321
- "name": "Soldermask",
4322
- "description": "A list of final soldermasks, can be more than one"
4274
+ "allow_touchups": {
4275
+ "type": "array",
4276
+ "items": {
4277
+ "type": "boolean",
4278
+ "uniqueItems": true
4279
+ }
4280
+ }
4323
4281
  }
4324
4282
  },
4325
4283
  "legend": {
@@ -4347,10 +4305,7 @@
4347
4305
  "uniqueItems": true
4348
4306
  }
4349
4307
  }
4350
- },
4351
- "aliases": "silk screen, silkscreen, ink, ident",
4352
- "name": "Legend",
4353
- "description": "The legend to be used on the board"
4308
+ }
4354
4309
  },
4355
4310
  "stiffener": {
4356
4311
  "type": "object",
@@ -4358,11 +4313,10 @@
4358
4313
  "properties": {
4359
4314
  "size": {
4360
4315
  "type": "array",
4316
+ "minItems": 2,
4317
+ "maxItems": 2,
4361
4318
  "items": {
4362
- "type": "number",
4363
- "uniqueItems": true,
4364
- "minItems": 2,
4365
- "maxItems": 2
4319
+ "type": "number"
4366
4320
  }
4367
4321
  },
4368
4322
  "placement": {
@@ -4374,11 +4328,10 @@
4374
4328
  },
4375
4329
  "thickness": {
4376
4330
  "type": "array",
4331
+ "minItems": 2,
4332
+ "maxItems": 2,
4377
4333
  "items": {
4378
- "type": "number",
4379
- "uniqueItems": true,
4380
- "minItems": 2,
4381
- "maxItems": 2
4334
+ "type": "number"
4382
4335
  }
4383
4336
  },
4384
4337
  "material": {
@@ -4388,10 +4341,7 @@
4388
4341
  "uniqueItems": true
4389
4342
  }
4390
4343
  }
4391
- },
4392
- "aliases": "support",
4393
- "name": "Stiffener",
4394
- "description": "Stiffener in flexible boards"
4344
+ }
4395
4345
  },
4396
4346
  "coverlay": {
4397
4347
  "type": "object",
@@ -4399,11 +4349,10 @@
4399
4349
  "properties": {
4400
4350
  "total_thickness": {
4401
4351
  "type": "array",
4352
+ "minItems": 2,
4353
+ "maxItems": 2,
4402
4354
  "items": {
4403
- "type": "number",
4404
- "uniqueItems": true,
4405
- "minItems": 2,
4406
- "maxItems": 2
4355
+ "type": "number"
4407
4356
  }
4408
4357
  },
4409
4358
  "top": {
@@ -4427,10 +4376,7 @@
4427
4376
  "uniqueItems": true
4428
4377
  }
4429
4378
  }
4430
- },
4431
- "aliases": "",
4432
- "name": "CoverLay",
4433
- "description": ""
4379
+ }
4434
4380
  },
4435
4381
  "peelable_mask": {
4436
4382
  "type": "object",
@@ -4438,11 +4384,10 @@
4438
4384
  "properties": {
4439
4385
  "heating_operations": {
4440
4386
  "type": "array",
4387
+ "minItems": 2,
4388
+ "maxItems": 2,
4441
4389
  "items": {
4442
- "type": "number",
4443
- "uniqueItems": true,
4444
- "minItems": 2,
4445
- "maxItems": 2
4390
+ "type": "number"
4446
4391
  }
4447
4392
  },
4448
4393
  "top": {
@@ -4459,10 +4404,7 @@
4459
4404
  "uniqueItems": true
4460
4405
  }
4461
4406
  }
4462
- },
4463
- "aliases": "",
4464
- "name": "Peelable mask",
4465
- "description": ""
4407
+ }
4466
4408
  },
4467
4409
  "kapton_tape": {
4468
4410
  "type": "object",
@@ -4489,10 +4431,7 @@
4489
4431
  "uniqueItems": true
4490
4432
  }
4491
4433
  }
4492
- },
4493
- "aliases": "",
4494
- "name": "Kapton tape",
4495
- "description": ""
4434
+ }
4496
4435
  },
4497
4436
  "conductive_carbon_print": {
4498
4437
  "type": "object",
@@ -4512,10 +4451,7 @@
4512
4451
  "uniqueItems": true
4513
4452
  }
4514
4453
  }
4515
- },
4516
- "aliases": "",
4517
- "name": "Conductive carbon print",
4518
- "description": ""
4454
+ }
4519
4455
  },
4520
4456
  "silver_print": {
4521
4457
  "type": "object",
@@ -4535,10 +4471,7 @@
4535
4471
  "uniqueItems": true
4536
4472
  }
4537
4473
  }
4538
- },
4539
- "aliases": "",
4540
- "name": "Silver print tape",
4541
- "description": ""
4474
+ }
4542
4475
  },
4543
4476
  "inner_packaging": {
4544
4477
  "type": "object",
@@ -4579,10 +4512,7 @@
4579
4512
  "uniqueItems": true
4580
4513
  }
4581
4514
  }
4582
- },
4583
- "aliases": "",
4584
- "name": "Inner Packaging",
4585
- "description": "This describes how boards are packed together to be shipped. Part of IPC 1601 (4.2.2)"
4515
+ }
4586
4516
  },
4587
4517
  "via_protection": {
4588
4518
  "type": "object",
@@ -4651,10 +4581,7 @@
4651
4581
  "uniqueItems": true
4652
4582
  }
4653
4583
  }
4654
- },
4655
- "aliases": "",
4656
- "name": "Via Protection",
4657
- "description": "The via/hole protection according to IPC 4761"
4584
+ }
4658
4585
  },
4659
4586
  "board": {
4660
4587
  "type": "object",
@@ -4662,35 +4589,29 @@
4662
4589
  "properties": {
4663
4590
  "size_x": {
4664
4591
  "type": "array",
4592
+ "minItems": 2,
4593
+ "maxItems": 2,
4665
4594
  "items": {
4666
- "type": "number",
4667
- "uniqueItems": true,
4668
- "minItems": 2,
4669
- "maxItems": 2
4595
+ "type": "number"
4670
4596
  }
4671
4597
  },
4672
4598
  "size_y": {
4673
4599
  "type": "array",
4600
+ "minItems": 2,
4601
+ "maxItems": 2,
4674
4602
  "items": {
4675
- "type": "number",
4676
- "uniqueItems": true,
4677
- "minItems": 2,
4678
- "maxItems": 2
4603
+ "type": "number"
4679
4604
  }
4680
4605
  },
4681
4606
  "thickness": {
4682
4607
  "type": "array",
4608
+ "minItems": 2,
4609
+ "maxItems": 2,
4683
4610
  "items": {
4684
- "type": "number",
4685
- "uniqueItems": true,
4686
- "minItems": 2,
4687
- "maxItems": 2
4611
+ "type": "number"
4688
4612
  }
4689
4613
  }
4690
- },
4691
- "aliases": "",
4692
- "name": "Board",
4693
- "description": "The physical description of the board"
4614
+ }
4694
4615
  },
4695
4616
  "mechanical": {
4696
4617
  "type": "object",
@@ -4780,10 +4701,7 @@
4780
4701
  "uniqueItems": true
4781
4702
  }
4782
4703
  }
4783
- },
4784
- "aliases": "",
4785
- "name": "Mechanical processes",
4786
- "description": "Mechanical processes in the manufacturing"
4704
+ }
4787
4705
  },
4788
4706
  "selective_plated_pads": {
4789
4707
  "type": "object",
@@ -4803,10 +4721,7 @@
4803
4721
  "uniqueItems": true
4804
4722
  }
4805
4723
  }
4806
- },
4807
- "aliases": "selective hard gold",
4808
- "name": "Selective plated pads",
4809
- "description": "Selective plated pads"
4724
+ }
4810
4725
  },
4811
4726
  "hard_gold_edge_connectors": {
4812
4727
  "type": "object",
@@ -4828,20 +4743,18 @@
4828
4743
  },
4829
4744
  "thickness_other": {
4830
4745
  "type": "array",
4746
+ "minItems": 2,
4747
+ "maxItems": 2,
4831
4748
  "items": {
4832
- "type": "number",
4833
- "uniqueItems": true,
4834
- "minItems": 2,
4835
- "maxItems": 2
4749
+ "type": "number"
4836
4750
  }
4837
4751
  },
4838
4752
  "area": {
4839
4753
  "type": "array",
4754
+ "minItems": 2,
4755
+ "maxItems": 2,
4840
4756
  "items": {
4841
- "type": "number",
4842
- "uniqueItems": true,
4843
- "minItems": 2,
4844
- "maxItems": 2
4757
+ "type": "number"
4845
4758
  }
4846
4759
  },
4847
4760
  "layers": {
@@ -4851,10 +4764,7 @@
4851
4764
  "uniqueItems": true
4852
4765
  }
4853
4766
  }
4854
- },
4855
- "aliases": "gold fingers",
4856
- "name": "Hard Gold Edge Connectors",
4857
- "description": "Edge connectors made with hard gold"
4767
+ }
4858
4768
  },
4859
4769
  "markings": {
4860
4770
  "type": "object",
@@ -4894,10 +4804,7 @@
4894
4804
  "uniqueItems": true
4895
4805
  }
4896
4806
  }
4897
- },
4898
- "aliases": "",
4899
- "name": "Markings",
4900
- "description": "Physical markings on the board"
4807
+ }
4901
4808
  },
4902
4809
  "standards": {
4903
4810
  "type": "object",
@@ -5078,10 +4985,7 @@
5078
4985
  "uniqueItems": true
5079
4986
  }
5080
4987
  }
5081
- },
5082
- "aliases": "",
5083
- "name": "Standards and Requirements",
5084
- "description": "If the format is boolean and nothing is stated other than the name of the standard in the Decription column, it should be understood as follows: Are to be met (if Specification), required (in Profile) or possible (in Capability)"
4988
+ }
5085
4989
  },
5086
4990
  "testing": {
5087
4991
  "type": "object",
@@ -5129,10 +5033,7 @@
5129
5033
  "uniqueItems": true
5130
5034
  }
5131
5035
  }
5132
- },
5133
- "aliases": "",
5134
- "name": "Testing",
5135
- "description": ""
5036
+ }
5136
5037
  },
5137
5038
  "country_of_origin": {
5138
5039
  "type": "object",
@@ -5166,10 +5067,7 @@
5166
5067
  "uniqueItems": true
5167
5068
  }
5168
5069
  }
5169
- },
5170
- "aliases": "",
5171
- "name": "Country of Origin",
5172
- "description": "Country of Origin is the country where the Printed Circuit Board is manufactured."
5070
+ }
5173
5071
  },
5174
5072
  "holes": {
5175
5073
  "type": "array",
@@ -5179,11 +5077,10 @@
5179
5077
  "properties": {
5180
5078
  "number": {
5181
5079
  "type": "array",
5080
+ "minItems": 2,
5081
+ "maxItems": 2,
5182
5082
  "items": {
5183
- "type": "number",
5184
- "uniqueItems": true,
5185
- "minItems": 2,
5186
- "maxItems": 2
5083
+ "type": "number"
5187
5084
  }
5188
5085
  },
5189
5086
  "type": {
@@ -5202,38 +5099,34 @@
5202
5099
  },
5203
5100
  "size": {
5204
5101
  "type": "array",
5102
+ "minItems": 2,
5103
+ "maxItems": 2,
5205
5104
  "items": {
5206
- "type": "number",
5207
- "uniqueItems": true,
5208
- "minItems": 2,
5209
- "maxItems": 2
5105
+ "type": "number"
5210
5106
  }
5211
5107
  },
5212
5108
  "layer_start": {
5213
5109
  "type": "array",
5110
+ "minItems": 2,
5111
+ "maxItems": 2,
5214
5112
  "items": {
5215
- "type": "number",
5216
- "uniqueItems": true,
5217
- "minItems": 2,
5218
- "maxItems": 2
5113
+ "type": "number"
5219
5114
  }
5220
5115
  },
5221
5116
  "layer_stop": {
5222
5117
  "type": "array",
5118
+ "minItems": 2,
5119
+ "maxItems": 2,
5223
5120
  "items": {
5224
- "type": "number",
5225
- "uniqueItems": true,
5226
- "minItems": 2,
5227
- "maxItems": 2
5121
+ "type": "number"
5228
5122
  }
5229
5123
  },
5230
5124
  "depth": {
5231
5125
  "type": "array",
5126
+ "minItems": 2,
5127
+ "maxItems": 2,
5232
5128
  "items": {
5233
- "type": "number",
5234
- "uniqueItems": true,
5235
- "minItems": 2,
5236
- "maxItems": 2
5129
+ "type": "number"
5237
5130
  }
5238
5131
  },
5239
5132
  "method": {
@@ -5245,8 +5138,10 @@
5245
5138
  },
5246
5139
  "minimum_designed_annular_ring": {
5247
5140
  "type": "array",
5141
+ "minItems": 2,
5142
+ "maxItems": 2,
5248
5143
  "items": {
5249
- "type": "string",
5144
+ "type": "number",
5250
5145
  "uniqueItems": true
5251
5146
  }
5252
5147
  },
@@ -5285,10 +5180,7 @@
5285
5180
  "uniqueItems": true
5286
5181
  }
5287
5182
  }
5288
- },
5289
- "aliases": "",
5290
- "name": "Holes",
5291
- "description": "One for each holes process, or at least one that sums up the minimum requirements"
5183
+ }
5292
5184
  }
5293
5185
  },
5294
5186
  "additional_requirements": {
@@ -5302,15 +5194,12 @@
5302
5194
  "uniqueItems": true
5303
5195
  }
5304
5196
  }
5305
- },
5306
- "aliases": "",
5307
- "name": "Additional Requirements",
5308
- "description": "This section is for all requirements that still has not been adapted to the standard or needs to be stated as a comment. It allows you to specify custom elements that should be considered as part of the specification. You specify the value here and then need to create a separate element for it in the custom -> additional section. Multiple elements allowed - to be added as a list."
5197
+ }
5309
5198
  }
5310
5199
  }
5311
5200
  }
5312
5201
  },
5313
- "description": "This part should take care of all the products. Note that products can have any names"
5202
+ "description": "This part should take care of all the products. Note that products can have any name"
5314
5203
  },
5315
5204
  "custom": {
5316
5205
  "type": "object",
@@ -5356,19 +5245,109 @@
5356
5245
  "soldermasks": {
5357
5246
  "type": "array",
5358
5247
  "items": {
5359
- "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/soldermasks"
5248
+ "type": "object",
5249
+ "additionalProperties": false,
5250
+ "required": [],
5251
+ "properties": {
5252
+ // "material": {
5253
+ // "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/soldermasks/properties/material"
5254
+ // },
5255
+ "manufacturer": {
5256
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/soldermasks/properties/manufacturer"
5257
+ },
5258
+ "ipc_sm_840_class": {
5259
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/soldermasks/properties/ipc_sm_840_class"
5260
+ },
5261
+ "link": {
5262
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/soldermasks/properties/link"
5263
+ },
5264
+ "accept_equivalent": {
5265
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/soldermasks/properties/accept_equivalent"
5266
+ }
5267
+ }
5360
5268
  }
5361
5269
  },
5362
5270
  "dielectrics": {
5363
5271
  "type": "array",
5364
5272
  "items": {
5365
- "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics"
5273
+ "type": "object",
5274
+ "additionalProperties": false,
5275
+ "required": [],
5276
+ "properties": {
5277
+ "name": {
5278
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/name"
5279
+ },
5280
+ "manufacturer": {
5281
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/manufacturer"
5282
+ },
5283
+ "ipc_4101_sheet": {
5284
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4101_sheet"
5285
+ },
5286
+ "ipc_4103_sheet": {
5287
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4103_sheet"
5288
+ },
5289
+ "ipc_4204_sheet": {
5290
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ipc_4204_sheet"
5291
+ },
5292
+ "tg_min": {
5293
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_min"
5294
+ },
5295
+ "tg_range_from": {
5296
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_range_from"
5297
+ },
5298
+ "tg_range_to": {
5299
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/tg_range_to"
5300
+ },
5301
+ "td_min": {
5302
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/td_min"
5303
+ },
5304
+ "td_range_from": {
5305
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/td_range_to"
5306
+ },
5307
+ "halogen_free": {
5308
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/halogen_free"
5309
+ },
5310
+ "rw_en45545_2_2013": {
5311
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_nf_f_16_101"
5312
+ },
5313
+ "rw_uni_cei_11170_3": {
5314
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_uni_cei_11170_3"
5315
+ },
5316
+ "rw_nfpa_130": {
5317
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/rw_nfpa_130"
5318
+ },
5319
+ "ul": {
5320
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/ul"
5321
+ },
5322
+ "link": {
5323
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/link"
5324
+ },
5325
+ "accept_equivalent": {
5326
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/dielectrics/properties/accept_equivalent"
5327
+ }
5328
+ }
5366
5329
  }
5367
5330
  },
5368
5331
  "stiffeners": {
5369
5332
  "type": "array",
5370
5333
  "items": {
5371
- "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/stiffeners"
5334
+ "type": "object",
5335
+ "additionalProperties": false,
5336
+ "required": [],
5337
+ "properties": {
5338
+ "manufacturer": {
5339
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/stiffeners/properties/manufacturer"
5340
+ },
5341
+ "descriptive_name": {
5342
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/stiffeners/properties/descriptive_name"
5343
+ },
5344
+ "link": {
5345
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/stiffeners/properties/link"
5346
+ },
5347
+ "accept_equivalent": {
5348
+ "$ref": "ottp_circuitdata_schema_definitions.json#/definitions/custom/stiffeners/properties/accept_equivalent"
5349
+ }
5350
+ }
5372
5351
  }
5373
5352
  }
5374
5353
  }