Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
Toggle table of contents sidebar

# bson_validate_flags_t

Document validation options

## Synopsis

    #include <bson/bson-types.h>

    typedef enum {
      BSON_VALIDATE_NONE = 0,
      BSON_VALIDATE_UTF8 = (1 << 0),
      BSON_VALIDATE_DOLLAR_KEYS = (1 << 1),
      BSON_VALIDATE_DOT_KEYS = (1 << 2),
      BSON_VALIDATE_UTF8_ALLOW_NULL = (1 << 3),
      BSON_VALIDATE_EMPTY_KEYS = (1 << 4),
    } bson_validate_flags_t;

## Description

`bson_validate_flags_t` is a set of binary flags which may be combined to specify a level of BSON document validation.

A value of `0`, `false`, or `BSON_VALIDATE_NONE` equivalently requests the minimum applicable level of validation.

In the context of validation APIs bson_validate(), bson_validate_with_error(), and bson_validate_with_error_and_offset() the minimum validation still guarantees that a document can be successfully traversed by bson_iter_visit_all().

Higher level APIs using this type may have different minimum validation levels. For example, `libmongoc` functions that take `bson_validate_flags_t` use `0` to mean the document contents are not visited and malformed headers will not be detected by the client.

Each defined flag aside from `BSON_VALIDATE_NONE` describes an optional validation feature that may be enabled, alone or in combination with other features:

- `BSON_VALIDATE_NONE` Minimum level of validation; in `libbson`, validates element headers.

- `BSON_VALIDATE_UTF8` All keys and string values are checked for invalid UTF-8.

- `BSON_VALIDATE_UTF8_ALLOW_NULL` String values are allowed to have embedded NULL bytes.

- `BSON_VALIDATE_DOLLAR_KEYS` Prohibit keys that start with `$` outside of a “DBRef” subdocument.

- `BSON_VALIDATE_DOT_KEYS` Prohibit keys that contain `.` anywhere in the string.

- `BSON_VALIDATE_EMPTY_KEYS` Prohibit zero-length keys.

See also

bson_validate(), bson_validate_with_error(), bson_validate_with_error_and_offset().
bson_visitor_t can be used for custom validation, Example Custom Validation.