Available schemas

Streammachine schema definition

{
  "schema": {
    "schema_type": "AVRO",
    "schema_registry_ref": "public/public_clickstream/0.2.0"
  },
  "key_field": "producerSessionId",
  "pii_fields": {
    "customer/id": 0,
    "producerSessionId": 1
  },
  "validations": [
    {
      "field": "customer/id",
      "type": "regex",
      "value": "^.+$"
    },
    {
      "field": "url",
      "type": "regex",
      "value": "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"
    }
  ]
}

Serialization schema, type: AVRO

{
  "name": "ClickstreamEvent",
  "type": "record",
  "namespace": "io.streammachine.public_schemas.clickstream",
  "strmSchemaId": "clickstream",
  "fields": [
    {
      "name": "strmMeta",
      "type": {
        "name": "StrmMeta",
        "type": "record",
        "fields": [
          {
            "name": "schemaId",
            "type": "string"
          },
          {
            "name": "nonce",
            "type": "int"
          },
          {
            "name": "timestamp",
            "type": "long",
            "logicalType": "date"
          },
          {
            "name": "keyLink",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "billingId",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "consentLevels",
            "type": {
              "type": "array",
              "items": "int"
            }
          }
        ]
      }
    },
    {
      "name": "producerSessionId",
      "type": "string"
    },
    {
      "name": "url",
      "type": "string"
    },
    {
      "name": "eventType",
      "type": "string"
    },
    {
      "name": "referrer",
      "type": "string"
    },
    {
      "name": "userAgent",
      "type": "string"
    },
    {
      "name": "conversion",
      "type": "int"
    },
    {
      "name": "customer",
      "type": {
        "name": "Customer",
        "type": "record",
        "fields": [
          {
            "name": "id",
            "type": "string"
          }
        ]
      }
    },
    {
      "name": "abTests",
      "type": {
        "type": "array",
        "items": "string"
      }
    }
  ]
}

Streammachine schema definition

{
  "schema": {
    "schema_type": "AVRO",
    "schema_registry_ref": "public/public_demo_v1/0.1.0"
  },
  "key_field": "consistent_value",
  "pii_fields": {
    "consistent_value": 2,
    "unique_identifier": 1,
    "some_sensitive_value": 3
  },
  "validations": []
}

Serialization schema, type: AVRO

{
  "type": "record",
  "name": "DemoEvent",
  "namespace": "io.streammachine.schemas.demo.v1",
  "fields": [
    {
      "name": "strmMeta",
      "type": {
        "type": "record",
        "name": "StrmMeta",
        "fields": [
          {
            "name": "schemaId",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "nonce",
            "type": [
              "null",
              "int"
            ],
            "default": null
          },
          {
            "name": "timestamp",
            "type": [
              "null",
              "long"
            ],
            "default": null,
            "logicalType": "date"
          },
          {
            "name": "keyLink",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "billingId",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "consentLevels",
            "type": {
              "type": "array",
              "items": "int"
            }
          }
        ]
      },
      "doc": "TODO strmMeta will be nullable eventually, but Gateway functionality needs to be verified first!"
    },
    {
      "name": "unique_identifier",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "any value. For illustration purposes: use a value that is consistent over time like a customer or device ID."
    },
    {
      "name": "consistent_value",
      "type": "string",
      "doc": "any value. For illustration purposes: use a value that is consistent over a limited period like a session."
    },
    {
      "name": "some_sensitive_value",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "any value. For illustration purposes: use a value that could identify a user over time based on behavior, like browsing behavior (e.g. urls)."
    },
    {
      "name": "not_sensitive_value",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "any value. For illustration purposes: use a value that is not sensitive at all, like the rank of an item in a set."
    }
  ]
}

Streammachine schema definition

{
  "schema": {
    "schema_type": "AVRO",
    "schema_registry_ref": "public/public_nps_unified_v1/0.1.0"
  },
  "key_field": "session_id",
  "pii_fields": {
    "device_id": 1,
    "session_id": 1,
    "customer_id": 1
  },
  "validations": []
}

Serialization schema, type: AVRO

