Type checking error messages ============================ This document provides explanations of several common type checking errors that may occur when attempting to save a typed object (TO) to the Workspace Service (WSS) that doesn't match the specified type. Assume that the following spec has been released:: module AModule { /* @optional opt */ typedef structure { list> array_of_maps; int an_int; float a_float; string a_string; int opt; } AType; }; The examples below show an example object, the error received, and an explanation of the error. Missing property ---------------- **JSON**:: {"array_of_maps": [{"one": 1}, {"two": 2}], "a_float": 1.4, "a_string": "s" } **WSS error**: ``object has missing required properties (["an_int"]), at /`` **Explanation**: The non-optional field an_int is missing. Float vs. string ---------------- **JSON**:: {"array_of_maps": [{"one": 1}, {"two": 2}], "an_int": "1", "a_float": "1", "a_string": "1" } **WSS error**: ``instance type (string) does not match any allowed primitive`` ``type (allowed: ["integer","number"]), at /a_float`` **Explanation**: The value for a_float must be a number, but was sent as a string. Integer vs. string ------------------ **JSON**:: {"array_of_maps": [{"one": 1}, {"two": 2}], "an_int": "1", "a_float": 1, "a_string": "1" } **WSS error**: ``instance type (string) does not match any allowed primitive`` ``type (allowed: ["integer"]), at /an_int`` **Explanation**: The value for an_int must be an integer, but was sent as a string. Integer vs. float ----------------- **JSON**:: {"array_of_maps": [{"one": 1}, {"two": 2}], "an_int": 1.4, "a_float": 1, "a_string": "1" } **WSS error**: ``instance type (number) does not match any allowed primitive`` ``type (allowed: ["integer"]), at /an_int`` **Explanation**: The value for an_int must be an integer, but was sent as a float. String vs. integer ------------------ **JSON**:: {"array_of_maps": [{"one": 1}, {"two": 2}], "an_int": 1, "a_float": 1.4, "a_string": 1 } **WSS error**: ``instance type (integer) does not match any allowed primitive`` ``type (allowed: ["string"]), at /a_string`` **Explanation**: The value for a_string must be a string, but was sent as an integer. Embedded -------- **JSON**:: {"array_of_maps": [{"one": 1}, {"two": "2"}], "an_int": 1, "a_float": 1.4, "a_string": "s" } **WSS error**: ``instance type (string) does not match any allowed primitive`` ``type (allowed: ["integer"]), at /array_of_maps/1/two`` **Explanation**: The value of the two field in the subdocument in the second position of the array_of_maps array must be an integer, but was sent as a string. Optional -------- **JSON**:: {"array_of_maps": [{"one": 1}, {"two": 2}], "an_int": 1, "a_float": 1.4, "a_string": "s", "opt": "1" } **WSS error**: ``instance type (string) does not match any allowed primitive`` ``type (allowed: ["integer"]), at /opt`` **Explanation**: The value of the optional field opt must be an integer, but was sent as a string. Note that in previous examples no error occurred even though the optional field was omitted.