com.snowplowanalytics.iglu.core.typeclasses

Type members

Classlikes

This type class can be used to extract a SchemaKey from a piece of self-describing data.

This type class can be used to extract a SchemaKey from a piece of self-describing data.

The SchemaKey contains details about the schema of the data.

An example input is:

 {
    "schema": "iglu:com.vendor/user_entity/jsonschema/1-0-0",
    "data": {
       "id": "78abb66e-a5ad-4772-96ec-d880650cd0b2",
       "email": "[email protected]"
    }
  }

where "schema" contains information about the vendor, name, format and version of the schema and can be extracted as SchemaKey.

Type parameters:
E

Any type that can include a reference to its own schema. It's mostly intended for various JSON ADTs, like Json4s, Jackson, Circe, Argonaut et al, but can also be something like Thrift, Map[String, String], etc.

This type class can be used to extract a SchemaMap from a self-describing schema.

This type class can be used to extract a SchemaMap from a self-describing schema.

The SchemaMap contains details about the schema itself that allow it to be identified.

An example input is:

  {
    "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#",
    "description": "Schema for a user entity",
    "self": {
       "vendor": "com.vendor",
       "name": "user_entity",
       "format": "jsonschema",
       "version": "1-0-0"
    },
    "type": "object",
    "properties": {
       "id": {
         "type": "string"
       },
       "email": {
         "type": "string"
       }
    }
  }

where "self" contains information about the vendor, name, format and version of the schema and can be extracted as SchemaMap.

Type parameters:
E

Any schema that can include a reference to itself. It's mostly intended for JSON schema, but can also be something like Thrift, Map[String, String], etc.

trait NormalizeData[D]

Type class to render self-describing data into it base type D.

Type class to render self-describing data into it base type D.

Type parameters:
D

Any generic type that can represent a piece of self-describing data. (See also ExtractSchemaKey.)

Type class to render a self-describing schema into its base type S.

Type class to render a self-describing schema into its base type S.

Type parameters:
S

Any generic type that can represent a self-describing schema. (See also ExtractSchemaMap.)

trait StringifyData[D]

Type class to render self-describing data into String.

Type class to render self-describing data into String.

Type parameters:
D

Any generic type that can represent a piece of self-describing data. (See also NormalizeData.)

Type class to render a self-describing schema into String.

Type class to render a self-describing schema into String.

Type parameters:
S

Any generic type that can represent a self-describing schema. (See also NormalizeSchema.)

trait ToData[E]

A mixin for ExtractSchemaKey, signalling that this particular instance of ExtractSchemaKey is intended for extracting data, not schema.

A mixin for ExtractSchemaKey, signalling that this particular instance of ExtractSchemaKey is intended for extracting data, not schema.

An example input is:

 {
    "schema": "iglu:com.vendor/user_entity/jsonschema/1-0-0",
    "data": {
       "id": "78abb66e-a5ad-4772-96ec-d880650cd0b2",
       "email": "[email protected]"
    }
  }

which contains information about a user that can be extracted as SelfDescribingData.

trait ToSchema[E]

A mixin for ExtractSchemaMap, signalling that this particular instance of ExtractSchemaMap is intended for extracting schema, not data.

A mixin for ExtractSchemaMap, signalling that this particular instance of ExtractSchemaMap is intended for extracting schema, not data.

An example input is:

  {
    "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#",
    "description": "Schema for a user entity",
    "self": {
       "vendor": "com.vendor",
       "name": "user_entity",
       "format": "jsonschema",
       "version": "1-0-0"
    },
    "type": "object",
    "properties": {
       "id": {
         "type": "string"
       },
       "email": {
         "type": "string"
       }
    }
  }

which contains a schema that can be extracted as a SelfDescribingSchema.