9Enriched Social Data Feed API

Overview

The Enriched Social Data Feed (ESDF) API exposes enrichments generated by Oracle Social Cloud’s real-time and historical pipelines. The enrichments are derived from public social data from millions of users that has been gathered, cleaned, and analyzed by Oracle. Based on topic requirements that you define, you use the API to retrieve enrichments that are ready for your use in your Business Intelligence systems.

The enrichments can be imported into another application for analysis or further action. The ESDF API complements existing BI systems by allowing social enrichments to be analyzed so you can visualize in detail the reaction of consumers to an advertising campaign, and much more.

    Audience

    The EDSF API is intended for developers who want to and retrieve the enrichments derived from social data using the Enriched Social Data Feed API.

    To get the most benefit from this guide, you should be familiar with the following concepts:

    • Social media analytics

    • HTML

    • REST

    • API

    • JSON

    • XML

      Enrichment Type

      The Enriched Social Data Feed returns data enrichments, including indicators and sentimentLabels.

      Because of restrictions in the data provider agreement, messages provided in the Enriched Social Data Feed include only enrichments and doesn't include either the author data or the message body.

      Enrichments provided by the Enriched Social Data Feed API are summarized in the following table.

      Enrichment Description
      topicMatch

      The one enrichment that all enriched messages will have. Indicates the topic that selected this message.

      indicatorMatch

      A set of zero or more indicator enrichments.

      sentimentLabel

      An estimate of the overall attitude of the text. Same as the sentiment analysis in the Enriched Social Data Feed API. The sentimentLabel value indicates a positive, neutral, or negative message.

      hashtag

      A hashtag is found in the text.

      userMention

      A mention of a user in the text. For example, username.

      extractedURL

      A URL is found in the text.

      namedEntity

      An entity extracted from a text. For example, person, location, or company.

        Usage Guidelines

        The API common guidelines and usage conventions are applicable to ESDF API. The guidelines describe request processing, authentication requirements, HTTP methods, status codes, and more. The API relies on a REST-based architectural style that provides a convenient and consistent approach to sending and requesting data.

        For a general introduction to REST, see the following third-party Wikipedia article: Representational State Transfer.

          Basic Authentication

          The Enriched Social Data Feed API uses HTTP Basic authentication. You must have a customer with a user name and password.

          The user name is the customer's (or partner's) ID and the password is the customer's (or partner's) API Key. You must specify the user name and password in your cURL requests like this:

          curl --user 'username:password' 

          HTTP Basic normally expects two credentials to be provided, a user name and a password. Because the APIs aren't intended for use by individual users, we use fixed keys instead:

          • Username: Customer ID. The Customer ID is specific to each customer, and is the same for all the APIs you use.

          • Password: API Key. You're assigned an API Key for each API. API Keys can be requested through Oracle Customer Support.

          A Customer ID and API Key must be provided with every request. When using query-based APIs, such as checking the job status for the Enriched Social Data Feed API, you can see only the records that were created by the same Customer ID used for the query. This keeps records for each customer private to that customer.

            HTTP Headers

            The following table lists HTTP headers that are used to communicate with the server.

            Name Description Required

            Accept

            Specifies the type of content that can be received in the response.

            No
            Authorization

            Specifies the authorization information. Basic authentication with a Customer ID and API Key. For example:

            Authorization: Basic CustomerId:APIKey

            Yes

            Content-Type

            Specifies the type of content that the client is sending. The Enriched Social Data Feed API supports only JSON, so the value is always Content-type: application/json; charset=utf-8

            No

            Content-Encoding

            Specifies the type of encoding used on the data. You can use it to specify gzip compression.

            No
            Host

            The host processing the request. The host is always the following value:

            api.collectiveintellect.com

            Yes

            HTTP/1.1

            Specifies that the request is using HTTP 1.1

            No

              HTTP Status Codes

              The following table lists HTTP status codes.

              Status Code Desctiption
              200

              The request was successful; however, the job might not have completed successfully. This status is returned from a GET request when a job is pending, when a job completed successfully, or when a job failed during processing after a Job ID was assigned.

              201

              The job was created successfully.

              204

              No Content. The request was successfully executed; the response doesn't have content.

              304

              Not Modified. The document hasn't been modified for a conditional GET request.

              400

              Bad Request. The server didn't understand the request due to malformed syntax.

              401

              Unauthorized. For example, this error can occur if you send an invalid API Key.

              403

              You provided valid credentials, but you don't have permission for the specific resource/action you're requesting. For example, if you provide valid credentials for company A, but you attempt to create a job with company B's ID, you receive a 403.

              404

              Bad request. This status is returned from a POST request when the request contains a Job ID that doesn't exist on the system. For example, you see this response if you use a Job ID for a job that has already been deleted from the system.

              422

              Bad request. This status is returned from a POST request when an error occurs before assigning a Job ID. For example, you see this response if you try to create a job containing more than 1,000 documents.

              5nn

              Internal Server Error. The server encountered an unexpected condition that prevented it from fulfilling the request. If this error recurs, contact Oracle Support.

                Topic Configuration

                You create and maintain your topics using Oracle Social Cloud. For each topic, you must select route to customer check-box in the UI. This option is located in the Route selection from the topic gear menu.

                After a data feed is activated, you can continually add new topics to the feed as new needs arise.

                Important: All active topics that are routed to the feed will pushed to the Datafeed. There's no way to make a request for a single topic if multiple topics are routed to the Datafeed.

                  HTTP Methods and Root URI

                  The Enriched Social Data Feed accepts HTTP GET requests to retrieve a batch of enriched messages.

                    Reference

                    This reference information describes endpoints, requests, parameters, and sample requests and responses.

                      Retrieve Messages (GET)

                      This GET request retrieves a batch of enriched messages from the message stream.

                      Syntax

                      https://{authentication:@api.collectiveintellect.com/datafeedAPI/v1/feeds/FEED_KEY/messages

                      For authentication, use one of the following types of authentication:

                      • HTTP basic authentication:

                        CustomerId:APIKey

                      • Front end (using a web browser):

                        username=CustomerId, password=APIKey

                      Request Parameter

                      Name Typer Description
                      fromOffset

                      Encoded value

                      A URL from the fromOffset parameter in a previous response, shown in links where “rel” == “next”.

                      You can request values relative to the responses from previous requests, not from a particular point in time.

                      Example Request

                      curl -u ${customerID}:${api_key} https://api.collectiveintellect.com/datafeedApi/v1/feeds/${feed_id}/messages

                      Response

                      {
                        "enrichedMessages": [
                          {
                            "message": {
                              "type": "microBlog",
                              "subType": "repost",
                              "dataSource": {"name":"Twitter", "url":"twitter.com"},
                              "id": "3185834425331386649",
                              "versioning": {
                                "contentVersion": "123",
                                "metadataVersion": "456
                              },
                              "deliveryId": "AA342BD32349",
                              "url": "http://twitter.com/andreacabrerac1/status/762854091642974209",
                              "publishedAt": "2016-08-22T05:01:14Z",
                              "sourceName": "Twitter",
                              "sourceUrl": "http://twitter.com",
                              "author": {
                                "name": "andreacabrerec1",
                              },
                              "reviewData": {
                                "overallRating": "75.0",
                                "namedRatings": [
                                  {"name": "Reader123",
                                   "rating": "75.0"
                                  }
                       ],
                                "itemData": {
                                  "displayName": "The Adventures of Tom Sawyer",
                                  "url": "http://example.com/books/TheAdventuresOfTomSaywer",
                                  "categoryDisplayName": "Books",
                                  "categoryUrl": "http://example.com/categories/books"
                                }
                              },
                              "media": [
                                 {"type":"image","name":"thumbnail","urls":[{"url":"https://content.twitter.com/186293760_n.jpg","name":"url"}]},
                                 {"type":"video","name":"low_resolution","urls":[{"url":"https://content.twitter.com/186293760.mov","name":"url"}]}
                              ]
                            },
                        "enrichments": [
                                      {
                                          "text": "CNN",
                                          "offset": 13,
                                          "length": 16,
                                          "entityType": "company",
                                          "confidenceLabel": "high",
                                          "type": "namedEntity"
                                     },
                                     {
                                          "text": "Trump",
                                          "offset": 1,
                                          "length": 6,
                                          "entityType": "person",
                                          "confidenceLabel": "high"
                                          "type": "namedEntity"
                                      },
                       {
                                "type": "sentimentLabel",
                                "label": "positive",
                                "enrichables": [
                                  {
                                    "type": "anchorSegment",
                                    "id": "14614DVS",
                                    "offset": 0,
                                    "length": 149,
                                    "anchor": {
                                      "offset": 51,
                                      "length": 8,
                                      "text": "Chipotle"
                                     }
                                   } 
                                ],
                              }  
                       {
                                "type": "topicMatch",
                                "topicId": "186777",
                                "topicVersion": "1",
                                "topicName": "Chipotle",
                                "enrichables": [
                                  {
                                    "type": "anchorSegment",
                                    "id": "2394BFWS3S",
                                    "offset": 0,
                                    "length": 149,
                                    "anchor": {
                                      "offset": 51,
                                      "length": 8,
                                      "text": "Chipotle"
                                    }
                                  }
                                ]
                              },
                              {
                                "type": "indicatorMatch",
                                "indicatorId": "41228",
                                "indicatorVersion": "1",
                                "indicatorName": "Chipotle",
                                "enrichables": [
                                  {
                                    "type": "anchorSegment",
                                    "id": "Z343FDH",
                                    "offset": 0,
                                    "length": 149,
                                    "anchor": {
                                      "offset": 51,
                                      "length": 8,
                                      "text": "Chipotle"
                                    }
                                  }
                                ]
                              }
                            ]
                          }
                        ],
                       "links": [
                          {
                            "rel": "self",
                            "href": "http://slc06caf.oracle.com/datafeedApi/v1/feeds/262114e5abc6c8f0/messages"
                          },
                          {
                            "rel": "next",
                            "href": "http://slc06caf.oracle.com/datafeedApi/v1/feeds/262114e5abc6c8f0/messages?fromOffset=kkML"
                          }
                        ]
                      }
                      

                      Consumption Workflow

                      The messages endpoint provides access to all customer messages published between two weeks ago and the present, providing the topic has been active for at least two weeks.

                      Note: You might see more than two weeks of data, but only two weeks is guaranteed to be present.

                      When no parameters are specified, a GET request to this endpoint will return a batch containing messages from the beginning of the stream. The response will contain a links section that includes a next link. You can use this link to request the subsequent batch of messages. Using such links, you can process all available messages. At the end of the stream, the application will return a response with an empty messages element. The stream is loosely ordered. Iterating using fromOffset (as specified in the next link) will guarantee that all messages are returned, but the order of those messages isn't guaranteed.

                      Messages will be available for seven days from the time they're first made available on the feed. Within that timeframe, you can continue from where you last left off by using the next link from the last response you successfully processed. If it has been more than seven days since the messages referenced by the link were first made available, implying that those messages have been deleted, the link won't return an error, but it will advance to the earliest available messages.

                        Elements in Enriched Messages

                        The ESDF API provides enriched messages. An enriched message has two parts: a representation of the original message and a set of one or more enrichments message. The message portion includes elements from the original message (for example, URL, publish date). Note that you won't receive the original text of the message as per the legal agreements with our data providers. However, you're free to use the message's URL to navigate to the original message and retrieve its text.

                        The enrichments will at least consist of a topic match. A topic match is a match of one of your custom topics to a message. For example, if you have a topic that searches for all the instances of the word “penguin” then you will get the messages that have the word “penguin” in them. There are other enrichments which are given in the table below.

                        Apart from the tables below, we provide two additional specifications for enriched messages. The first one is the JSON schema that is used to generate the enriched messages. The second one is an example of an enriched message in JSON.

                        For additional information, refer to Enriched Messages, Enrichables, and Messages, specifically the Content Sub-Type and Author sections.

                        The following tables summarize the elements in an enriched message. The table below describes the elements of a message.

                        Element Name Type Format Required/Will Always be There in Every Message? Notes/Values
                        type string

                        alphabetic

                        enum

                        Yes The content type.
                        subtype string

                        alphabetic

                        enum

                        No

                        An elaboration on the content type.

                        dataSource string

                        alphabetic

                        enum

                        Yes

                        The name of the data source. For example, Twitter.

                        Id string Numeric Yes A unique identifier for the message. Use this for joins or deduplication.
                        versioning No Version types for a message, such as contentVersion and metadataVersion.
                        reviewData string alphanumeric No Product review and rating data if this message was part of a product review.
                        url string url Yes The URL for the message.
                        sourceUrl string url Yes The base URL of the data source. For example, http://twitter.com.
                        publishedAt string date-time Yes The UTC time when the message was published at its source.
                        sourceName string alphanumeric Yes The source of the message. For example, Twitter.
                        sourceUrl string url Yes The source URL of the message. For example, http://twitter.com.
                        sourceGeneratedId string alphanumeric No The ID of the message, as generated by its source. For example, Twitter ID.
                        author string alphanumeric No

                        The user name or handle of the author.

                        originalAuthor string alphanumeric No If the message is a repost (that is, when contentSubType is set to repost) then the author of the original message will appear here, when available.
                        languageTag string

                        alphabetic

                        enum

                        Yes The language used in the textual content of the message.

                        media (see the

                        table below)

                        array (list) Media No

                        A list of non-text media, such as images and videos.

                        This table describes the elements of a media.

                        Element Name Type Format Required/Will Always be There in Every Message? Notes/Values
                        Name string alphanumeric Yes The name of the media object indicating its function. For example, preview.
                        Urls array (list) media url (see the table below) Yes

                        This table describes the elements of a URL.

                        Element Name Type Format Required/Will Always be There in Every Message? Notes/Values
                        url string url Yes The URL for a media object.
                        name string alphabetic Yes The name of the URL, which indicates its use. For example, thumbnail.

                        This table describes the elements of a enrichments.

                        Element Name Type Format Required/Will Always be There in Every Message? Notes/Values
                        TopicMatch
                        TopicId string numeric Yes

                        A unique identifier for a topic.

                        topicVersion string numeric Yes Version of the topic. Each time a topic is modified its version number increments by 1.
                        topicName string alphanumeric Yes The name of the topic as specified by the customer.
                        enrichables array (list) No You will see enrichables in the table for many of the enrichments. The set of enrichable items that matched a topic. These represent portions of the text that apply to the given enrichment. For now, enrichables will be only a list of anchor segments, we will be adding additional enrichables fields in the future.
                        indicatorMatch
                        indicatorId string numeric Yes A unique identifier for the indicator.
                        indicatorVersion string numeric Yes Version of the indicator. Each time a indicator is modified its version increments by 1.
                        indicatorName string alphanumeric Yes

                        The name of the indicator.

                        enrichables array (list) Yes You will see enrichables in the table for many of the enrichments. The set of enrichable items that matched a topic. These represent portions of the text that apply to the given enrichment. For now, enrichables will be only a list of anchor segments, we will be adding additional enrichables fields in the future.
                        sentimentLabel
                        label string alphabetic Yes The label field is positive, negative, or neutral.
                        enrichables array (list) Yes You will see enrichables in the table for many of the enrichments. The set of enrichable items that matched a topic. These represent portions of the text that apply to the given enrichment. For now, enrichables will be only a list of anchor segments, we will be adding additional enrichables fields in the future.
                        Hashtag
                        offset numeric Yes The starting offset of the code point in the original text where the hashtag begins.
                        length numeric Yes The length of the hashtag from its starting offset.
                        userMention
                        offset numeric Yes The starting offset of the code point in the original text where the userMention begins.
                        length numeric Yes The length of the userMention from its starting offset.
                        namedEntity
                        entityType string

                        alphabetic

                        enum

                        No Type of entity extracted. Values are: person, location, company, brand.
                        offset numeric Yes

                        The point in the original text where the named entity begins, in UTF-8 code points.

                        length numeric Yes The length in UTF-8 code points of the named entity text from its starting offset.
                        confidenceLabel string

                        alphabetic

                        enum

                        Yes A plaintext interpretation of the confidence score. Values are: low, medium, or high.
                        confidenceScore numeric Yes A value between 0.0 and 1.0 indicating how certain the entity type matches the text (where 1.0 is the greatest certainty).

                          Enriched Messages

                          This is a reference topic for Enriched Messages.

                          enrichedMessage.json

                          {
                            "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                            "title": "enrichedMessage",
                            "type": "object",
                            "description": "A message and its enrichments",
                            "required": ["enrichments", "message"],
                            "additionalProperties": false,
                            "properties": {
                              "message": {
                                "description": "The message to which the enrichments apply to",
                                "$ref": "message.json"
                              },
                              "enrichments": {
                                "description": "Enrichments applied to the message",
                                "type": "array",
                                "minLength": 1,
                                "items": {
                                  "$ref": "enrichment.json"
                                }
                              }
                            }
                          }

                            Messages

                            Messages include Content Type and Data Source.

                            message.json

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "message",
                              "type": "object",
                              "description": "Message document with its metadata",
                              "required": ["type"],
                              "additionalProperties": false,
                              "properties": {
                                "type": {
                                  "$ref": "contentType.json"
                                },
                                "subType": {
                                  "$ref": "contentSubType.json"
                                },
                                "dataSource": {
                                  "$ref": "dataSource.json"
                                },
                                "id": {
                                  "description": "Unique identifier for this message (should be used for joins / deduplication).",
                                  "type": "string",
                                  "minLength": 1
                                },
                                "versioning": {
                                  "$ref": "versioning.json"
                                },
                                "reviewData": {
                                  "description": "Product review and rating data (only if this message was part of a product review)",
                                  "$ref": "reviewData.json"
                                },
                                "url": {
                                  "description": "Canonical URL for this message",
                                  "type": "string"
                                },
                                "publishedAt": {
                                  "description": "The UTC time when this message was published at its source",
                                  "type": "string",
                                  "format": "date-time"
                                },
                                "sourceName": {
                                  "description": "Name of the message's source (e.g., Twitter)",
                                  "type": "string",
                                  "minLength": 1
                                },
                                "sourceUrl": {
                                  "description": "Url of the message's source (e.g., http://twitter.com)",
                                  "type": "string",
                                  "minLength": 1
                                },
                                "sourceGeneratedId": {
                                  "description": "ID of this message as generated by its source (e.g., Twitter ID)",
                                  "type": "string",
                                  "minLength": 1
                                },
                                "author": {
                                  "description": "Author of the message",
                                  "$ref": "author.json"
                                },
                                "originalAuthor": {
                                  "description": "If this message is a repost (i.e., contentSubType is 'repost'), then the author of the original message will appear here when available",
                                  "$ref": "author.json"
                                },
                                "languageTag": {
                                  "description": "Language tag provided by the message source identifying the language used in the textual content of the message.",
                                  "$ref": "languageTag.json"
                                },
                                "media": {
                                  "type": "array",
                                  "description": "List of non-text media (images, video, etc.)",
                                  "items": {
                                    "$ref": "media.json"
                                  }
                                }
                              }
                            }

                            Content Type

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "contentType",
                              "type": "string",
                              "description": "Content type groups together different sources with similar content structure and size",
                              "enum": [
                                "messageBoard",
                                "blogSite",
                                "news",
                                "microBlog",
                                "socialSite",
                                "consumerReview",
                                "video",
                                "custom"
                              ]
                            }

                            Data Source

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "dataSource",
                              "type": "object",
                              "description": "The origin or provider (e.g., Twitter, Instagram, etc.) of a message",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "The name of the data source (e.g, 'Twitter')"
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The base URL of the data source (e.g, http://twitter.com)"
                                }
                              }
                            }

                            Content Sub-Type

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "contentSubType",
                              "type": "string",
                              "description": "An elaboration on the the content type",
                              "enum": [
                                "unknown",
                                "post",
                                "comment",
                                "reply",
                                "repost"
                              ]
                            }

                            Author

                            Information about an author includes Location, Language Tag, Text, Media, Enrichment base attributes, Topic Match, Indicator Match, Sentiment Label, Hashtag, UserMention, Symbol, and ExtractedUrl.

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "author",
                              "type": "object",
                              "properties": {
                                "name": {
                                  "description": "The username or handle of this author",
                                  "type": "string",
                                  "minLength": 1
                                }
                              }
                            }

                            Review Data

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "anchor",
                              "type": "object",
                              "javaType": "com.oracle.ci.public_models.v1.ReviewData",
                              "additionalProperties": false,
                              "description": "",
                              "properties": {
                                "overallRating": {
                                  "description": "The overall rating, normalized as a value from 0 - 100, of the rating.",
                                  "type": "string"
                                },
                                 "namedRatings": {
                                  "description": "The set of individual ratings that comprise this overall rating.",
                                   "type": "array",
                                   "items": {
                                     "$ref": "namedRating.json"
                                   }
                                },
                                "itemData": {
                                  "description": "The product or item to which these ratings apply.",
                                  "$ref": "reviewItemData.json"
                                }
                              }
                            }

                            Review Item Data

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "anchor",
                              "type": "object",
                              "javaType": "com.oracle.ci.public_models.v1.ReviewItemData",
                              "additionalProperties": false,
                              "description": "Information on the item being reviewed",
                              "properties": {
                                "displayName": {
                                  "description": "The name of the product.",
                                  "type": "string"
                                },
                                "url": {
                                  "description": "A URL to product.",
                                  "type": "string"
                                },
                                 "categoryDisplayName": {
                                  "description": "The name of the product's category.",
                                  "type": "string"
                                },
                                 "categoryUrl": {
                                  "description": "The URL to the product's category.",
                                  "type": "string"
                                }
                              }
                            }
                            

                            Named Rating

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "anchor",
                              "type": "object",
                              "javaType": "com.oracle.ci.public_models.v1.NamedRating",
                              "additionalProperties": false,
                              "description": "",
                              "properties": {
                                "name": {
                                  "description": "",
                                  "type": "string"
                                },
                                "rating": {
                                  "description": "The value, normalized from 0 - 100, of the rating. For example, two stars would yield a rating of 50 while four stars would yield 100.",
                                  "type": "string"
                                }
                              }
                            }

                            Language Tag

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "languageTag",
                              "type": "string",
                              "description": "IETF language tag",
                              "enum": [
                                "en",
                                "ca",
                                "cs",
                                "nl",
                                "fr",
                                "de",
                                "el",
                                "hu",
                                "it",
                                "ja",
                                "ko",
                                "pl",
                                "pt",
                                "ro",
                                "ru",
                                "zh-cn",
                                "es",
                                "sv",
                                "zh-tw",
                                "tr",
                                "ar",
                                "no",
                                "hr",
                                "da",
                                "fi",
                                "he",
                                "fa",
                                "sr-cyrl",
                                "sk",
                                "sl",
                                "th",
                                "sr-latn",
                                "eu",
                                "be",
                                "bg",
                                "et",
                                "gl",
                                "hi",
                                "is",
                                "id",
                                "ga",
                                "lv",
                                "lt",
                                "mk",
                                "ur",
                                "uk",
                                "vi",
                                "bs",
                                "sq",
                                "am",
                                "hy",
                                "az",
                                "bn",
                                "kk",
                                "uz",
                                "dv",
                                "gu",
                                "kn",
                                "km",
                                "lo",
                                "ml",
                                "mt",
                                "mr",
                                "ne",
                                "or",
                                "pa",
                                "si",
                                "sw",
                                "ta",
                                "te",
                                "tl",
                                "af",
                                "ka"
                              ]
                            }
                            

                            Media

                            Media includes Enrichments.

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "media",
                              "type": "object",
                              "description": "Non-text media (images, video, etc.) associated with a message",
                              "required": [
                                "type", "url"
                              ],
                              "additionalProperties": false,
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "A name for this media object, possibly indicating its function (e.g., 'preview')"
                                },
                                "urls": {
                                  "type": "array",
                                  "description": "URLs (canonical, tiny, etc.) for this media object",
                                  "items": {
                                    "$ref": "mediaUrl.json"
                                  },
                                  "minItems": 1
                                },
                                "type": {
                                  "type": "string",
                                  "description": "Type of an enrichment determines its contents",
                                  "enum": [
                                    "image",
                                    "video"
                                  ]
                                }
                              }
                            }
                            

                            Media URL

                            {
                              "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                              "title": "url",
                              "type": "object",
                              "description": "A URL for a media object",
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false,
                              "properties": {
                                "url": {
                                  "description": "A URL",
                                  "type": "string",
                                  "minLength": 1
                                },
                                "name": {
                                  "description": "A name for this URL (usually indicates its use, e.g, 'thumbnail')",
                                  "type": "string",
                                  "minLength": 1
                                }
                              }
                            }

                              Enrichments

                              Enrichment base attributes: enrichment.json

                              {
                                "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                "title": "enrichment",
                                "type": "object",
                                "description": "Information inferred from the contents and context of a message",
                                "javaType": "com.oracle.ci.public_models.v1.Enrichment",
                                "required": [
                                  "type"
                                ],
                                "additionalProperties": false,
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "Type of an enrichment determines its contents",
                                    "enum": [
                                      "topicMatch",
                                      "indicatorMatch",
                                      "identifiedLanguage",
                                      "authorInfluence",
                                      "sentimentLabel",
                                      "hashtag",
                                      "userMention",
                                      "symbol",
                                      "extractedUrl",
                                      "namedEntity"
                                    ]
                                  }
                                }
                              }
                              

                              Topic Match

                              {
                                "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                "title": "topicMatch",
                                "type": "object",
                                "description": "The identity and match criteria of a topic that a message matched against",
                                "extends": {
                                  "$ref": "enrichment.json"
                                },
                                "properties": {
                                  "topicId": {
                                    "description": "Unique identifier within all defined topics",
                                    "type": "string"
                                  },
                                  "topicVersion": {
                                    "description": "Version of the topic",
                                    "type": "string"
                                  },
                                  "topicName": {
                                     "description": "The name of the topic",
                                     "type": "string"
                                  },
                                  "enrichables": {
                                    "type": "array",
                                    "uniqueItems": true,
                                    "description": "The set of enrichable items that matched this topic",
                                    "items": {
                                      "$ref": "segment.json"
                                    },
                                    "minItems": 1
                                  }
                                }
                              }

                              Sentiment Label

                              {
                                "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                "title": "sentimentLabel",
                                "type": "object",
                                "description": "Sentiment (positive, negative, neutral).",
                                "extends": {
                                  "$ref": "enrichment.json"
                                },
                                "properties": {
                                  "label": {
                                    "description": "The sentiment value.",
                                    "type": "string",
                                    "enum": ["positive", "negative", "neutral"]
                                  },
                                  "enrichables": {
                                    "type": "array",
                                    "uniqueItems": true,
                                    "description": "The set of enrichables that received this sentiment score.",
                                    "items": {
                                      "$ref": "enrichable.json"
                                    },
                                    "minItems": 1
                                  }
                                }
                              }

                              Hashtag

                              {
                                "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                "title": "hashtag",
                                "type": "object",
                                "description": "An entity extracted from a text",
                                "extends": {
                                  "$ref": "enrichment.json"
                                },
                                "properties": {
                                  "offset": {
                                    "description": "The starting offset of the code point in the original text where the hashtag begins",
                                    "type": "integer"
                                  },
                                  "length": {
                                    "description": "The length of the hashtag from its starting offset",
                                    "type": "integer"
                                  }
                                }
                              }

                              UserMention

                              {
                                "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                "title": "userMention",
                                "type": "object",
                                "description": "An user entity extracted from a text",
                                "extends": {
                                  "$ref": "enrichment.json"
                                },
                                "properties": {
                                  "offset": {
                                    "description": "The starting offset of the code point in the original text where the userMention begins",
                                    "type": "integer"
                                  },
                                  "length": {
                                    "description": "The length of the userMention from its starting offset",
                                    "type": "integer"
                                  }
                                }
                              }

                              Symbol

                              {
                                  "$schema": "http://json-schema.org/draft-04/hyper-schema#", 
                                  "title": "symbol", 
                                  "type": "object", 
                                  "description": "A symbol entity extracted from a text",
                                  "extends": {
                                      "$ref": "enrichment.json"
                                  }, 
                                  "properties": { 
                                      "offset": {
                                          "description": "The starting offset of the code point in the original text where the symbol begins", 
                                          "type": "integer"
                                      }, 
                                      "length": {
                                          "description": "The length of the symbol from its starting offset", 
                                          "type": "integer"
                                      }
                                  }
                              }

                              ExtractedURL

                              {
                                  "$schema": "http://json-schema.org/draft-04/hyper-schema#", 
                                  "title": "extractedUrl", 
                                  "type": "object", 
                                  "description": "An url entity extracted from a text", 
                                  "extends": {
                                      "$ref": "enrichment.json"
                                  }, 
                                  "properties": { 
                                      "offset": {
                                          "description": "The starting offset of the code point in the original text where the url begins", 
                                          "type": "integer"
                                      }, 
                                      "length": {
                                          "description": "The length of the url from its starting offset", 
                                          "type": "integer"
                                      }
                                  }
                              }

                              Named Entity

                              {
                                "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                "title": "namedEntity",
                                "type": "object",
                                "description": "An entity extracted from a text (e.g., person, location, company)",
                                "javaType": "com.oracle.ci.public_models.v1.NamedEntity",
                                "additionalProperties": false,
                                "extends": {
                                  "$ref": "enrichment.json"
                                },
                                "properties": {
                                  "text": {
                                    "description": "The text of the entity as it appears in the original message text (e.g., \"Socrates\", \"Paris\", or \"Oracle\").",
                                    "type": "string"
                                  },
                                  "entityType": {
                                    "description": "The type of extracted entity (e.g., person, location, or company).",
                                    "type": "string",
                                    "enum": ["person", "location", "company"]
                                  },
                                  "offset": {
                                    "description": "The point in the original text where the named entity begins, in UTF-8 code points.",
                                    "type": "integer"
                                  },
                                  "length": {
                                    "description": "The length in UTF-8 code points of the named entity text from its starting offset.",
                                    "type": "integer"
                                  },
                                  "confidenceLabel": {
                                    "description": "A plaintext interpretation (low, medium, or high) of the confidence score.",
                                    "type": "string",
                                    "enum": ["low", "medium", "high"]
                                  },
                                  "confidenceScore": {
                                    "description": "A value between 0.0 and 1.0 indicating how certainly the entity type matches the text (where 1.0 is the greatest certainty)."
                                  }
                                }
                              }
                              

                                Enrichables

                                Enrichables include Anchor Segment and Anchor.

                                 {
                                  "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                  "title": "enrichable",
                                  "type": "object",
                                  "description": "Information inferred from the contents and context of a message",
                                  "additionalProperties": false,
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "Type of an enrichable determines its contents",
                                      "enum": [
                                        "anchorSegment"
                                      ]
                                    }
                                  }
                                }
                                

                                Anchor Segment

                                {
                                  "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                  "title": "anchorSegment",
                                  "type": "object",
                                  "extends": {
                                    "$ref": "enrichable.json"
                                  },
                                  "properties": {
                                    "id": {
                                      "description": "Globally unique identifier for this segment",
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "offset": {
                                      "description": "Beginning character offset of the segment",
                                      "type": "integer"
                                    },
                                    "length": {
                                      "description": "Character length of the segment",
                                      "type": "integer"
                                    },
                                    "anchor": {
                                      "$ref": "anchor.json"
                                    }
                                  }
                                }

                                Anchor

                                {
                                  "$schema": "http://json-schema.org/draft-04/hyper-schema#",
                                  "title": "anchor",
                                  "type": "object",
                                  "description": "",
                                  "properties": {
                                    "offset": {
                                      "description": "Beginning character offset of the anchor text",
                                      "type": "integer"
                                    },
                                    "length": {
                                      "description": "Character length of the anchor text",
                                      "type": "integer"
                                    },
                                    "text": {
                                      "description": "Contents of the anchor, if contractually permitted",
                                      "type": "string"
                                    }
                                  }
                                }