{
  "type": "record",
  "name": "KioskEvent",
  "namespace": "io.streammachine.schemas.nps.unified.v1",
  "fields": [
    {
      "name": "strmMeta",
      "type": {
        "type": "record",
        "name": "StrmMeta",
        "fields": [
          {
            "name": "schemaId",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "nonce",
            "type": [
              "null",
              "int"
            ],
            "default": null
          },
          {
            "name": "timestamp",
            "type": [
              "null",
              "long"
            ],
            "default": null,
            "logicalType": "date"
          },
          {
            "name": "keyLink",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "billingId",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "consentLevels",
            "type": {
              "type": "array",
              "items": "int"
            }
          }
        ]
      },
      "doc": "TODO strmMeta will be nullable eventually, but Gateway functionality needs to be verified first!"
    },
    {
      "name": "brand_source",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "Brand or media source like Kiosk"
    },
    {
      "name": "platform",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "Viewer platform, any value as long as consistent"
    },
    {
      "name": "os",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "OS Release Number. TODO details"
    },
    {
      "name": "version",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "App version number"
    },
    {
      "name": "device_id",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "(allowed) device ID. UUID, GUID, PII?"
    },
    {
      "name": "customer_id",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "Existing or generated ID?, PII"
    },
    {
      "name": "consent_level",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "TODO what does this mean?"
    },
    {
      "name": "session_id",
      "type": "string",
      "doc": "Session ID as set by producer, e.g. the browser cookie, or app open ID"
    },
    {
      "name": "swimlane_id",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "A unique identifier for the lane"
    },
    {
      "name": "swimlane_rank",
      "type": [
        "null",
        "int"
      ],
      "default": null,
      "doc": "Displayed rank of the swimlane. TBD start at 1"
    },
    {
      "name": "swimlane_header",
      "type": [
        "null",
        "string"
      ],
      "default": null
    },
    {
      "name": "swimlane_in_view",
      "type": [
        "null",
        "int"
      ],
      "default": null,
      "doc": "Contains time > x% of item was in viewport. Implementation tbd."
    },
    {
      "name": "swimlane_action",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "Pin or unpin, or opt-in in e.g. Volkskrant"
    },
    {
      "name": "article_id",
      "type": [
        "null",
        "string"
      ],
      "default": null
    },
    {
      "name": "article_rank",
      "type": [
        "null",
        "int"
      ],
      "default": null,
      "doc": "TBD start at 1"
    },
    {
      "name": "article_title",
      "type": [
        "null",
        "string"
      ],
      "default": null
    },
    {
      "name": "article_in_view",
      "type": [
        "null",
        "int"
      ],
      "default": null,
      "doc": "Contains time > x% of item was in viewport. TODO tbd."
    },
    {
      "name": "article_action",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "click, ..."
    },
    {
      "name": "followable_id",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "A server-set item id for that specific item"
    },
    {
      "name": "followable_rank",
      "type": [
        "null",
        "int"
      ],
      "default": null,
      "doc": "Displayed rank of the item. TBD start at 1"
    },
    {
      "name": "followable_title",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "The item title as displayed to a user"
    },
    {
      "name": "followable_type_value",
      "type": [
        "null",
        "boolean"
      ],
      "default": null,
      "doc": "The value that corresponds to the followable type, e.g. Stentor for type Brand"
    },
    {
      "name": "followable_type",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "The Followable type, e.g. manually, article, author, brand"
    },
    {
      "name": "followable_context",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "The Followable context, e.g. article+user, specific user, user-defined followable"
    },
    {
      "name": "followable_in_view",
      "type": [
        "null",
        "int"
      ],
      "default": null,
      "doc": "Contains time > x% of item was in viewport. Implementation tbd"
    },
    {
      "name": "followable_clicked",
      "type": [
        "null",
        "boolean"
      ],
      "default": null,
      "doc": "Set to true if click event captured"
    },
    {
      "name": "followable_action",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "Follow or Unfollow"
    }
  ]
}

Streammachine schema definition

{
  "schema": {
    "schema_type": "AVRO",
    "schema_registry_ref": "public/public_nps_unified_v3/3.0.0"
  },
  "key_field": "session_id",
  "pii_fields": {
    "device_id": 1,
    "session_id": 1,
    "customer_id": 1
  },
  "validations": []
}

Serialization schema, type: AVRO

{
  "type": "record",
  "name": "KioskEvent",
  "namespace": "io.streammachine.schemas.nps.unified.v3",
  "fields": [
    {
      "name": "strmMeta",
      "type": {
        "type": "record",
        "name": "StrmMeta",
        "fields": [
          {
            "name": "schemaId",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "nonce",
            "type": [
              "null",
              "int"
            ],
            "default": null
          },
          {
            "name": "timestamp",
            "type": [
              "null",
              "long"
            ],
            "default": null,
            "logicalType": "date"
          },
          {
            "name": "keyLink",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "billingId",
            "type": [
              "null",
              "string"
            ],
            "default": null
          },
          {
            "name": "consentLevels",
            "type": {
              "type": "array",
              "items": "int"
            }
          }
        ]
      }
    },
    {
      "name": "event_type",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "FollowableFollowed / FollowableUnfollowed"
    },
    {
      "name": "brand_source",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "Brand or media source like Kiosk"
    },
    {
      "name": "platform",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "Viewer platform, any value as long as consistent"
    },
    {
      "name": "os",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "OS Release Number. TODO details"
    },
    {
      "name": "version",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "App version number"
    },
    {
      "name": "device_id",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "(allowed) device ID. UUID, GUID, PII?"
    },
    {
      "name": "customer_id",
      "doc": "Stores a customer ID as key-value to contain different ID's in use",
      "type": {
        "type": "array",
        "items": "string"
      }
    },
    {
      "name": "session_id",
      "type": "string",
      "doc": "Session ID as set by producer, e.g. the browser cookie, or app open ID"
    },
    {
      "name": "context_id",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "A unique identifier for the context (UUID)"
    },
    {
      "name": "article_id",
      "type": [
        "null",
        "string"
      ],
      "default": null
    },
    {
      "name": "followable_id",
      "type": [
        "null",
        "string"
      ],
      "default": null,
      "doc": "A server-set item id for that specific item"
    },
    {
      "name": "followable_rank",
      "type": [
        "null",
        "int"
      ],
      "default": null,
      "doc": "Displayed rank of the item. TBD start at 1"
    }
  ]
}