{"openapi":"3.1.0","externalDocs":{"description":"Product search API guide and examples","url":"https://www.posital.com/en/developers/product-search"},"info":{"title":"POSITAL Product Catalogue API","version":"1.2.0","description":"Read-only selection API for all six POSITAL product categories using English catalogue labels. Set category on searchProducts and getProductFilters; it defaults to absolute-encoders. Filters and their meanings vary by category. Call getProductFilters to discover exact values, searchProducts for a shortlist, and getProduct for datasheet specifications. Product details detect category from the ID unless a category restriction is supplied. No natural-language, fuzzy, range, or implied compatibility matching. Public callers receive standard-customer products; existing webshop sessions retain their visibility. Lifecycle does not imply stock availability. Anonymous results may be cached on the server for up to five minutes; cookie-bearing or authorized requests bypass that cache. HTTP caching remains disabled. On 429, honor the Retry-After delay in seconds. Unknown specifications are null, never inferred."},"servers":[{"url":"/api/catalog/v1"}],"paths":{"/products":{"get":{"operationId":"searchProducts","summary":"Find products satisfying every submitted filter","description":"Returns catalogue matches, not suitability recommendations. Omitted requirements are not checked. Zero results is a successful response; do not relax mandatory requirements without user agreement. Ordering is lifecycle descending, then product ID ascending. Pagination is a bounded shortlist, not a catalogue export, and may shift when the index changes.","parameters":[{"name":"category","in":"query","schema":{"type":"string","enum":["inclinometers","absolute-encoders","incremental-encoders","accessories","kit-encoders","linear-sensors"],"default":"absolute-encoders"}},{"name":"lang","in":"query","schema":{"type":"string","enum":["en"],"default":"en"}},{"name":"interface","in":"query","description":"absolute-encoders: Exact communication interface label. incremental-encoders: Exact communication interface label. inclinometers: Exact communication interface label. kit-encoders: Exact communication interface label. linear-sensors: Exact communication interface label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","kit-encoders","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_diameter_mm","in":"query","description":"absolute-encoders: Exact shaft diameter in millimetres, not a catalogue code. incremental-encoders: Exact shaft diameter in millimetres, not a catalogue code. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"number","exclusiveMinimum":0}}},{"name":"multiturn","in":"query","description":"absolute-encoders: True for explicitly labelled multiturn encoders; false for singleturn. Unknown/module labels are excluded. kit-encoders: True for explicitly labelled multiturn encoders; false for singleturn. Unknown/module labels are excluded. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"boolean"}}},{"name":"revolution","in":"query","description":"absolute-encoders: Exact revolution capability label. kit-encoders: Exact revolution capability label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"resolution","in":"query","description":"absolute-encoders: Exact resolution label; no inferred minimum or range matching. inclinometers: Exact angular resolution label; no inferred minimum or range matching. kit-encoders: Exact resolution label; no inferred minimum or range matching. linear-sensors: Exact linear sensor resolution label. Values can be steps or distance per pulse; no inferred numeric range matching. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","inclinometers","kit-encoders","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"protection_class","in":"query","description":"absolute-encoders: Exact catalogue protection group. Check separate shaft/housing ratings in the datasheet; ratings are not treated as an ordered scale. incremental-encoders: Exact catalogue protection group. Check separate shaft/housing ratings in the datasheet; ratings are not treated as an ordered scale. inclinometers: Exact catalogue protection class label; ratings are not treated as an ordered scale. linear-sensors: Exact catalogue protection group. Check separate shaft/housing ratings in the datasheet; ratings are not treated as an ordered scale. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"material","in":"query","description":"absolute-encoders: Exact catalogue material group, which can combine housing and flange materials. Check each component's material in the datasheet. incremental-encoders: Exact catalogue material group, which can combine housing and flange materials. Check each component's material in the datasheet. inclinometers: Exact housing material label. Check other component materials in the datasheet. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"flange_design","in":"query","description":"absolute-encoders: Exact shaft/flange design label, including mounting subtype. incremental-encoders: Exact shaft/flange design label, including mounting subtype. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"flange_size","in":"query","description":"absolute-encoders: Exact flange size label, preserving round versus square geometry. incremental-encoders: Exact flange size label, preserving round versus square geometry. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_options","in":"query","description":"absolute-encoders: Exact shaft/flange option label. incremental-encoders: Exact shaft/flange option label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"connection_type","in":"query","description":"absolute-encoders: Exact connection type label, including orientation and length where specified. incremental-encoders: Exact connection type label, including orientation and length where specified. inclinometers: Exact connection type label. kit-encoders: Exact kit encoder connection type label. linear-sensors: Exact connection type label, including orientation and length where specified. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","kit-encoders","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"accuracy","in":"query","description":"absolute-encoders: Exact catalogue accuracy/technology group, not a guaranteed accuracy limit. Datasheet INL can differ and depend on resolution. No numeric range matching. inclinometers: Exact catalogue accuracy label. Verify conditions and actual limits in the datasheet. kit-encoders: Exact catalogue accuracy/technology group, not a guaranteed accuracy limit. Datasheet INL can differ and depend on resolution. No numeric range matching. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","inclinometers","kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"certificates","in":"query","description":"absolute-encoders: Exact catalogue certificate/feature group. Values include Redundant and Safety, which do not establish a certification. Verify approvals in the datasheet. incremental-encoders: Exact catalogue certificate/feature group. Values include Redundant and Safety, which do not establish a certification. Verify approvals in the datasheet. inclinometers: Exact catalogue certificate group. Verify actual approvals in the datasheet. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"lifecycle","in":"query","description":"absolute-encoders: Product lifecycle; this is not stock availability. incremental-encoders: Product lifecycle; this is not stock availability. inclinometers: Product lifecycle; this is not stock availability. kit-encoders: Product lifecycle; this is not stock availability. linear-sensors: Product lifecycle; this is not stock availability. accessories: Product lifecycle; this is not stock availability. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","kit-encoders","linear-sensors","accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"pin_assignment","in":"query","description":"incremental-encoders: Exact pin assignment / output signal label. This does not specify pulses per revolution. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"measurement_range","in":"query","description":"inclinometers: Exact measurement range label, including the number of axes. No inferred numeric range matching. linear-sensors: Exact catalogue measurement range group. Some values are ranges or wheel sizes, not an exact measuring length. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["inclinometers","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"technology","in":"query","description":"inclinometers: Exact application / technology label. linear-sensors: Exact sensing technology / assembly label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["inclinometers","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_type","in":"query","description":"kit-encoders: Exact shaft type label, including hub, hollow and no-shaft options. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_dimension","in":"query","description":"kit-encoders: Exact shaft dimension label. Values include threads, imperial sizes and placeholders; do not interpret all values as diameters. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_fastening","in":"query","description":"kit-encoders: Exact shaft fastening option label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"cable_clip","in":"query","description":"kit-encoders: Exact cable clip option label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"top_shield","in":"query","description":"kit-encoders: Exact top shield / carrier configuration label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"face_mounting","in":"query","description":"kit-encoders: Exact face mounting label, including mounting pattern and shielding where specified. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"measurement_length","in":"query","description":"linear-sensors: Exact measurement length label, preserving the catalogue units. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"connection_orientation","in":"query","description":"linear-sensors: Exact connection orientation label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"enclosure","in":"query","description":"linear-sensors: Exact draw-wire enclosure label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"accessory_name","in":"query","description":"accessories: Exact accessory description from the catalogue, often including an ordering number. Discover values through the filters endpoint. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"coupling_type","in":"query","description":"accessories: Exact shaft coupling type label. Not applicable to every accessory. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"hub_1_diameter","in":"query","description":"accessories: Exact hub 1 diameter label, preserving metric or imperial units. Not applicable to every accessory. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"hub_2_diameter","in":"query","description":"accessories: Exact hub 2 diameter label, preserving metric or imperial units. Not applicable to every accessory. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":5}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":980,"default":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResults"}}}},"400":{"description":"Invalid or unsupported parameter/value. Requirements are never silently ignored.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Caller rate limit or shared capacity limit reached. Wait for Retry-After before retrying; this does not mean that no products match.","headers":{"Retry-After":{"description":"Minimum delay before retrying, in seconds.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Backend unavailable, invalid data, or incomplete search. Retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/filters":{"get":{"operationId":"getProductFilters","summary":"Discover supported filter values and remaining match counts","description":"Counts include ALL currently applied filters, including the filter being counted. To explore replacement values, omit that filter. Only values with remaining matches are returned. complete=false indicates truncated/approximate counts or unmapped values; absence then does not prove a value is unavailable.","parameters":[{"name":"category","in":"query","schema":{"type":"string","enum":["inclinometers","absolute-encoders","incremental-encoders","accessories","kit-encoders","linear-sensors"],"default":"absolute-encoders"}},{"name":"lang","in":"query","schema":{"type":"string","enum":["en"],"default":"en"}},{"name":"interface","in":"query","description":"absolute-encoders: Exact communication interface label. incremental-encoders: Exact communication interface label. inclinometers: Exact communication interface label. kit-encoders: Exact communication interface label. linear-sensors: Exact communication interface label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","kit-encoders","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_diameter_mm","in":"query","description":"absolute-encoders: Exact shaft diameter in millimetres, not a catalogue code. incremental-encoders: Exact shaft diameter in millimetres, not a catalogue code. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"number","exclusiveMinimum":0}}},{"name":"multiturn","in":"query","description":"absolute-encoders: True for explicitly labelled multiturn encoders; false for singleturn. Unknown/module labels are excluded. kit-encoders: True for explicitly labelled multiturn encoders; false for singleturn. Unknown/module labels are excluded. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"boolean"}}},{"name":"revolution","in":"query","description":"absolute-encoders: Exact revolution capability label. kit-encoders: Exact revolution capability label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"resolution","in":"query","description":"absolute-encoders: Exact resolution label; no inferred minimum or range matching. inclinometers: Exact angular resolution label; no inferred minimum or range matching. kit-encoders: Exact resolution label; no inferred minimum or range matching. linear-sensors: Exact linear sensor resolution label. Values can be steps or distance per pulse; no inferred numeric range matching. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","inclinometers","kit-encoders","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"protection_class","in":"query","description":"absolute-encoders: Exact catalogue protection group. Check separate shaft/housing ratings in the datasheet; ratings are not treated as an ordered scale. incremental-encoders: Exact catalogue protection group. Check separate shaft/housing ratings in the datasheet; ratings are not treated as an ordered scale. inclinometers: Exact catalogue protection class label; ratings are not treated as an ordered scale. linear-sensors: Exact catalogue protection group. Check separate shaft/housing ratings in the datasheet; ratings are not treated as an ordered scale. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"material","in":"query","description":"absolute-encoders: Exact catalogue material group, which can combine housing and flange materials. Check each component's material in the datasheet. incremental-encoders: Exact catalogue material group, which can combine housing and flange materials. Check each component's material in the datasheet. inclinometers: Exact housing material label. Check other component materials in the datasheet. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"flange_design","in":"query","description":"absolute-encoders: Exact shaft/flange design label, including mounting subtype. incremental-encoders: Exact shaft/flange design label, including mounting subtype. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"flange_size","in":"query","description":"absolute-encoders: Exact flange size label, preserving round versus square geometry. incremental-encoders: Exact flange size label, preserving round versus square geometry. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_options","in":"query","description":"absolute-encoders: Exact shaft/flange option label. incremental-encoders: Exact shaft/flange option label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"connection_type","in":"query","description":"absolute-encoders: Exact connection type label, including orientation and length where specified. incremental-encoders: Exact connection type label, including orientation and length where specified. inclinometers: Exact connection type label. kit-encoders: Exact kit encoder connection type label. linear-sensors: Exact connection type label, including orientation and length where specified. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","kit-encoders","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"accuracy","in":"query","description":"absolute-encoders: Exact catalogue accuracy/technology group, not a guaranteed accuracy limit. Datasheet INL can differ and depend on resolution. No numeric range matching. inclinometers: Exact catalogue accuracy label. Verify conditions and actual limits in the datasheet. kit-encoders: Exact catalogue accuracy/technology group, not a guaranteed accuracy limit. Datasheet INL can differ and depend on resolution. No numeric range matching. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","inclinometers","kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"certificates","in":"query","description":"absolute-encoders: Exact catalogue certificate/feature group. Values include Redundant and Safety, which do not establish a certification. Verify approvals in the datasheet. incremental-encoders: Exact catalogue certificate/feature group. Values include Redundant and Safety, which do not establish a certification. Verify approvals in the datasheet. inclinometers: Exact catalogue certificate group. Verify actual approvals in the datasheet. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"lifecycle","in":"query","description":"absolute-encoders: Product lifecycle; this is not stock availability. incremental-encoders: Product lifecycle; this is not stock availability. inclinometers: Product lifecycle; this is not stock availability. kit-encoders: Product lifecycle; this is not stock availability. linear-sensors: Product lifecycle; this is not stock availability. accessories: Product lifecycle; this is not stock availability. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["absolute-encoders","incremental-encoders","inclinometers","kit-encoders","linear-sensors","accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"pin_assignment","in":"query","description":"incremental-encoders: Exact pin assignment / output signal label. This does not specify pulses per revolution. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["incremental-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"measurement_range","in":"query","description":"inclinometers: Exact measurement range label, including the number of axes. No inferred numeric range matching. linear-sensors: Exact catalogue measurement range group. Some values are ranges or wheel sizes, not an exact measuring length. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["inclinometers","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"technology","in":"query","description":"inclinometers: Exact application / technology label. linear-sensors: Exact sensing technology / assembly label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["inclinometers","linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_type","in":"query","description":"kit-encoders: Exact shaft type label, including hub, hollow and no-shaft options. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_dimension","in":"query","description":"kit-encoders: Exact shaft dimension label. Values include threads, imperial sizes and placeholders; do not interpret all values as diameters. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"shaft_fastening","in":"query","description":"kit-encoders: Exact shaft fastening option label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"cable_clip","in":"query","description":"kit-encoders: Exact cable clip option label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"top_shield","in":"query","description":"kit-encoders: Exact top shield / carrier configuration label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"face_mounting","in":"query","description":"kit-encoders: Exact face mounting label, including mounting pattern and shielding where specified. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["kit-encoders"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"measurement_length","in":"query","description":"linear-sensors: Exact measurement length label, preserving the catalogue units. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"connection_orientation","in":"query","description":"linear-sensors: Exact connection orientation label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"enclosure","in":"query","description":"linear-sensors: Exact draw-wire enclosure label. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["linear-sensors"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"accessory_name","in":"query","description":"accessories: Exact accessory description from the catalogue, often including an ordering number. Discover values through the filters endpoint. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"coupling_type","in":"query","description":"accessories: Exact shaft coupling type label. Not applicable to every accessory. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"hub_1_diameter","in":"query","description":"accessories: Exact hub 1 diameter label, preserving metric or imperial units. Not applicable to every accessory. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}},{"name":"hub_2_diameter","in":"query","description":"accessories: Exact hub 2 diameter label, preserving metric or imperial units. Not applicable to every accessory. Unsupported categories reject this filter. Discover valid values with getProductFilters using the same category. Repeat this parameter for OR alternatives; different parameters are ANDed. String labels are case-insensitive, otherwise exact.","x-categories":["accessories"],"style":"form","explode":true,"schema":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string","minLength":1,"maxLength":200}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Filters"}}}},"400":{"description":"Invalid or unsupported parameter/value. Requirements are never silently ignored.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Caller rate limit or shared capacity limit reached. Wait for Retry-After before retrying; this does not mean that no products match.","headers":{"Retry-After":{"description":"Minimum delay before retrying, in seconds.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Backend unavailable, invalid data, or incomplete search. Retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/products/{productId}":{"get":{"operationId":"getProduct","summary":"Retrieve a visible product and its authoritative datasheet specifications","parameters":[{"name":"category","in":"query","description":"Optional restriction. Omit to detect the category from the product ID.","schema":{"type":"string","enum":["inclinometers","absolute-encoders","incremental-encoders","accessories","kit-encoders","linear-sensors"]}},{"name":"lang","in":"query","schema":{"type":"string","enum":["en"],"default":"en"}},{"name":"productId","in":"path","required":true,"schema":{"type":"string","pattern":"^[1-9]\\d{3,8}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"400":{"description":"Invalid or unsupported parameter/value. Requirements are never silently ignored.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Product does not exist or is not visible to this caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Caller rate limit or shared capacity limit reached. Wait for Retry-After before retrying; this does not mean that no products match.","headers":{"Retry-After":{"description":"Minimum delay before retrying, in seconds.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Backend unavailable, invalid data, or incomplete search. Retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}},"ProductSummary":{"type":"object","required":["id","name","category","url","details_url","specifications","specifications_note","matched_filters","unknown_specifications"],"properties":{"id":{"type":"string","description":"Exact catalogue product ID."},"name":{"type":"string"},"category":{"type":"string","enum":["inclinometers","absolute-encoders","incremental-encoders","accessories","kit-encoders","linear-sensors"]},"url":{"type":"string","format":"uri"},"details_url":{"type":"string","format":"uri"},"specifications":{"type":"object","description":"These values are catalogue filter labels. Verify technical limits, component materials and approvals against the product datasheet.","additionalProperties":{"type":["string","number","boolean","null"]}},"specifications_note":{"type":"string","const":"These values are catalogue filter labels. Verify technical limits, component materials and approvals against the product datasheet."},"matched_filters":{"type":"array","items":{"type":"string"},"description":"Names of the submitted filters enforced by the catalogue query. No other requirements have been verified."},"unknown_specifications":{"type":"array","items":{"type":"string"}}}},"Product":{"type":"object","required":["id","name","category","url","details_url","specifications","specifications_note","matched_filters","unknown_specifications","lifecycle","datasheet"],"properties":{"id":{"type":"string","description":"Exact catalogue product ID."},"name":{"type":"string"},"category":{"type":"string","enum":["inclinometers","absolute-encoders","incremental-encoders","accessories","kit-encoders","linear-sensors"]},"url":{"type":"string","format":"uri"},"details_url":{"type":"string","format":"uri"},"specifications":{"type":"object","description":"These values are catalogue filter labels. Verify technical limits, component materials and approvals against the product datasheet.","additionalProperties":{"type":["string","number","boolean","null"]}},"specifications_note":{"type":"string","const":"These values are catalogue filter labels. Verify technical limits, component materials and approvals against the product datasheet."},"matched_filters":{"type":"array","items":{"type":"string"},"description":"Names of the submitted filters enforced by the catalogue query. No other requirements have been verified."},"unknown_specifications":{"type":"array","items":{"type":"string"}},"lifecycle":{"type":"string"},"datasheet":{"type":"array","items":{"type":"object","required":["title","specifications"],"properties":{"title":{"type":"string"},"specifications":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":["string","null"]}}}}}}}}},"SearchResults":{"type":"object","required":["category","lang","applied_filters","total","limit","offset","next_offset","refinement_required","products"],"properties":{"category":{"type":"string","enum":["inclinometers","absolute-encoders","incremental-encoders","accessories","kit-encoders","linear-sensors"]},"lang":{"const":"en"},"applied_filters":{"type":"object","additionalProperties":{"type":"array","items":{"type":["string","number","boolean"]}}},"total":{"type":"integer","minimum":0},"limit":{"type":"integer"},"offset":{"type":"integer"},"next_offset":{"type":["integer","null"]},"refinement_required":{"type":"boolean"},"products":{"type":"array","items":{"$ref":"#/components/schemas/ProductSummary"}}}},"Filters":{"type":"object","required":["category","lang","applied_filters","total","count_scope","filters"],"properties":{"category":{"type":"string","enum":["inclinometers","absolute-encoders","incremental-encoders","accessories","kit-encoders","linear-sensors"]},"lang":{"const":"en"},"applied_filters":{"type":"object","additionalProperties":{"type":"array","items":{"type":["string","number","boolean"]}}},"total":{"type":"integer","minimum":0},"count_scope":{"const":"all_applied_filters"},"filters":{"type":"array","items":{"type":"object","required":["name","description","type","options","complete"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"type":{"enum":["string","number","boolean"]},"unit":{"const":"mm"},"complete":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","required":["value","count"],"properties":{"value":{"type":["string","number","boolean"]},"count":{"type":"integer","minimum":0}}}}}}}}}}}}