Definition JSON
This fragment is shown exactly as published. Use the chevrons to fold objects and arrays; linked $ref values return to their targets in the complete schema.
{ "type": "object",
"required": [ "id",
"designation",
"chemistry" ],
"properties": { "id": { "type": "string" },
"designation": { "type": "object",
"properties": { "grade": { "type": [ "string",
"null" ] },
"class": { "type": [ "string",
"null" ] },
"type": { "type": [ "string",
"null" ] },
"uns": { "type": [ "string",
"null" ],
"pattern": "^[A-Z][0-9]{5}$" },
"uns_note": { "type": "string" } } },
"aliases": { "type": "array",
"items": { "type": "string" } },
"chemistry": { "oneOf": [ { "$ref": "#/$defs/not_extracted" },
{ "type": "object",
"required": [ "elements" ],
"properties": { "elements": { "type": "object",
"description": "Element symbol to an ARRAY of bounds - one element commonly has several, selected by thickness, diameter, class or analysis basis.",
"additionalProperties": { "type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/value_or_alternatives" },
"description": "Element symbol to an ARRAY of bounds. A member may be a value or an {'any_of': [...]} alternatives object - SA-516 Grade 60 manganese is a real case: Table 1 footnote C permits either of two ranges, and modelling them as two array members would make a checker demand both and reject conforming material." } },
"notes": { "type": "array",
"items": { "type": "string" } },
"pren_note": { "type": "string",
"description": "Composite chemistry bound (e.g. a PREN floor) that cannot be expressed as a value in v0.2. Must be checked manually." } } } ] },
"mechanical": { "oneOf": [ { "type": "null",
"description": "The specification imposes no mechanical property requirement. SA-179 is a real example: its tensile figures are EXPLANATORY NOTE design assumptions, not acceptance criteria." },
{ "$ref": "#/$defs/not_extracted" },
{ "type": "object",
"properties": { "tensile_strength": { "oneOf": [ { "type": "null",
"description": "The specification imposes no requirement for this property." },
{ "$ref": "#/$defs/not_extracted" },
{ "$ref": "#/$defs/value_set" } ] },
"yield_strength": { "oneOf": [ { "type": "null",
"description": "The specification imposes no requirement for this property." },
{ "$ref": "#/$defs/not_extracted" },
{ "$ref": "#/$defs/value_set" } ] },
"elongation": { "oneOf": [ { "type": "null",
"description": "The specification imposes no requirement for this property." },
{ "$ref": "#/$defs/not_extracted" },
{ "type": "array",
"items": { "$ref": "#/$defs/value" } } ] },
"reduction_of_area": { "oneOf": [ { "type": "null",
"description": "The specification imposes no requirement for this property." },
{ "$ref": "#/$defs/not_extracted" },
{ "type": "array",
"items": { "$ref": "#/$defs/value" } } ] } },
"additionalProperties": false,
"description": "Mechanical property requirements. additionalProperties is false so that a not_extracted object {extracted:false, note:...} matches exactly one branch of the oneOf. Without it the two branches are both satisfied and the oneOf fails - the object is ambiguous, not invalid. SB-366 is the case: it states no mechanical table of its own and sends properties to the source material specification." } ] },
"hardness": { "oneOf": [ { "type": "null",
"description": "The specification imposes no hardness requirement." },
{ "$ref": "#/$defs/not_extracted" },
{ "type": "array",
"items": { "$ref": "#/$defs/value_or_alternatives" } } ] },
"impact": { "oneOf": [ { "type": "null",
"description": "The specification imposes no impact requirement." },
{ "$ref": "#/$defs/not_extracted" },
{ "type": "object",
"required": [ "values" ],
"additionalProperties": false,
"description": "Impact requirements. 'applies_when' on each value carries the applicability trigger (thickness, specimen size, temperature).",
"properties": { "values": { "type": "array",
"items": { "$ref": "#/$defs/value" } },
"test_temperature": { "oneOf": [ { "$ref": "#/$defs/value_set" },
{ "type": "object",
"required": [ "extracted",
"note" ],
"additionalProperties": false,
"description": "The specification imposes an impact ENERGY requirement but states NO test temperature, or the temperature was not captured. SA-203 Para 7.2.1 is the case: energy is fixed at 20 ft-lbf [27 J] but temperature and orientation are 'a matter of agreement between the purchaser and supplier'. Without this the file cannot record that the Code is silent on temperature - which is the difference between a Code non-conformance and a contractual question.",
"properties": { "extracted": { "const": false },
"note": { "type": "string" },
"applicability": { "type": "string",
"description": "When the impact requirement applies at all, where it is conditional." } } } ] },
"applicability": { "type": "string",
"description": "When impact testing is triggered at all." },
"specimen_sizes": { "type": "array",
"items": { "type": "string" } } } } ] },
"heat_treatment": { "oneOf": [ { "type": "null" },
{ "$ref": "#/$defs/not_extracted" },
{ "type": "array",
"items": { "type": "object",
"required": [ "requirement",
"source" ],
"additionalProperties": false,
"properties": { "requirement": { "type": "string",
"description": "e.g. 'quenched and tempered', 'carbide solution treated', 'annealed'" },
"temperature": { "oneOf": [ { "$ref": "#/$defs/not_extracted",
"description": "The specification states no temperature for this grade - SA-182 Table 1 gives 'not specified' for F 6a - or the value was not captured." },
{ "$ref": "#/$defs/value_set" } ] },
"cooling": { "type": "string" },
"applies_when": { "$ref": "#/$defs/applies_when" },
"source": { "type": "string" },
"notes": { "type": "array",
"items": { "type": "string" } } } } } ] } }}Fields
| Field | Type | Status | Meaning |
|---|---|---|---|
id | string | Required | Stable normalized identifier for the grade, class, type, condition, or process variant. |
designation | object | Required | Source designation details, such as grade, class, type, UNS number, condition, or process. |
aliases | array | Optional | Alternative designations by which the same normalized grade entry may be identified. |
chemistry | One Of (2) | Required | Heat- and/or product-analysis acceptance requirements for the grade, or an explicit extraction-gap marker. |
mechanical | One Of (3) | Optional | Tensile, yield, elongation, reduction-of-area, or related mechanical acceptance requirements. |
hardness | One Of (3) | Optional | Hardness limits, including formally represented alternatives where the source permits different scales. |
impact | One Of (3) | Optional | Impact energy, test temperature, specimen, orientation, and applicability requirements. |
heat_treatment | One Of (3) | Optional | Required thermal condition, temperature, cooling route, applicability, and source. |