### Struct

# Secret Schema

#### Description [src]

    struct SecretSchema {
      const gchar* name;
      SecretSchemaFlags flags;
      SecretSchemaAttribute attributes[32];
    }

Represents a set of attributes that are stored with an item.

These schemas are used for interoperability between various services storing the same types of items.

Each schema has a name like `org.gnome.keyring.NetworkPassword`, and defines a set of attributes, and types (string, integer, boolean) for those attributes.

Attributes are stored as strings in the Secret Service, and the attribute types simply define standard ways to store integer and boolean values as strings. Attributes are represented in libsecret via a `GHashTable` with string keys and values. Even for values that defined as an integer or boolean in the schema, the attribute values in the `GHashTable` are strings. Boolean values are stored as the strings ‘true’ and ‘false’. Integer values are stored in decimal, with a preceding negative sign for negative integers.

Schemas are handled entirely on the client side by this library. The name of the schema is automatically stored as an attribute on the item.

Normally when looking up passwords only those with matching schema names are returned. If the schema `flags` contain the `SECRET_SCHEMA_DONT_MATCH_NAME` flag, then lookups will not check that the schema name matches that on the item, only the schema’s attributes are matched. This is useful when you are looking up items that are not stored by the libsecret library. Other libraries such as libgnome-keyring don’t store the schema name.

Additional schemas can be defined via the `SecretSchema` structure like this:

    // in a header:

    const SecretSchema * example_get_schema (void) G_GNUC_CONST;

    #define EXAMPLE_SCHEMA  example_get_schema ()

    // in a .c file

    const SecretSchema *
    example_get_schema (void)
    {
        static const SecretSchema the_schema = {
            "org.example.Password", SECRET_SCHEMA_NONE,
            {
                {  "number", SECRET_SCHEMA_ATTRIBUTE_INTEGER },
                {  "string", SECRET_SCHEMA_ATTRIBUTE_STRING },
                {  "even", SECRET_SCHEMA_ATTRIBUTE_BOOLEAN },
                {  NULL, 0 },
            }
        };
        return &the_schema;
    }

###### Structure members

`name`

  The dotted name of the schema.

`flags`

  Flags for the schema.

`attributes`

  The attribute names and types of those attributes.

Stability: Stable

#### Constructors

###### secret_schema_new

Using this function is not normally necessary from C code.

###### secret_schema_newv

Using this function is not normally necessary from C code. This is useful for constructing `SecretSchema` structures in bindings.

#### Instance methods

###### secret_schema_ref

Adds a reference to the `SecretSchema`.

###### secret_schema_unref

Releases a reference to the `SecretSchema`.