From fcae37b779da713ca84298a0aa2b8115387afb86 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Thu, 21 Jan 2016 17:29:06 -0800 Subject: [PATCH] experimenting with algolia search --- Gemfile | 8 +- Gemfile.lock | 102 +-- _config.yml | 8 +- _data/mydoc/mydoc_topnav.yml | 16 +- _includes/search.html | 38 ++ _includes/topnav.html | 36 +- _layouts/default.html | 2 +- _layouts/endpoint.html | 49 ++ _layouts/page_search.html | 18 + configs/mydoc/config_designers.yml | 36 ++ css/customstyles.css | 22 + mydoc/mydoc_myendpoint.md | 976 +++++++++++++++++++++++++++++ mydoc/mydoc_title_checker.md | 2 +- mydoc/search.html | 6 + mydoc_3_multibuild_web.sh | 8 +- search.json | 43 +- 16 files changed, 1247 insertions(+), 123 deletions(-) create mode 100644 _includes/search.html create mode 100644 _layouts/endpoint.html create mode 100644 _layouts/page_search.html create mode 100644 mydoc/mydoc_myendpoint.md create mode 100644 mydoc/search.html diff --git a/Gemfile b/Gemfile index 3a1ebf3..e6a4155 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,8 @@ source 'https://rubygems.org' -gem 'github-pages' \ No newline at end of file +#gem 'github-pages' + +gem 'jekyll', '~> 2.5.3' + +group :jekyll_plugins do + gem 'algoliasearch-jekyll', '~> 0.5.3' +end \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 5818905..b1969cc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,14 +1,16 @@ GEM remote: https://rubygems.org/ specs: - RedCloth (4.2.9) - activesupport (4.2.5) - i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) addressable (2.3.8) + algoliasearch (1.7.0) + httpclient (~> 2.4) + json (>= 1.5.1) + algoliasearch-jekyll (0.5.3) + algoliasearch (~> 1.4) + awesome_print (~> 1.6) + json (~> 1.8) + nokogiri (~> 1.6) + awesome_print (1.6.1) blankslate (2.1.2.4) classifier-reborn (2.0.4) fast-stemmer (~> 1.0) @@ -17,41 +19,13 @@ GEM execjs coffee-script-source (1.10.0) colorator (0.1) - ethon (0.8.0) - ffi (>= 1.3.0) execjs (2.6.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) fast-stemmer (1.0.2) ffi (1.9.10) - gemoji (2.1.0) - github-pages (39) - RedCloth (= 4.2.9) - github-pages-health-check (~> 0.2) - jekyll (= 2.4.0) - jekyll-coffeescript (= 1.0.1) - jekyll-feed (= 0.3.1) - jekyll-mentions (= 0.2.1) - jekyll-redirect-from (= 0.8.0) - jekyll-sass-converter (= 1.3.0) - jekyll-sitemap (= 0.8.1) - jemoji (= 0.5.0) - kramdown (= 1.5.0) - liquid (= 2.6.2) - maruku (= 0.7.0) - mercenary (~> 0.3) - pygments.rb (= 0.6.3) - rdiscount (= 2.1.7) - redcarpet (= 3.3.2) - terminal-table (~> 1.4) - github-pages-health-check (0.5.3) - addressable (~> 2.3) - net-dns (~> 0.8) - public_suffix (~> 1.4) - typhoeus (~> 0.7) - html-pipeline (1.9.0) - activesupport (>= 2) - nokogiri (~> 1.4) - i18n (0.7.0) - jekyll (2.4.0) + httpclient (2.7.1) + jekyll (2.5.3) classifier-reborn (~> 2.0) colorator (~> 0.1) jekyll-coffeescript (~> 1.0) @@ -68,65 +42,51 @@ GEM toml (~> 0.1.0) jekyll-coffeescript (1.0.1) coffee-script (~> 2.2) - jekyll-feed (0.3.1) - jekyll-gist (1.3.5) - jekyll-mentions (0.2.1) - html-pipeline (~> 1.9.0) - jekyll (~> 2.0) + jekyll-gist (1.4.0) + octokit (~> 4.2) jekyll-paginate (1.1.0) - jekyll-redirect-from (0.8.0) - jekyll (>= 2.0) - jekyll-sass-converter (1.3.0) - sass (~> 3.2) - jekyll-sitemap (0.8.1) + jekyll-sass-converter (1.4.0) + sass (~> 3.4) jekyll-watch (1.3.0) listen (~> 3.0) - jemoji (0.5.0) - gemoji (~> 2.0) - html-pipeline (~> 1.9) - jekyll (>= 2.0) json (1.8.3) - kramdown (1.5.0) - liquid (2.6.2) + kramdown (1.9.0) + liquid (2.6.3) listen (3.0.5) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) - maruku (0.7.0) mercenary (0.3.5) mini_portile2 (2.0.0) - minitest (5.8.3) - net-dns (0.8.0) - nokogiri (1.6.7) + multipart-post (2.0.0) + nokogiri (1.6.7.1) mini_portile2 (~> 2.0.0.rc2) + octokit (4.2.0) + sawyer (~> 0.6.0, >= 0.5.3) parslet (1.5.0) blankslate (~> 2.0) posix-spawn (0.3.11) - public_suffix (1.5.2) pygments.rb (0.6.3) posix-spawn (~> 0.3.6) yajl-ruby (~> 1.2.0) - rb-fsevent (0.9.6) + rb-fsevent (0.9.7) rb-inotify (0.9.5) ffi (>= 0.5.0) - rdiscount (2.1.7) - redcarpet (3.3.2) + redcarpet (3.3.4) safe_yaml (1.0.4) - sass (3.4.19) - terminal-table (1.5.2) - thread_safe (0.3.5) + sass (3.4.21) + sawyer (0.6.0) + addressable (~> 2.3.5) + faraday (~> 0.8, < 0.10) toml (0.1.2) parslet (~> 1.5.0) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.2) - thread_safe (~> 0.1) yajl-ruby (1.2.1) PLATFORMS ruby DEPENDENCIES - github-pages + algoliasearch-jekyll (~> 0.5.3) + jekyll (~> 2.5.3) BUNDLED WITH 1.10.6 diff --git a/_config.yml b/_config.yml index 71f8053..4a3aeb0 100644 --- a/_config.yml +++ b/_config.yml @@ -1,5 +1,3 @@ -# This is duplicated here from configs/mydoc/config_designers.yml so that Github Pages can read it. Github Pages requires this file for the build process. It can't read a configuration file stored in another location. - # project definitions project: mydoc_designers audience: designers @@ -23,6 +21,12 @@ sidebar_version: Version 4.0 theme_file: theme-blue.css pdf_file_name: mydoc_designers_pdf.pdf +gems: + - algoliasearch-jekyll + +algolia: + application_id: 'HXUBJERYYB' + index_name: 'documentation_theme_jekyll_designers' port: 4009 exclude: diff --git a/_data/mydoc/mydoc_topnav.yml b/_data/mydoc/mydoc_topnav.yml index fa785cd..bf158c7 100644 --- a/_data/mydoc/mydoc_topnav.yml +++ b/_data/mydoc/mydoc_topnav.yml @@ -3,6 +3,14 @@ topnav: - title: Topnav subcategories: + - title: Search + url: /mydoc/search.html + audience: writers, designers + platform: all + product: all + version: all + output: web + - title: Github Repo external_url: https://github.com/tomjohnson1492/documentation-theme-jekyll audience: writers, designers @@ -22,14 +30,6 @@ topnav_dropdowns: version: all output: web items: - - title: test - url: /mydoc/mydoc_princexml_setup - audience: writers, designers - platform: all - product: all - version: all - output: web - - title: Jekyll Talk external_url: https://talk.jekyllrb.com audience: writers, designers diff --git a/_includes/search.html b/_includes/search.html new file mode 100644 index 0000000..aef125b --- /dev/null +++ b/_includes/search.html @@ -0,0 +1,38 @@ + +
+ +
+ + + + diff --git a/_includes/topnav.html b/_includes/topnav.html index d828d7f..fea6901 100644 --- a/_includes/topnav.html +++ b/_includes/topnav.html @@ -24,9 +24,9 @@ {% if subcategory.external_url %}
  • {{subcategory.title}}
  • {% elsif page.url == subcategory.url %} -
  • {{subcategory.title}}
  • +
  • {{subcategory.title}}
  • {% else %} -
  • {{subcategory.title}}
  • +
  • {{subcategory.title}}
  • {% endif %} {% endif %} {% endfor %} @@ -73,22 +73,22 @@
  • -
    - -
      -
      - - + + + + + + + + + + + + + + + +
    • {% comment %} diff --git a/_layouts/default.html b/_layouts/default.html index 984d231..91eacdb 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -41,7 +41,7 @@
      - + {% include search.html %} {{content}}
      diff --git a/_layouts/endpoint.html b/_layouts/endpoint.html new file mode 100644 index 0000000..4a836ee --- /dev/null +++ b/_layouts/endpoint.html @@ -0,0 +1,49 @@ +--- +layout: default +--- + +
      +

      {% if page.homepage == true %} {{site.homepage_title}} {% else %}{{ page.title }}{% endif %}

      +
      + +
      + + {% if page.summary %} +
      {{page.summary}}
      + {% endif %} +{% include toc.html %} + + {% if site.github_editme_path %} + + Edit me + {% endif %} +

      sample link

      +samplelink: {{page.samplelink}} + samplelinktoo: {{page.samplelinktoo}} +

      Endpoint

      +{{page.paths.service/matchdevice.post.summary}} + +

      hmac

      +{{page.securityDefinitions.hmac.type}} + + {{content}} + +
      + {% if page.tags != null %} + Tags: + {% include custom/conditions.html %} + {% for tag in page.tags %} + {% if projectTags contains tag %} + {{page.tagName}}{{tag}} + {% endif %} + {% endfor %} + {% endif %} +
      + +{% include disqus.html %} + +
      + +{{hr_shaded}} + +{% include footer.html %} \ No newline at end of file diff --git a/_layouts/page_search.html b/_layouts/page_search.html new file mode 100644 index 0000000..9d3ecb9 --- /dev/null +++ b/_layouts/page_search.html @@ -0,0 +1,18 @@ +--- +layout: default +--- + +
      +

      {{ page.title }}

      +
      + +
      + +{% include search.html %} + + +
      + +{{hr_shaded}} + +{% include footer.html %} \ No newline at end of file diff --git a/configs/mydoc/config_designers.yml b/configs/mydoc/config_designers.yml index a9452b6..158bf5b 100644 --- a/configs/mydoc/config_designers.yml +++ b/configs/mydoc/config_designers.yml @@ -21,6 +21,42 @@ sidebar_version: Version 4.0 theme_file: theme-blue.css pdf_file_name: mydoc_designers_pdf.pdf +# algolia settings +gems: + - algoliasearch-jekyll + +algolia: + application_id: 'HXUBJERYYB' + index_name: 'documentation_theme_jekyll_designers' + search_only_api_key: '82f9e5197317a79bdec5f45ec91bf4e7' + record_css_selector: 'p,ul' + excluded_files: + - _data + - _drafts + - _includes + - _layouts + - _tooltips + - css + - fonts + - js + - licenses + - mydoc/images + - _site + - _drafts + - configs/ + - doc/mydoc_writers* + settings: + attributesToIndex: + - title + - h1 + - h2 + - h3 + - h4 + - h5 + - h6 + - summary + - body + port: 4009 exclude: diff --git a/css/customstyles.css b/css/customstyles.css index fab8a8b..2f995ec 100644 --- a/css/customstyles.css +++ b/css/customstyles.css @@ -936,3 +936,25 @@ a.no_icon:after { content:"" !important; padding-left: 0; } + +.btn-default { + margin-bottom: 10px; +} + +/* algolia search */ + +.search { + text-align: left; +} +.search input { + font-size: 20px; + width: 300px; +} +.results { + margin: auto; + text-align: left; +} +.results ul { + list-style-type: none; + padding: 0; +} \ No newline at end of file diff --git a/mydoc/mydoc_myendpoint.md b/mydoc/mydoc_myendpoint.md new file mode 100644 index 0000000..e2ecdb3 --- /dev/null +++ b/mydoc/mydoc_myendpoint.md @@ -0,0 +1,976 @@ +--- +layout: endpoint +--- +swagger: '2.0' +info: + title: Resolve API + version: 1.3.0 + # contact: + # name: Experian Resolve Team — Documentation + # email: ditechcomm@the41st.com + description: > + Resolve groups together different identifiers (for example, a cookie, DeviceInsight ID, email, and IP address) under the umbrella of a single "device profile." Before submitting requests, you must configure Resolve with the identifiers and rules you want. The server has already been pre-configured with the following identifiers and rules. + + + +
      +
      + +
      + +

      Identifiers Allowed

      + +

      Based on this configuration, Resolve will accept any of the following identifiers in requests.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Identifier CodesData TypeComparison Method
      cookieAlphastringEXACT MATCH
      cookieBetastringEXACT MATCH
      email+userAgentstringEXACT MATCH
      diidIsolatedstringEXACT MATCH
      diidUniversalstringEXACT MATCH
      ipv4stringEXACT MATCH
      emailstringEXACT MATCH
      userAgentstringEXACT MATCH
      jscstring
      httpHeadersstring
      + +

      Matchdevice Rules

      + +

      Here are the rules the Resolve API server is configured to process. Note that only the first 5 identifiers are configured in rules.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      RulesPriorityHits per dayTime
      cookieAlpha1
      cookieBeta2
      email+userAgent3
      diidIsolated4
      diidUniversal5
      + +

      Group Rules

      + +

      Resolve will create group IDs when the following are submitted in requests.

      + + + + + + + + + + + + + + + + + + + +
      Group typeIdentifier
      Multiscreeningemail
      Householdingipv4
      + +

      Authorization Information

      + +

      A button next to the Authorization parameter in each endpoint section helps you generate this value. Authorization headers expire after 5 minutes.

      + + + + + + + + + + + + + + + + + + +
      CodesDescription
      client ID 95128
      secretresolve41
      + +
      +
      +
      +host: 52.5.74.221 + +securityDefinitions: + hmac: + type: "apiKey" + in: "header" + name: "Authorization" + + +samplelink: '{{site.data.mydoc.mydoc_urls.mydoc_getting_started.link}}' +samplelinktoo: hello +security: + - + hmac: [] +schemes: +- http +consumes: +- application/json +produces: +- application/json +paths: + service/matchdevice: + post: + summary: Matchdevice Endpoint + description: Looks to find a match for the inbound dentification data to a device profile using device matching rules. If there is a match, the matched profile gets returned. Otherwise a new profile is created. + operationId: matchDevice + tags: matchdevice + security: + - hmac: [] + parameters: + - name: Authorization + in: header + description: The message in the HMAC authorization header is the request epoch time plus the current epoch time. + required: true + type: string + + - name: body + in: body + description: Contains the identifiers you want to submit to Resolve to look for matches. + required: true + schema: + "$ref": "#/definitions/matchdevice object" + tags: + - matchdevice + responses: + 200: + description: Matches the identifiers in the request with identifiers in existing profiles. If there is a match, the matched profile gets returned. If there is no match, a new profile is created. The following response shows the response returned when verbose is set to `true`. + schema: + $ref: "#/definitions/Matchdevice Response" + examples: + application/json: |- + { + "id": "5c455eaf-01cd-4f80-8276-e4e4723fd37c", + "ld": { + "diidIsolated": "E77747204A6B883210A2CEFD6AAC74A9AD70EE0A", + "ipv4": "194.66.82.11", + "diidUniversal": "E77747204A6B883210A2CEFD6AAC74A9AD70EE0A", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36", + "cookieAlpha": "xyz", + "email": "jdoe@gmail.com", + "cookieBeta": "abc" + }, + "pr": { + "DNT": { + "cv": "FALSE", + "au": { + "1449708": "FALSE" + } + } + } + } + + + ":1117/idtranslation/group/{type}": + post: + summary: Idtranslation Group Endpoint + description: Returns details about profiles that contain a specific identifier. + operationId: group request + tags: + - idtranslation + security: + - hmac: [] + parameters: + - name: Authorization + in: header + description: The message in the HMAC authorization header must contain all the identifier values arranged adjacent to each other in the same order as they appear in the request. + + required: true + type: string + + - name: type + in: path + description: Determines the type of grouping (multiscreening or householding) you are interested in. If it's an IP address, use `HH`. If it's any other type of identifier, use `MS`. + required: true + type: string + + - name: body + in: body + description: The Idtranslation Group request body parameters, as shown in the Model Schema to the right. Click Model to see descriptions of each parameter. + required: true + schema: + "$ref": "#/definitions/group object" + responses: + 200: + description: |- + In this sample response, because `verbose` is set to `true`, the identifer history (`ih`) is included. Additionally, the `outputidentifiers` parameter is set to `email`, so `email` is the only identifier listed in the last ID array (`ld`) and identifier history (`ih`). + schema: + $ref: "#/definitions/Group Response" + examples: + application/json: |- + + { + "groupDetails": { + "email": { + "jdoe@gmail.com": [ + { + "dp": { + "id": "e019805b-636e-4712-af61-95d878100768", + "ld": { + "email": "jdoe@gmail.com" + }, + "ih": { + "email": { + "cd": "email", + "it": "FIRSTPARTYID", + "sz": 1, + "ls": { + "jdoe@gmail.com": { + "vl": "jdoe@gmail.com", + "hc": 1, + "fs": 1449865, + "ls": 1449865 + } + } + } + }, + "pr": { + "DNT": { + "cv": "FALSE", + "au": { + "1449865": "FALSE" + } + } + } + }, + "lgid": "9115367e-b718-4907-be83-fdb00b220d84" + }, + { + "dp": { + "id": "5c455eaf-01cd-4f80-8276-e4e4723fd37c", + "ld": { + "email": "jdoe@gmail.com" + }, + "ih": { + "email": { + "cd": "email", + "it": "FIRSTPARTYID", + "sz": 1, + "ls": { + "jdoe@gmail.com": { + "vl": "jdoe@gmail.com", + "hc": 10, + "fs": 1449708, + "ls": 1449869 + } + } + } + }, + "pr": { + "DNT": { + "cv": "FALSE", + "au": { + "1449710": "FALSE", + "1449869": "FALSE" + } + } + } + }, + "lgid": "9115367e-b718-4907-be83-fdb00b220d84" + } + ] + } + } + } + + 400: + description: Bad request + 401: + description: Unauthorized + 404: + description: Not found + 402: + description: Unprocessable entity + 500: + description: Internal server error + + ":1117/idtranslation/devices/{groupid}/client/{client}": + get: + summary: Idtranslation Devices Endpoint + description: Returns all profiles that contain a specific group ID. + operationId: devices request + tags: + - idtranslation + security: + - hmac: [] + parameters: + + - name: Authorization + in: header + description: The message for this endpoint must contain the group ID + current epoch time. + required: true + type: string + + - name: groupid + in: path + description: The group ID that is used to look up the profile IDs. + required: true + type: string + + - name: client + in: path + description: The client code. + required: true + type: string + + - name: filter + in: query + description: "Allowed values are `LD` or `ALL`. `LD` (the default value) stands for last ID array. `LD` Filters the response to include only the identifiers in the profile's last ID array (the most recently seen identifier values of each identifier type). `ALL` includes the profile ID, the identifiers in the last ID array, and the identifiers in the identifier history (`ih`)." + required: false + type: string + + - name: code + in: query + description: Limits the response to include only the identifier code specified. Only one identifier code is allowed. + required: false + type: string + + responses: + 200: + description: |- + In this sample response, the `filter` parameter is set to `LD` so that only the last ID array is included (not the full identifier history). Additionally, the `code` parameter is left blank so that all identifiers are included in the response, not just a specific identifier. + schema: + $ref: "#/definitions/Devices Response" + examples: + application/json: |- + { + "devices": { + "5c455eaf-01cd-4f80-8276-e4e4723fd37c": { + "ld": { + "diidIsolated": "E77747204A6B883210A2CEFD6AAC74A9AD70EE0A", + "ipv4": "194.66.82.11", + "diidUniversal": "E77747204A6B883210A2CEFD6AAC74A9AD70EE0A", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36", + "cookieAlpha": "xyz", + "email": "jdoe@gmail.com", + "cookieBeta": "abc" + } + }, + "e019805b-636e-4712-af61-95d878100768": { + "ld": { + "cookieAlpha": "2349zz", + "email": "jdoe@gmail.com" + } + } + } + } + 400: + description: Bad request + 401: + description: Unauthorized + 404: + description: Not found + 402: + description: Unprocessable entity + 500: + description: Internal server error + + ":1117/idtranslation/identifiers/{deviceid}/client/{client}": + get: + summary: Idtranslation Identifiers Endpoint + description: Returns all identifiers for a specific profile. Profiles contain all the identifiers that have been matched to that profile based on the rules configured in the ID service. This endpoint provides a way to list all the identifiers for a specific profile. + + tags: + - idtranslation + security: + - hmac: [] + parameters: + + - name: Authorization + in: header + description: The message attributes for the idtranslation/group endpoint must contain the profile ID + current epoch time. + required: true + type: string + + - name: deviceid + in: path + description: The profile ID that is used to look up the group ID. + required: true + type: string + + - name: client + in: path + description: The client code. Although you include this in the Authorization header already, it is still needed by this endpoint. + required: true + type: string + + - name: filter + in: query + description: The only allowed value here is `ld`, which stands for last ID array. This option filters the response to include only the identifiers in the profile's last ID array (the most recently seen identifier values of each identifier type). Without this filter, you will see all identifiers associated with a profile. + required: false + type: string + + - name: code + in: query + description: Limits the response to include only the identifier code specified. The identifier code is the Code value specified in the identifier configuration in the ID service. For example, if the identifier key-value pair is `cookieAlpha`: `123456789`, the identifier code is just `cookieAlpha`. Comma-separated values aren't allowed, so you can have just one identifier here. + required: false + type: string + responses: + 200: + description: |- + In this sample response, the `filter` parameter is set to `ld` so that only the values in the last ID array are included. No `code` parameter was specified, so all identifiers are included. + schema: + $ref: "#/definitions/Identifiers Response" + examples: + application/json: |- + { + "ld": { + "diidIsolated": "E77747204A6B883210A2CEFD6AAC74A9AD70EE0A", + "ipv4": "194.66.82.11", + "diidUniversal": "E77747204A6B883210A2CEFD6AAC74A9AD70EE0A", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36", + "cookieAlpha": "xyz", + "email": "jdoe@gmail.com", + "cookieBeta": "abc" + } + } + 400: + description: Bad request + 401: + description: Unauthorized + 404: + description: Not found + 402: + description: Unprocessable entity + 500: + description: Internal server error + + ":1117/idtranslation/groupdetails/{deviceid}/client/{client}": + get: + summary: Idtranslation Groupdetails Endpoint + description: Returns group details (group ID, group history, and other profiles that also contain the group ID) for a specific profile. + operationId: groupdetails request + tags: + - idtranslation + security: + - hmac: [] + parameters: + + - name: Authorization + in: header + description: The message in the HMAC authorization header must include profile ID + current epoch time. + required: true + type: string + + - name: deviceid + in: path + description: The profile ID that is used to look up the group details. + required: true + type: string + + - name: client + in: path + description: The client code. + required: true + type: string + + - name: grouptype + in: query + description: "Allowed values are `HH` or `MS`. `HH` stands for householding, `MS` for multiscreening. To get the group IDs related to householding rules, use `HH`. To get the group IDs related to multiscreening rules, use `MS`." + required: false + type: string + + - name: filter + in: query + description: "The only allowed value is `lgid`, which stands for last group ID. This option filters the response to include only the last group ID. Without this filter, you will see all the group IDs associated with a profile. Having multiple group IDs is more common with householding scenarios." + required: false + type: string + + - name: includeotherdevices + in: query + description: "Allowed values are `true` or `false`. When you submit a profile ID in your request, the response returns the group ID for the profile. If you want the response to return a list of other profiles that also contain the group ID, set the includeotherdevices parameter to true. The other profiles that contain the group ID will be listed in a devices object in the response." + required: false + type: string + + responses: + 200: + description: |- + In this sample response, the `grouptype` is `MS` because it's a multiscreening group. The `filter` parameter is left blank, so all group IDs associated with the profile are shown (not just the last group ID). The `includeotherdevices` parameter is set to `true`. This means any other profiles that also contain the group ID are included in the response, not just the profile ID submitted in the request. + schema: + $ref: "#/definitions/GroupDetails Response" + examples: + application/json: |- + { + "gids": { + "MS": { + "lgid": "9115367e-b718-4907-be83-fdb00b220d84", + "devices": [ + "9a6a51b0-e828-4f6d-aed3-d90c5fc0d632", + "e019805b-636e-4712-af61-95d878100768" + ] + } + } + } + 400: + description: Bad request + 401: + description: Unauthorized + 404: + description: Not found + 402: + description: Unprocessable entity + 500: + description: Internal server error + + +definitions: + + matchdevice object: + type: object + required: + - time + - inputIds + - clientId + properties: + inputIds: + type: object + description: The identifiers for the device. Can be any identifier type from the list of identifiers set up in Mission Control. + "$ref": "#/definitions/inputIds object" + time: + description: The time the web request was submitted. Must be within 5 minutes of the real Epoch time in the Authorization header. The format must be in Epoch time in seconds (10 digits) + type: string + example: "1444670381" + + verbose: + description: The amount of detail to include in the REST response. Options are `true`, `false`, or `testing`. This is a string, not a Boolean + type: string + example: "true" + + clientId: + description: The client ID, which is used to define the table in the database where the profiles are stored + type: string + example: "95128" + + + httpHeaders: + type: object + description: The HTTP headers for the web request. If present, these values are included in the algorithm to create a DeviceInsight ID. You can include as many headers as you want; the example just shows four header properties. + "$ref": "#/definitions/httpHeaders object" + + privacy: + type: array + description: The privacy object contains an array that contains an object with two key-value pairs: `privacyType` and `value` + items: + "$ref": "#/definitions/privacy object" + + inputIds object: #matchdevice object + type: object + properties: + cookieAlpha: + type: string + example: xyz + description: The identifier Code and value. + cookieBeta: + type: string + example: abc + description: The identifier Code and value. + jsc: + type: string + example: "0a44j1cclY5BNvcKyAdMUDFBpBeA0fUm7qKFz0Xnj3wMvsD7z5meTuCUMz_WMXkfoBUs_43wuZPup_nH2t05oaYAhrcpMxE6DBUr5xj6KktELraceYLOHypZHgfLMC7AeLd7FmrpwoNN5uQ4s5uQ3Q9cAxw63QuyPB94UXuGlfUm7qKFz0Xnj3wMvsD7z5meTuCUMz_WMXkfoBUs_43wuZPup_nH2t05oaYAhrcpMxE6DBUr5xj6KktELraceYLOHypZHgfLMC7Awvw0BpRMPSB6MeQhVARgCa3hb95n2qjftckuyPBDjaY2ftckkCoq1HACVcHaHKGNI.95y2fR0odm_dhrxbuJjkWxv5iJ7LDoA4manN_n_nHDuXr2pN1dVdIV6970rTdyJny3rjNpp0iJ7LDg8fg9HBQLz4mvmfTT9oaSumKkpjlRiwerbXh8bUtILzQW6TjJvDOhhMETcouU.UyMDMC9mKlCjtxTdqRnQPiTxGdotzwZJRMQEjiCEkNzLvRSz_vjPSnur9mt.yzYEzpJckQPiIhgjeHNDSw6bzSwezcmoz5Rz4NhzelQttyUshugcCdDvurOaiy2UnpXM3IvIIE0HlByrkFJEnYbQhrb_GGEOpBSGpUPSbB5qfXlAmjJvDOhhM4XM0oGN_tvfvCSnBNl_uY5BNnOmqw24thxDvsFTyNpje70xHbupyJjxBPNSuy.91C" + email: + type: string + example: jdoe@gmail.com + ipv4: + type: string + example: 194.66.82.11 + + httpHeaders object: #matchdevice object + type: object + properties: + user-agent: + type: string + example: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36" + accept: + type: string + example: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" + accept-language: + type: string + example: "en-US,en;q=0.8" + accept-encoding: + type: string + example: "gzip,deflate" + + + privacy object: #matchdevice object + type: object + properties: + privacyType: + type: string + example: DNT + description: Available values for privacyType include DNT, IOS, or PC (referring to "Do not Track", Apple, or "Privacy Choice"). The value is case insensitive. + value: + example: false + type: string + description: The values for value depend on the privacyType. For DNT and PC, the values can be true or false (with or without quotes). For IOS, the values can be enabled, disabled, or undefined. + + group object: + type: object + required: + - identifiers + properties: + identifiers: + description: The list of identifiers that you want to use to look up other identifiers. To look up multiple values for the same identifier, use a comma-separated list in the value for values as shown in the example + type: object + "$ref": "#/definitions/group identifiers object" + + noOfDevices: + description: The number of device profiles sent back in the response. The default is all available devices + type: integer + format: int32 + example: 10 + + verbose: + description: Whether the response should include verbose details or not. Setting verbose mode to true includes the last ID array (ld), identifier history (ih), and group IDs (lgid) in the response. The identifier history includes all the previous identifier values included in the profile. The default value is false. + type: boolean + example: true + + translation: + description: This option tells the ID service which database tables to look in for the information, speeding up the request. If using an identifier that is defined in a group rule set, use INDEX. If using any other type of identifier, use `GROUP`. Format in full caps. The default is `INDEX`. Use FULL CAPS. + type: string + example: INDEX + + outputIdentifiers: + description: If only certain ID types are required in the response, include the ID codes as comma separated values (for example, `idCode1,idCode2`). Setting the output identifiers allows you to restrict the output to a specific type of identifiers. The value for the output identifiers is the Code name of the identifier that you used when creating the identifier. The default identifiers returned are all identifiers. + type: string + example: "email" + + group identifiers object: #group object + type: array + items: + "$ref": "#/definitions/identifiers list" + + identifiers list: + type: object + properties: + identifier: + type: string + description: The identifier Code (the key in the key-value pair) + example: "email" + values: + type: string + description: The value for the identifier (the value in the key-value pair) + example: "jdoe@gmail.com" + + Matchdevice Response: + type: object + properties: + id: + type: string + description: TAn ID generated from the ID Generation service, representing the consolidated identification data assets for either a specific device or household. + ld: + type: object + description: Last ID array. This is an array that keeps the last seen value for each type of identifier (one entry per identifier type being tracked). As matches are made against the profile, the last ID value for each type is retained in this list. Each entry in the last ID list follows a <key: value> pair format. The key is the Code value for the identifier. The value is the identifier value, that is, the actual ID that was last seen for this identifier. + "$ref": "#/definitions/ld object" + pr: + type: object + description: Privacy preferences for the user. The first item in the privacy object is the privacy type. There are three options: IOS (apple privacy), PC (Android privacy choice), and DNT (do not track). Each of those options can have two sub-items: au (audit) and cv (content value). The system can be configured to store multiple privacy preferences. + "$ref": "#/definitions/pr object" + ld object: + type: object + "$ref": "#/definitions/tracking details object" + + pr object: + type: object + "$ref": "#/definitions/tracking details object" + + + tracking details object: + type: object + description: track + properties: + cv: + type: string + example: cv + description: Content value. The value of the privacy preference. + au: + type: string + example: 888 + description: Audit. The timestamp of when the privacy preference was received. + "$ref": "#/definitions/audit number object" + + audit number object: + type: string + description: last id array + + + Group Response: + type: object + properties: + groupDetails: + type: object + description: description of inputIds + "$ref": "#/definitions/groupDetails object" + + + + groupDetails object: + type: object + description: The groupDetails object lists out each of the identifiers submitted in the request. Each identifier contains an array listing all the values for each identifier. + properties: + identifier: + type: object + "$ref": "#/definitions/groupIdentifier" + + + groupIdentifier: + type: array + description: An identifier in the response. + items: + properties: + dp: + type: object + "$ref": "#/definitions/device profile object" + lgid: + type: string + example: Last group ID. This ID represents the group ID value for a specific group type. The last descriptor means that the ID is the most recently seen group ID (the last one seen) in the profile. + + + device profile object: + type: string + properties: + dp: + type: object + "$ref": "#/definitions/dp object" + + dp object: + type: string + description: Device profile. + properties: + id: + title: id + type: string + description: ID. The device profile ID. + ld: + title: last ID array + type: string + description: Last ID array. This is an array that keeps the last seen value for each type of identifier (one entry per identifier type being tracked). As matches are made against the profile, the last ID value for each type is retained in this list. Each entry in the last ID list follows a <key: value> pair format. The key is the Code value for the identifier. The value is the identifier value, that is, the actual ID that was last seen for this identifier. + ih: + title: identifier history + type: object + description: Identifier history. A history of each ID that has been attached to the profile is kept. It is configurable as to how many IDs are kept for each type. The number of IDs kept will be a balance of space and processing time to manage the ID lists and how they improve overall match rates. Each entry in the list will have the following fields: cd, it, sz, ls. In the case of householding, the ih is a map that contains a list of IP addresses that have been seen on this Id. + + Identifiers Response: + type: object + properties: + ld: + type: object + "$ref": "#/definitions/Response ld object" + ih: + type: object + description: The identifier history for the profile + "$ref": "#/definitions/Response ih object" + + Response ld object: + type: object + properties: + identifier: + type: string + description: Last ID array. This is an array that keeps the last seen value for each type of identifier (one entry per identifier type being tracked). As matches are made against the profile, the last ID value for each type is retained in this list. Each entry in the last ID list follows a <key: value> pair format. The key is the Code value for the identifier. The value is the identifier value, that is, the actual ID that was last seen for this identifier. + + Response ih object: + type: object + properties: + identifier: + type: string + description: Identifier history. A history of each ID that has been attached to the profile is kept. It is configurable as to how many IDs are kept for each type. The number of IDs kept will be a balance of space and processing time to manage the ID lists and how they improve overall match rates. Each entry in the list will have the following fields: cd, it, sz, ls. In the case of householding, the ih is a map that contains a list of IP addresses that have been seen on this Id. + "$ref": "#/definitions/Response identifier object" + + Response identifier object: + type: object + properties: + cd: + type: string + description: Code. The "Code" value for the Identifier Type. + it: + type: string + description: Identifier type. The type of identifier, such as first-party or cookie. + sz: + type: string + description: Size. The number of IDs that are currently in history for this ID. Once this limit is hit, the oldest ID is aged out of the list. + ls: + type: object + description: List. The list of values for this identifier that Resolve is keeping track of. + "$ref": "#/definitions/ls object" + + ls object: + type: object + properties: + ls identifier: + type: object + "$ref": "#/definitions/ls object properties" + + ls object properties: + type: object + properties: + vl: + type: string + description: Value. The actual ID. + hc: + type: string + description: Hit count. The number of of times this identifier was included in a request that was matched to that device profile. Upon creation of the profile, the hit count is set to 1. + fs: + type: string + description: First seen. The timestamp within a request for a device seen for the first time. The time is stored in UTC / Java Epoch format. + ls: + type: string + description: Last seen. The timestamp within a request for a device seen the last time. The time is stored in UTC / Java Epoch format. + + GroupDetails Response: + type: object + properties: + gids: + type: object + description: Group IDs. When you create a group rule, you specify a householding or multiscreening identifier for the ID service to look for. When the householding or multiscreening identifier appears in requests, the ID service creates a group ID based on this identifier. When the ID service assigns the householding or multiscreening identifier to a profile, the group ID gets assigned to the same profile. Group IDs are a way that you establish groups across profiles. + "$ref": "#/definitions/gids object" + + gids object: + type: object + properties: + HH: + type: object + "$ref": "#/definitions/HH object" + MS: + type: object + "$ref": "#/definitions/MS object" + + HH object: + type: object + description: Householding. Refers to householding group rules that you set up in Mission Control. + properties: + lgid: + type: string + description: Last group ID. This ID represents the group ID value for a specific group type. The last descriptor means that the ID is the most recently seen group ID (the last one seen) in the profile. + gidhl: + type: string + description: Group ID history. The most recent group ID is stored in the lgid (last group ID). Each time Resolve receives a request containing a unique value for either an identifier configured in the multiscreening or householding rules, a new group ID gets created. In addition to the last group ID (lgid), the other group IDs are stored in a group ID history (gidhl). If you set the Max Group ID Threshold to 50, it means that 1 group ID can be stored in the lgid, and 49 can be stored in the gidhl. If ID service receives another group ID, it takes the place of the lgid value. The previous lgid value moves down to the gidhl, and the last gidhl gets removed. + + devices: + type: string + description: A list of profile IDs. Usually this key is used inside a list of group IDs that list out all the devices (or profiles) that contain the same group ID. + + MS object: + type: object + description: Multiscreening. Refers to multiscreening group rules that you set up in Mission Control. + properties: + lgid: + type: string + description: Last group ID. This ID represents the group ID value for a specific group type. The last descriptor means that the ID is the most recently seen group ID (the last one seen) in the profile. + gidhl: + type: string + description: Group ID history. The most recent group ID is stored in the lgid (last group ID). Each time Resolve receives a request containing a unique value for either an identifier configured in the multiscreening or householding rules, a new group ID gets created. In addition to the last group ID (lgid), the other group IDs are stored in a group ID history (gidhl). If you set the Max Group ID Threshold to 50, it means that 1 group ID can be stored in the lgid, and 49 can be stored in the gidhl. If ID service receives another group ID, it takes the place of the lgid value. The previous lgid value moves down to the gidhl, and the last gidhl gets removed. + + devices: + type: string + description: A list of profile IDs. Usually this key is used inside a list of group IDs that list out all the devices (or profiles) that contain the same group ID. + + Devices Response: + type: object + description: A list of the profile IDs, formatted as an array. + properties: + deviceids: + "$ref": "#/definitions/deviceids" + + deviceids: + type: array + items: + type: string + +--- + + diff --git a/mydoc/mydoc_title_checker.md b/mydoc/mydoc_title_checker.md index 7468bae..7c71e84 100644 --- a/mydoc/mydoc_title_checker.md +++ b/mydoc/mydoc_title_checker.md @@ -3,7 +3,7 @@ title: Check page title consistency tags: [navigation] keywords: "validation, titles, page titles, inconsistency, errors" last_updated: "November 30, 2015" -summary: "title checker..." +summary: "The title checker page helps ensure that the titles in your pages match the titles in your TOC." --- To make sure your page titles match the sidebar titles, there's a file called "title-checker.html." After your site builds, view this file in your browser. It will tell if you any of your page titles don't match up with your sidebar titles. diff --git a/mydoc/search.html b/mydoc/search.html new file mode 100644 index 0000000..b9efaf2 --- /dev/null +++ b/mydoc/search.html @@ -0,0 +1,6 @@ +--- +title: Search +layout: page_search +search: exclude +--- + diff --git a/mydoc_3_multibuild_web.sh b/mydoc_3_multibuild_web.sh index 0c0321b..6ca03b4 100644 --- a/mydoc_3_multibuild_web.sh +++ b/mydoc_3_multibuild_web.sh @@ -2,13 +2,13 @@ kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') clear echo "Building Mydoc Writers website..." -jekyll build --config configs/doc/config_writers.yml -# jekyll serve --config configs/doc/config_writers.yml +jekyll build --config configs/mydoc/config_writers.yml +# jekyll serve --config configs/mydoc/config_writers.yml echo "done" echo "Building Mydoc Designers websote..." -jekyll build --config configs/doc/config_designers.yml -# jekyll serve --config configs/doc/config_designers.yml +jekyll build --config configs/mydoc/config_designers.yml +# jekyll serve --config configs/mydoc/config_designers.yml echo "done" echo "All finished building all the web outputs!!!" diff --git a/search.json b/search.json index c2e59f8..3289d9b 100644 --- a/search.json +++ b/search.json @@ -4,23 +4,32 @@ layout: none search: exclude --- -[ -{% for page in site.pages %} -{% unless page.search == "exclude" %} +//[ +//{% for page in site.pages %} +//{% unless page.search == "exclude" %} +//{ +//"title": "{{ page.title | escape }}", +//"tags": "{{ page.tags }}", +//"keywords": "{{page.keywords}}", +//"url": "{{ page.url | prepend: '..' }}", +//"summary": "{{page.summary}}" +//}, +//{% endunless %} +// +//{% endfor %} +//null +//] + { -"title": "{{ page.title | escape }}", -"tags": "{{ page.tags }}", -"keywords": "{{page.keywords}}", -"url": "{{ page.url | prepend: '..' }}", -"summary": "{{page.summary}}" -}, +{% for post in site.pages %} +{% unless page.search == "exclude" %} +"{{ post.url | slugify }}": { +"title": "{{ post.title | xml_escape }}", +"url": " {{ post.url | xml_escape | prepend: '..'}}", +"summary": {{post.summary}}, +"tags": "{{ post.tags | xml_escape }}" +} {% endunless %} - +{% unless forloop.last %},{% endunless %} {% endfor %} -null -] - -{% comment %} Removed: - -"body": "{{ page.content | strip| strip_html | strip_newlines | replace: '\', '\\\\' | replace: '"', '\\"' | replace: '^t', ' '}}" -{% endcomment %} +} \ No newline at end of file