{"openapi":"3.0.3","info":{"title":"AlisQI API","version":"1.0"},"servers":[{"url":"https://{subdomain}.alisqi.com/api","description":"AlisQI tenant","variables":{"subdomain":{"default":"tenant","description":"The subdomain part needs to be replaced with the customer's subdomain."}}}],"tags":[{"name":"Sets"},{"name":"Results"},{"name":"Statistics"},{"name":"Specifications"},{"name":"Permissions"}],"security":[{"ApiToken":[]},{"access_token":[]}],"paths":{"/getResults":{"get":{"tags":["Results"],"summary":"Get results or master data","description":"Use this API operation to get (quality) results from analysis sets or master data from selection lists.","operationId":"get-results","parameters":[{"name":"setId","description":"The unique id of the analysis set. <b>Note</b>: for historical reasons, this parameter is usually called `maskid` in AlisQI URLs. The API uses `setId` for consistency with the terminology used in the user interface.","in":"query","required":true,"schema":{"type":"integer"},"example":16},{"name":"limit","description":"The maximum number of results to output. </br>Limited at 10.000.","in":"query","required":false,"schema":{"type":"integer","maximum":10000},"example":100},{"name":"offset","description":"The zero-based offset used for paging. Defaults to 0.","in":"query","required":false,"schema":{"type":"integer","default":0},"example":50},{"name":"sort","description":"Sort field and direction. </br>Specify as `field:direction`, where direction is either asc or desc. </br>Defaults to date, descending (date:desc).\n","in":"query","required":false,"schema":{"type":"string","default":"date:desc"},"example":"date:desc"},{"name":"filter","description":"JSON object as a string.\n\nSpecify a filter for the results.\n\nDefaults to none.\n\n<b>Example</b>: `{\"status_\":[{\"value\":\"5\"}]}`<br><br>\n<b>Note</b>: this parameter is usually called constraints in AlisQI URLs. The API uses filter for consistency with the terminology used in the user interface. <br><b>Tip</b>: Use the filter widget in the in-app Integration hub to create a JSON filter string.\n","in":"query","required":false,"schema":{"type":"string"}},{"name":"fields","description":"You can find the details on how to find the fields in the in-app Integration hub.\n","in":"query","required":false,"schema":{"type":"string"},"example":"field1,field2,field3"},{"name":"includeAttachments","description":"Include attachments. Defaults to `false`.\n\nIt's possible to include attachments along with values using includeAttachments parameter. Each result object will then include the pseudo-element `@attachments`, which is an array of objects, each with two following name/value pairs:\n\nfilename is the file's title and extension.\n\ndata is the base64-encoded content of the file.\n\n```json\n[{\n  \"date\": \"2000-01-01 00:00\",\n  …\n  \"@attachments\": [{\n  \"filename\":     \"Delivered pallet.jpeg\",\n  \"data\":         \"/9j/4AAQSkZJRgABAg…\"\n  }, {\n  \"filename\":     \"Supplier's CoA.pdf\",\n  \"data\":         \"JVBERi0xLjUKJcOkw7…\"\n  }, … ]\n}]\n```\n","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeId","description":"Include result id. Defaults to `false`.\n\nTo include the unique sequence numbers used by AlisQI, use the `includeId` parameter. Each result object will then include it in the pseudo-element `@id`.\n\nThese values can be used as key field in the `storeResults` API endpoint. You may also use the ids of selection list options to dynamically build filters.\n\nLast modification date\nTo include each result's last modification's date, use the `includeLastModificationDate` parameter. Each result object will then include it in the pseudo-element `@lastModificationDate`.\n","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeLastModificationDate","description":"Include result last modification date. Defaults to `false`.\n\nTo include each result's last modification's date, use the `includeLastModificationDate` parameter. Each result object will then include it in the pseudo-element `@lastModificationDate`.\n","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"$ref":"#/components/responses/GetResultsResponse"},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/getAllSets":{"get":{"tags":["Sets"],"summary":"Get all analysis sets or selection lists","description":"Use this API operation to get a list of (all)  analysis sets or selection lists.","operationId":"get-all-sets","parameters":[{"name":"groups","description":"The id(s) or the name(s) of the group(s) to retrieve.\n\nWhen only numbers are used for ids (e.g. 1,3), the groups with these ids are retrieved.\n\nOn the other hand, when text is used (e.g. G1,G3), the groups whose name contains that text will be retrieved.\n\nwhen a mix is used (e.g. G1,3), the groups with name \"G1\" or \"3\" are retrieved.\n\nIf the Selection lists (case-insensitive) value is passed, all selection lists are retrieved.\n","in":"query","required":false,"schema":{"type":"string"},"examples":{"SingleId":{"summary":"Single group id","value":"1"},"MultipleIds":{"summary":"Multiple group ids","value":"1,2"},"SingleName":{"summary":"Single group name","value":"GroupX"},"MultipleNames":{"summary":"Multiple group names","value":"GroupX, GroupY"},"SelectionLists":{"summary":"Selection Lists","value":"Selection lists,GroupX"}}},{"name":"names","description":"The name(s) of the analysis set(s) or selection list(s) to retrieve","in":"query","schema":{"type":"string"},"examples":{"SingleAnalysisSet":{"summary":"Single analysis set","value":"AnalysisSet1"},"MultipleAnalysisSets":{"summary":"Multiple analysis sets","value":"AnalysisSet1,AnalysisSet2"},"AnalysisSetAnsSelectionList":{"summary":"Anaysis set and selection list","value":"AnalysisSet1,SelectionList1"}}}],"responses":{"200":{"$ref":"#/components/responses/GetAllSetsResponse"},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/storeResults":{"post":{"tags":["Results"],"summary":"Create or update results or master data","description":"Use this API operation to create or update quality results in analysis sets or master data in selection lists.","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["setId","results"],"type":"object","properties":{"setId":{"type":"integer","description":"The unique id of the analysis set.\n\nThis parameter is required and has no default.\n\nNote: for historical reasons, this parameter is usually called maskid in AlisQI URLs. The API uses setId for consistency with the terminology used in the user interface.\n"},"results":{"type":"string","description":"JSON object as a string.\n\nArray of Result objects. \n\n<b>Example</b>: \n```\n[\n  {\n    \"date\": \"2023-08-08 19:19:02\",\n    \"product_\": \"Asy Novelo\",\n    \"batch_\": \"B150125\",\n    \"status_\": \"In production\"    \n  }\n]\n```\n\n<b>Tip</b>: Call the getResults endpoint to see the exact Result data structure for this setId."},"keyField":{"description":"Find and modify existing results based on this field's value. \n\nDefaults to `none`, meaning new results will be created.\n\nIf a key field is specified, AlisQI will try to find an existing result that matches the provided result's value for that field. If one is found, the existing result's values are merged with those provided and the result is modified. If no existing result is found, a new one is created.\n\nYou can prevent the creation of new results by setting `editOnly=true`. When set, AlisQI will not create new results. Instead, an error message is provided for each result that has no matching existing result.\nUse this to prevent accidental creation of results when key field values might not match up exactly.\n\nNote that the key field evaluation is case sensitive.\nWhen a key field is used, you only need to specify the values that you want to change. These will be merged with the existing values. That means you can even leave out values for required fields.\nHowever, if no existing result is found, AlisQI will try to modify or create a result using only the partial result!\nIf you wish to remove a value, specify `\"field\": null` in the Result.\n","type":"string"},"editOnly":{"description":"Use (only) in conjunction with keyField. Enable to prevent (accidental) creation of new results.\n\nDefaults to `false`.\n","type":"boolean","default":false,"example":true},"addListOptions":{"description":"Create new selection list options if an unknown value is specified?\n\nDefaults to `false` to prevent accidental duplicates or noise in master data.\n","type":"boolean","default":false,"example":true}}}}}},"responses":{"200":{"$ref":"#/components/responses/StoreResultsResponse"},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/getStatistics":{"get":{"tags":["Statistics"],"summary":"Get descriptive statistics for analysis set fields","description":"Use this API operation to get descriptive statistics for numeric analysis set fields of your choice.","operationId":"get-statistics","parameters":[{"name":"setId","description":"The unique id of the analysis set.\n\nThis parameter is required and has no default.\n\nNote: for historical reasons, this parameter is usually called maskid in AlisQI URLs. The API uses setId for consistency with the terminology used in the user interface.\n","in":"query","required":true,"schema":{"type":"integer"},"example":16},{"name":"fields","description":"Comma separated list of field names.\n\nUse the in-app [integration hub](https://help.alisqi.com/article/478-integration-hub) to find the field names for a particular analysis set.\n","in":"query","required":true,"schema":{"type":"string"},"example":"field1,field2,field3"},{"name":"limit","description":"The maximum number of results to consider while calculating the statistics.\n\nDefaults to 50000.\n","in":"query","required":false,"schema":{"type":"integer"},"example":500},{"name":"filter","description":"JSON object as a string.\n\nSpecify a filter for the results.\n\nDefaults to none.\n\n<b>Example</b>: `{\"status_\":[{\"value\":\"5\"}]}`<br><br>\n<b>Note</b>: this parameter is usually called constraints in AlisQI URLs. The API uses filter for consistency with the terminology used in the user interface.<br><b>Tip</b>: Use the filter widget in the in-app Integration hub to create a JSON filter string.\n","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"$ref":"#/components/responses/GetAllStatisticsResponse"},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/getSpecificationEvaluation":{"get":{"tags":["Statistics"],"summary":"Get capability statistics for analysis set fields","description":"Use this API operation to get in-depth statistics of specification evaluation and product and process capability for an analysis set's numeric fields.","parameters":[{"name":"setId","description":"The unique id of the analysis set.\n\nThis parameter is required and has no default.\n\n<b>Note</b>: for historical reasons, this parameter is usually called maskid in AlisQI URLs. The API uses setId for consistency with the terminology used in the user interface.\n","in":"query","required":true,"schema":{"type":"integer"},"example":16},{"name":"fields","description":"Comma seperated list of field names.\n\nUse the in-app [integration hub](https://help.alisqi.com/article/478-integration-hub) to find the field names for a particular analysis set.","in":"query","required":true,"schema":{"type":"string"},"example":"field1,field2,field3"},{"name":"limit","description":"The maximum number of results to consider while calculating the statistics.\n\nDefaults to 50000.\n","in":"query","required":false,"schema":{"type":"integer","default":50000},"example":500},{"name":"filter","description":"JSON object as a string.\n\nSpecify a filter for the results.\n\nDefaults to none.\n\n<b>Example</b>: `{\"status_\":[{\"value\":\"5\"}]}`<br><br>\n<b>Note</b>: this parameter is usually called constraints in AlisQI URLs. The API uses filter for consistency with the terminology used in the user interface.<br><b>Tip</b>: Use the filter widget in the in-app Integration hub to create a JSON filter string.\n","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"$ref":"#/components/responses/GetSpecificationEvaluationResponse"},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/getSpecificationVersion":{"get":{"tags":["Specifications"],"summary":"Get specification versions","description":"Use this API operation to get (a) specification version(s) for an analysis set.","parameters":[{"name":"setId","description":"The unique id of the analysis set.\n\nThis parameter is required and has no default.\n\nNote: for historical reasons, this parameter is usually called maskid in AlisQI URLs. The API uses setId for consistency with the terminology used in the user interface.\n","in":"query","required":true,"schema":{"type":"integer"},"example":16},{"name":"indexValue","description":"The index field value. (This only applies to sets that have an index field.)\n\nGet the current specification version for this index value.\n\nindex value matching is case-insensitive.\n","in":"query","required":false,"schema":{"type":"string"},"example":"Product A"}],"responses":{"200":{"$ref":"#/components/responses/GetSpecificationVersionResponse"},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/storeSpecificationVersion":{"post":{"tags":["Specifications"],"summary":"Create a new specification version","description":"Use this API operation to create (a) new specification version(s) for an analysis sets.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["setId","specs"],"properties":{"setId":{"description":"JSON object as a string.\n\nThe unique id of the analysis set.\n\nThis parameter is required and has no default.\n\n<b>Note</b>: for historical reasons, this parameter is usually called maskid in AlisQI URLs. The API uses setId for consistency with the terminology used in the user interface.\n","type":"integer"},"specs":{"type":"string","description":"JSON object as a string.\n\nSpecification objects. \n\n<b>Example</b>:\n```\n{\n  \"ph_\": {\n\t\"min\": 7,\n\t\"innermin\": 8,\n\t\"goal\": 9,\n\t\"innermax\": 10,\n\t\"max\": 11\n  },\n  \"viscosity_\": {\n\t\"min\": 500,\n\t\"innermin\": null,\n\t\"goal\": null,\n\t\"innermax\": null,\n\t\"max\": 1300\n  }\n}\n```\n\n<b>Tip</b>: Call the getSpecificationVersion endpoint to see the exact Specification data structure for this setId."},"indexValue":{"description":"The index field value. (Only applies to sets which have an index field.)\n\nStore a new specification version for this index value.\n\nLeave out to create a generic specification which applies to all index values.\n","type":"string","example":"Product A"},"startDateTime":{"description":"Specify the starting date and time (formatted as yyyy-mm-dd hh:mm:ss or unix stimestamp).\n\nLeave out to use the current date and time.\n","type":"string","format":"datetime","example":"2001-02-03T14:15:16.000Z"},"reason":{"description":"The reason for changing the spec\n\nThis is used for documentation only.\n","type":"string","example":"rev# 12.3abc"}}}}}},"responses":{"200":{"description":"This operation will simply output true if the specification version has been stored.","content":{"text/plain":{"schema":{"type":"boolean"}}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/getSetDefinition":{"get":{"tags":["Sets"],"summary":"Get the structure of an analysis sets or selection list","description":"Use this API operation to get the structural definition of an analysis sets or selection lists.","parameters":[{"name":"setId","description":"The unique id of the analysis set.\n\nThis parameter is required and has no default.\n\nNote: for historical reasons, this parameter is usually called maskid in AlisQI URLs. The API uses setId for consistency with the terminology used in the user interface.\n","in":"query","required":true,"schema":{"type":"integer"},"example":16},{"name":"onlyActiveFields","description":"Whether to only show currently active fields or also include deactivated fields.\n\nDefaults to `true` (only active fields).\n","in":"query","required":false,"schema":{"type":"boolean","default":true},"example":true}],"responses":{"200":{"$ref":"#/components/responses/GetSetDefinitionResponse"},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/createSet":{"post":{"summary":"Create new set or list","description":"This endpoint allows the creation of a new set or list, with its properties and collection of fields.\n","operationId":"createSet","tags":["Sets"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the set or list","example":"Final product inspections"},"type":{"type":"string","description":"Type of the set, either 'set' or 'list'.","enum":["set","list"],"example":"set"},"groupId":{"type":"integer","description":"Group ID, required if type is 'set', should be omitted if the type is 'list'."},"fields":{"type":"array","description":"Collection of fields that will be added to the set. They will appear as form fields.","minItems":1,"items":{"type":"object","required":["label","type"],"properties":{"label":{"type":"string","description":"Human-readable title for the field.","example":"Temperature"},"abbreviation":{"type":"string","description":"Abbreviation for the field title.","example":"Temp"},"unit":{"type":"string","description":"Unit of measure for the field.","example":"°C"},"method":{"type":"string","description":"The field's test method.","example":"ASTM E21"},"type":{"type":"string","description":"Type of field.","enum":["date","text","numeric","select","check","signature"],"example":"numeric"},"required":{"type":"boolean","description":"Indicates if the field is required.","default":false},"lockOnValue":{"type":"boolean","description":"Whether the field is locked after receiving its first value."},"isIndex":{"type":"boolean","description":"Indicates whether the field should be configured as the index field. Applies to required select fields only."},"format":{"type":"string","description":"Specific format for date or numeric fields. This property is required for date or numeric fields.","enum":["date","datetime","integer","decimal","scientific"]},"multiLine":{"type":"boolean","description":"Controls the appearance of text fields in forms. Applies to text fields only."},"decimals":{"type":"integer","description":"Number of decimal places. Applies to numeric fields only."},"default":{"type":"number","description":"Default value for the field. Applies to numeric fields only."},"listId":{"type":"integer","description":"ID of the selection list associated with a select field. Applies to select fields only."},"listField":{"type":"string","description":"Field name in the selection list identified by `listId`. The referenced fields needs to be required and of type text or numeric"},"radioButtons":{"type":"boolean","description":"Controls appearance of select fields, either radio buttons or dropdown. Applies to select fields only."},"lockResultSignoff":{"type":"boolean","description":"Whether the entire result should be locked upon sign-off. Applies to signature fields only."}}}}},"required":["name","type","fields"]}}}},"responses":{"200":{"description":"Set created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"setId":{"type":"integer","description":"ID of the created set.","example":1234}}}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","description":"List of errors encountered during the request.","items":{"type":"string"}}}}}}},"401":{"description":"Unauthorized. The caller does not have permission to create sets."}}}},"/storeSetPermissions":{"post":{"tags":["Permissions"],"summary":"Store permissions for an analysis set","description":"Use this API operation to configure permissions for an analysis set or selection list.","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["setId","userGroupId","permissions"],"properties":{"setId":{"description":"The unique id of the analysis set.","type":"integer"},"userGroupId":{"description":"The unique id of the user group.","type":"integer"},"permissions":{"type":"array","items":{"type":"string","enum":["read","insert","modify","complete","delete","specification"]},"description":"List of permissions. For selection lists, only read and modify are applicable. Leave empty to revoke permissions."}}}}}},"responses":{"200":{"description":"This operation will simply output true if the permissions have been stored.","content":{"text/plain":{"schema":{"type":"boolean"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}}},"components":{"schemas":{"GetSpecificationVersionSchema":{"type":"object","properties":{"startDateTime":{"type":"string","format":"datetime","example":"2001-02-03 14:15:16"},"generic":{"type":"boolean","example":true},"specs":{"$ref":"#/components/schemas/Specs"}}},"Specs":{"type":"object","additionalProperties":true,"properties":{"numericfield":{"type":"object","properties":{"min":{"type":"integer","nullable":true,"example":null},"innermin":{"type":"integer","nullable":true,"example":3},"goal":{"type":"integer","nullable":true,"example":5},"innermax":{"type":"integer","nullable":true,"example":null},"max":{"type":"integer","nullable":true,"example":9}}},"selectfield":{"type":"array","items":{"type":"string"},"example":["Option One","Option Two"]}}},"GetSetDefinitionSchema":{"type":"object","properties":{"name":{"type":"string"},"group":{"type":"string"},"indexField":{"type":"string"},"fields":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/FieldsTypeDate"},{"$ref":"#/components/schemas/FieldsTypeSelect"},{"$ref":"#/components/schemas/FieldsTypeNumeric"},{"$ref":"#/components/schemas/FieldsTypeText"}]}}}},"FieldsTypeText":{"allOf":[{"$ref":"#/components/schemas/GetSetDefinitionGlobalFields"},{"type":"object","properties":{"multiLine":{"type":"boolean","nullable":true}}}]},"FieldsTypeNumeric":{"allOf":[{"$ref":"#/components/schemas/GetSetDefinitionGlobalFields"},{"type":"object","properties":{"decimals":{"type":"integer","nullable":true},"default":{"type":"integer"}}}],"example":{"name":"old","label":"Old field","abbreviation":"Old","unit":"m/s<sup>2</sup>","type":"numeric","required":false,"decimals":2,"default":0,"active":false}},"FieldsTypeSelect":{"allOf":[{"$ref":"#/components/schemas/GetSetDefinitionGlobalFields"},{"type":"object","properties":{"listId":{"type":"integer"},"listField":{"type":"string"},"listFilter":{"type":"string"}}}],"example":{"name":"product","label":"Product","abbreviation":"Prod","unit":null,"type":"select","required":true,"listId":123,"listField":"code","listFilter":"group = 1","active":"true,"}},"FieldsTypeDate":{"allOf":[{"$ref":"#/components/schemas/GetSetDefinitionGlobalFields"},{"type":"object","properties":{"format":{"type":"string","enum":["date","datetime"]}}}],"example":{"name":"date","label":"Date","abbreviation":"Date","unit":null,"type":"date","required":true,"format":"datetime","active":true}},"GetSetDefinitionGlobalFields":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"abbreviation":{"type":"string"},"unit":{"type":"string","nullable":true},"type":{"type":"string","enum":["date","numeric","select","text"]},"required":{"type":"boolean"},"active":{"type":"boolean"}}},"GetAllStatisticsSchema":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","properties":{"count":{"type":"integer","example":10},"no-spec":{"type":"integer","example":0},"in-spec":{"type":"integer","example":7},"offspec-internal":{"type":"integer","example":0},"offspec-external":{"type":"integer","example":3},"min":{"type":"number","example":8.46},"max":{"type":"number","example":8.54},"sum":{"type":"number","example":84.96},"avg":{"type":"number","example":8.5},"stddev":{"type":"number","example":0.02}}}}},"SpecificationsEvaluation":{"type":"object","additionalProperties":{"type":"object","properties":{"count":{"type":"integer","example":180},"no-spec":{"type":"integer","example":40},"in-spec":{"type":"integer","example":119},"offspec-internal":{"type":"integer","example":16},"offspec-external":{"type":"integer","example":5},"avg":{"type":"integer","example":10},"stddev":{"type":"integer","example":24},"cp":{"type":"number","example":0.765},"cpk":{"type":"number","example":0.669},"pp":{"type":"number","example":0.127},"ppk":{"type":"number","example":0.111},"lcl":{"type":"number","example":-61.04},"ucl":{"type":"number","example":81.04}}}}},"responses":{"GetSpecificationVersionResponse":{"description":"The output will be a JSON-encoded object with two properties: startDateTime and specs. The latter is another object with properties for each spec field (numeric or select type).\n\nIf the specification version is generic, a third property (`generic`) will be present. A generic specification version applies to all index values.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSpecificationVersionSchema"}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"StoreResultsResponse":{"description":"The output will be a JSON-encoded array which mirrors the results parameter: for each result that was specified, the array will contain either a string describing an error, or `null` if no error occured.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","nullable":true}},"example":[null,"Date is required, but no value has been entered.",null,"Unknown field: 'invalidfield'"]}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"GetSetDefinitionResponse":{"description":"The output will be a JSON-encoded object.\n\nFor both analysis sets and selection lists, the object will have properties `name` and `fields`. Analysis sets will also have `group` and `indexField`, which might be `null`.\n\nThe `fields` value will be an array of objects. These objects are listed in order and describe the fields. Object properties will vary based on the field `type`:\n\n* `date` fields have a `format` property, which is either `date` or `datetime`.\n\n* `numeric` fields all have `decimals`. If this is null, the field holds a floating point value. Calculations have a `formula`, while others have a `default`.\n\n* `select` fields have properties (`listId, listField, listFilter`) that define which selection list the field is based on, and which of list's fields is selected, along with which filter (see the `product` field in the example below).\n\n* `text` fields have a `multiLine` property with a boolean value.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSetDefinitionSchema"}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"GetSpecificationEvaluationResponse":{"description":"The output will be a JSON-encoded array. Each array element contains the following JSON object:\n\nThe `count` represents the number of values\n\nThe `no-spec` represents the number of values without spec\n\nThe `in-spec` represents the number of values within spec bandwidth\n\nThe `offspec-internal` represents the number of values off-spec in the internal spec range\n\nThe `offspec-external` represents the number of values off-spec in the external spec range\n\nThe `avg` represents the average of all the values of the field\n\nThe `stddev` represents the standard deviation of all the values of the field\n\nThe `cp` represents the Cp value\n\nThe `cpk` represents the Cpk value\n\nThe `pp` represents the Pp value\n\nThe `ppk` represents the Ppk value\n\nThe `lcl` represents the Computed value: Average - 3x standard deviation\n\nThe `ucl` represents the Computed value: Average + 3x standard deviation\n","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SpecificationsEvaluation"}}},{"$ref":"#/components/schemas/SpecificationsEvaluation"}]}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"GetAllStatisticsResponse":{"description":"The output will be a JSON-encoded array. Each array element contains the following JSON object:\n\nThe `count` represents the number of values\n\nThe `no-spec` represents the number of values without spec\n\nThe `in-spec` represents the number of values within spec bandwidth\n\nThe `offspec-internal` represents the number of values off-spec in the internal spec range\n\nThe `offspec-external` represents the number of values off-spec in the external spec range\n\nThe `min` represents the minimum value of the field\n\nThe `max` represents the maximum value of the field\n\nThe `sum` represents the sum of all the values of the field\n\nThe `avg` represents the average of all the values of the field\n\nThe `stddev` represents the standard deviation of all the values of the field\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAllStatisticsSchema"}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"GetAllSetsResponse":{"description":"The output will be a JSON-encoded array. Each array element contains a JSON object.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Id","example":1},"name":{"type":"string","description":"The name value will be the name of the retrieved analysis set or selection list","example":"Analysis Set 1"},"groupId":{"type":"integer","description":"The groupId value will be the id of the corresponding group. null for selection lists","nullable":true,"example":1},"groupName":{"type":"string","description":"The groupName value will be the name of the corresponding group. Selection lists for selection lists","example":"Analysis Set Group 1"},"topLevelMenu":{"type":"string","description":"The topLevelMenu value will be the top level menu value.","example":"Top Level Menu"}}}}}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"GetResultsResponse":{"description":"The output will be a JSON-encoded array of objects. Each object represents a result and one key/value pair for each field.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}},"example":[{"date":"2001-02-03 14:15:16","numeric":123,"numerico":"<321","select":"option value","check":true},{"groupname":"Test results"}]}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"NotModified":{"description":"Not Modified","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"Forbidden":{"description":"Forbidden","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}},"example":{"error":"No read permission for this set"}}}},"TooManyRequests":{"description":"Too many requests","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}}},"BadRequest":{"description":"Bad Request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}},"example":{"error":"Invalid parameter: sort field 'batchnr'. No such field in set."}}}}},"securitySchemes":{"ApiToken":{"type":"http","scheme":"bearer"},"access_token":{"type":"apiKey","name":"access_token","in":"query"}}},"x-readme":{"explorer-enabled":true,"proxy-enabled":true,"samples-enabled":true}}